
OpenCV与Qt
文章平均质量分 88
OpenCV and Qt学习笔记
stdcoutzrh
MachineLearning/ComputerVision
展开
-
图像形态学处理操作:膨胀和腐蚀
二值图像分析:图像形态学处理原创 2021-03-07 19:58:55 · 2678 阅读 · 0 评论 -
二值图像分析:霍夫直线检测
二值图像分析:霍夫直线检测1.霍夫变换空间1.1 霍夫变换的基本原理1.2 坐标空间下一条直线->参数空间中的一点1.3 坐标空间下一点->参数空间中的一条直线1.4 霍夫直线检测1.霍夫变换空间1.1 霍夫变换的基本原理图像霍夫(Hough)变换是一种特别有用的图像变换,它的基本思想是将图像的2D平面坐标空间 x-y 变换到参数空间 p-q,经过变换后原来在平面坐标空间难以提取的几何特征信息,比如直线和圆等在参数空间内可以很容易的提取出来。图像中的直线与圆检测就是典型的利用霍夫空间特性实原创 2021-03-06 15:58:41 · 1060 阅读 · 0 评论 -
二值图像分析:轮廓形状逼近与拟合
二值图像分析:轮廓逼近1.二值图像轮廓逼近1.1 轮廓逼近函数1.2 轮廓逼近算法原理分析2.代码实践1.二值图像轮廓逼近1.1 轮廓逼近函数在[二值图像分析:二值图像轮廓提取],通过findContours()函数可以找到二值图像中的轮廓信息。对图像二值图像的每个轮廓,OpenCV提供了一个函数approxPolyDP()来对每个轮廓逼近它的的真实几何形状,从而通过轮廓逼近的输出结果判断一个对象是什么形状,或者得到一些其他信息。OpenCV轮廓逼近的函数原型如下:void cv::approxP原创 2021-03-05 09:15:51 · 5859 阅读 · 2 评论 -
二值图像分析:按面积过滤噪点案例分析
二值图像分析:按面积过滤噪点案例分析1.通过轮廓提取2.通过连通区域1.通过轮廓提取在实际应用中,有时候需要按照噪点的面积来过滤掉一些噪声块,有一种解决办法是,通过轮廓提取来得到每个轮廓的面积,然后根据面积填充这些轮廓:double start = static_cast<double>(getTickCount());//轮廓提取vector<vector<Point>> contours;vector<Vec4i>hierarchy;find原创 2021-03-04 10:31:08 · 1144 阅读 · 1 评论 -
二值图像分析:连通组件寻找算法
二值图像分析:连通组件寻找算法1.连通组件标记算法介绍2.OpenCV中的API1.连通组件标记算法介绍连接组件标记算法(connected component labeling algorithm)是图像分析中最常用的算法之一,算法的实质是扫描二值图像的每个像素点,对于像素值相同的而且相互连通分为相同的组(group),最终得到图像中所有的像素连通组件。扫描的方式可以是从上到下,从左到右。对于一幅有N个像素的图像来说,最大连通组件个数为N/2。扫描是基于每个像素单位的,OpenCV中进行连通组件扫描调原创 2021-02-24 18:12:08 · 1985 阅读 · 0 评论 -
二值图像分析:二值图像轮廓提取
二值图像分析:二值图像轮廓提取与分析OpenCV的轮廓发现API获取二值图像的轮廓拓扑信息,轮廓发现API如下:void cv::findContours( InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset = Point() )其中image表示输入图像,它必须是二值图像,二值图像可以由threshold、Can原创 2021-03-02 15:54:14 · 6958 阅读 · 1 评论 -
二值图像分析:OpenCV中的二值化阈值操作
二值图像分析:OpenCV中的二值化阈值操作1.二值图像的定义2.OpenCV中的基本阈值操作3.OTSU二值寻找算法3.TRIANGLE二值寻找算法4.自适应二值化阈值算法1.二值图像的定义二值图像就是图像中灰度值只有2个的图像,一般就是黑白图像,2个灰度值分别为0(表示黑色)和255(表示白色)。二值图像处理与分析在机器视觉与机器人视觉中非常重要,涉及到非常多的图像处理相关的知识。常见的二值图像分析包括轮廓分析、对象测量、轮廓匹配与识别、形态学处理与分割、各种形状检测与拟合、投影与逻辑操作、轮廓特原创 2021-02-20 17:27:27 · 3946 阅读 · 1 评论 -
OpenCV加载YOLO模型实现目标检测
OpenCV加载YOLOv3-tiny模型实现目标检测YOLOv3-tiny是YOLOv3移动端支持的网络模型版本,是可以在CPU端实时运行的对象检测网络。首先加载网络,如果需要输出各层信息可将bool变量debug设为true值。//load modelNet cnn_net = readcnn_netFromDarkcnn_net(yolo_tiny_cfg, yolo_tiny_mo...原创 2019-03-14 12:02:45 · 5659 阅读 · 1 评论 -
一文上手OpenCV DNN(使用Google inception-5h实现图像分类)
一文上手OpenCV DNN1.DNN模块介绍OpenCV的DNN模块是在OpenCV3.3合并到OpenCV release中的,它最早是在扩展模块中的,它可以导入caffe、tensorflow、pytorch等深度学习框架训练生成的模型文件,从而正向传递实现预测功能。2.加载模型读取网络信息模型可以使用readNet API来加载:Net cv::dnn::readNet(cons...原创 2019-03-12 11:54:28 · 4170 阅读 · 1 评论 -
空间域图像增强:Canny边缘检测算法
OpenCV Canny边缘检测算法1986年,JOHN CANNY 提出一个很好的边缘检测算法,被称为Canny编边缘检测器。Canny边缘检测器是一种经典的图像边缘检测与提取算法,应用广泛,主要是因为Canny边缘检测具备以下特点:有效的噪声抑制,内带高斯模糊,x方向和y方向梯度和用2个阈值代替一个阈值,高低阈值连接更强的完整边缘提取能力Canny算法是如何做到精准的边缘提取的,...原创 2019-09-07 20:33:23 · 1628 阅读 · 0 评论 -
空间域图像增强:图像锐化/增强
OpenCV图像锐化/增强0.综述1.Laplacian高通滤波算子2.代码实践0.综述图像的卷积计算除了可以完成我们前面介绍的模糊去噪、边缘检测等任务外,还可以实现图像锐化/增强的功能。图像锐化是一种突出和加强图像中景物的边缘和轮廓的技术。在图像中,边缘可以看作是位于一阶导数较大的像素位置,因此可以通过求图像的一阶导数来加强图像的边缘。同样我们也可以通过求图像的二阶导数来完成图像锐化。一般...原创 2019-07-10 06:09:47 · 15856 阅读 · 2 评论 -
空间域图像增强:二阶导数图像边缘检测算子-Laplacian算子
OpenCV二阶导数图像边缘检测算子:Laplacian算子0.综述1.Laplacian算子原理分析2.OpenCV中的Laplacian算子API3.代码实践Laplacian算子0.综述前面介绍了Sobel等几种一阶导数图像边缘检测算子,图像通过与这些算子的卷积计算可以提取出图像边缘信息。但是在利用一阶导数的边缘检测算子进行边缘检测时,有时会出现因检测到的边缘点过多而导致边缘(线)过粗的...原创 2019-07-08 18:41:58 · 5579 阅读 · 0 评论 -
空间域图像增强:OpenCV实现更多一阶导数图像边缘检测算子
OpenCV实现更多图像边缘梯度算子0.综述1.Roberts边缘检测算子原理分析2.Prewitt边缘检测算子原理分析3.OpenCV自定义滤波器实现Roberts算子与Prewitt算子0.综述图像的一阶导数算子除了Sobel边缘检测算子以外,常见的还有Roberts边缘检测算子与Prewitt边缘检测算子。尽管OpenCV中没有这两个算子直接调用的API,我们可以通过自定义滤波器来自行创...原创 2019-07-07 20:53:35 · 1072 阅读 · 0 评论 -
空间域图像增强:图像梯度之Sobel边缘检测算子
OpenCV图像梯度之Sobel算子0.综述2.Sobel算子原理分析3.Sobel算子OpenCV API介绍4.Sobel算子代码实践0.综述Sobel算子是提取图像梯度信息的经典算子之一,图像的梯度信息是图像的最原始特征信息,对梯度信息进行进一步的处理就可以生成一些比较高级的特征来表示一张图像,这些高级的特征可以用于基于图像特征的匹配以及图像分类等应用。2.Sobel算子原理分析So...原创 2019-07-05 06:37:15 · 3108 阅读 · 1 评论 -
空间域图像增强:OpenCV中的自定义滤波器
OpenCV中的自定义滤波器0.综述1.相应API介绍2.代码实践自定义滤波器0.综述通过图像的卷积操作,我们可以对图像进行模糊、锐化等处理,以及提取例如边缘等图像梯度特征。除了前面几篇文章里介绍的滤波算子,OpenCV中还可以通过相应的API来自定义卷积操作,也就是设定自定义的卷积算子。下面三个自定义的卷积核就分别可以实现均值模糊、图像锐化和图像梯度的功能:(1)[11111111111...原创 2019-07-04 19:10:01 · 2202 阅读 · 0 评论 -
空间域图像增强:OpenCV快速图像边缘滤波算法
快速图像边缘滤波算法由于前面的高斯双边模糊和mean shift均值模糊计算量都很大,因此无法实时的实现图像边缘保留滤波,这大大限制了它们的使用场景。OpenCV中实现了一种快速的图像边缘保留滤波算法...原创 2019-07-03 09:41:17 · 1143 阅读 · 0 评论 -
空间域图像增强:OpenCV图像积分图算法
OpenCV图像积分图算法直白说法:很快计算一幅图像任意区域像素值的和跟平方和,也就是卷及区域下原创 2019-05-16 16:57:16 · 1387 阅读 · 0 评论 -
空间域图像增强:OpenCV边缘保留滤波算法
OpenCV边缘保留滤波算法0.综述1.高斯双边模糊2.均值迁移模糊3.局部均方差模糊0.综述图像卷积之后图像的边缘信息会丢失,边缘保留滤波算法(EPF)则可以解决这个问题,滤波之后的输出可以完整的保存图像整体边缘的信息。常见的边缘保留滤波算法有:高斯双边模糊均值迁移模糊局部均方差模糊1.高斯双边模糊高斯模糊考虑了图像空间位置对权重的影响,离中心点越近权重越大。void bil...原创 2019-04-29 13:43:33 · 4733 阅读 · 3 评论 -
空间域图像增强:OpenCV中常用的图像卷积(滤波)操作
OpenCV图像卷积/滤波操作0.综述1.图像卷积操作api2.图像均值模糊与高斯模糊3.中值模糊0.综述图像卷积可以看成是一个滑动的窗口在一个比它大的图像上有规则(从左向右,从上往下)地滑动,对每一次窗口覆盖到的图像区域都会进行点乘操作,然后就得到的值作为原图中被窗口覆盖区域的中心像素点的新值。与CNN里的卷积不同,经典的卷积算子(即卷积核)往往是人们根据研究和经验事先设定好的特征提取算子,...原创 2019-04-29 10:00:27 · 2369 阅读 · 0 评论 -
数字图像基本OP:利用OpenCV实现YOLO风格矩形框和标注Label
利用OpenCV实现YOLO风格矩形框和标注Label_011.draw_box()函数的自实现1.1数组方式实现draw_box1.2指针方式实现draw_box1.draw_box()函数的自实现画矩形框实际就是画四条直线,本质就是图像像素访问与操作。所以也有3种方式实现,图像像素访问与操作可以看看本人的这一篇博客记录:[OpenCV访问像素值方法]。注意:如果图片是灰度图,也就是单通道...原创 2019-04-20 13:14:35 · 6753 阅读 · 1 评论 -
数字图像基本OP:OpenCV绘制几何图形和文字总结及ROI提取
OpenCV绘制几何图形和文字总结1.绘制几何图形1.1直线1.2矩形1.3多边形1.4圆形1.5椭圆2.绘制文字1.绘制几何图形OpenCV中可以绘制的几何图形有直线、矩形、多边形、圆、椭圆。1.1直线void line(InputOutputArray img, Point pt1,//直线起点 Point pt2, //直线终点 const Scalar...原创 2019-04-15 14:51:28 · 1783 阅读 · 0 评论 -
数字图像基本OP:OpenCV中的色彩空间转换
05_OpenCV中的色彩空间转换1. 相关API介绍:2.代码实践3.运行结果1. 相关API介绍:CV_EXPORTS_W void cvtColor( InputArray src, OutputArray dst, int code, int dstCn=0 );src是源图像,可以是8位无符号或16位无符号数或单精度浮点数dst是输出图像,与src具有相同大小和深度code...原创 2019-10-12 09:39:55 · 333 阅读 · 0 评论 -
数字图像基本OP:OpenCV图像翻转、Resize、像素值归一化
OpenCV像素值归一化1.L1归一化:NORM_L12.L2归一化:NORM_L23.INF归一化:NORM_INF4.MINMAX归一化:NORM_MINMAX5.完整代码像素值归一化就是要把图片像素值数据经过某种算法限制在需要的一定范围内。归一化可以使没有可比性的数据变得具有可比性,同时保持相比较的数据之间的相对关系。OpenCV提供了四种图片像素归一化的方法:L1归一化 : NOR...原创 2019-04-14 23:15:56 · 6210 阅读 · 0 评论 -
数字图像基本OP:OpenCV图像像素的算术运算和逻辑运算
OpenCV提供了指针方法来访问操作像素值,Mat.ptr<type>(row)返回Mat对象的第row行的头指针,如下图所示:对于单通道图像gary,就像上面的图所示:gray.ptr<uchar>(0)指向第0行首元素。gray.ptr<uchar>(1)指向第1行首元素。gray.ptr<uchar>(1)指向第1行首元素。可以...原创 2019-04-20 12:20:19 · 1909 阅读 · 0 评论 -
数字图像基本OP:OpenCV中的访问与操作像素值方法
OpenCV访问像素值方法1.数组方法遍历访问像素值并取反2.指针方法遍历访问像素值并取反3.迭代器方法遍历访问像素值并取反4.结果记录总结OpenCV中遍历访问像素值的方法。1.数组方法遍历访问像素值并取反 Mat input_image = imread("./whisper.jpg", 1); if (input_image.empty()) { cout << "...原创 2019-04-12 20:30:41 · 6543 阅读 · 0 评论 -
OpenCV中的图像表示详解:Mat与ndarray
Qt Creator中配置OpenCV本机配置:win10 64位+VS2017+Qt5.9.1,其中Qt安装过程不再赘述,安装时选上MSVC2017-64(因为我的电脑是64位的且VS版本为2017)。OpenCV-4.0.1+OpenCV_contrib-4.0.1的编译记录可以看下面这篇文章:OpenCV-4.0.1+OpenCV_contrib-4.0.1+VS2017编译配置记录...原创 2019-04-05 09:08:01 · 2549 阅读 · 0 评论 -
数字图像处理基础与OpenCV中的图片读写
04_OpenCV基本图像操作之图片读写1.相关API介绍2.代码实践3.运行结果1.相关API介绍读取图片:CV_EXPORTS_W Mat imread( const string& filename, int flags=1 );filename 为要读取的图片路径flags默认为1,表示按三通道彩色读入图像,设为0时将原图转成灰度图读入创建窗口:\CV_EXP...原创 2019-10-11 19:59:14 · 477 阅读 · 0 评论 -
OpenCV环境配置:Ubuntu18.04编译OpenCV4.2.0和contrib模块记录
Ubuntu16.04编译OpenCV4.0.1和contrib模块记录sudo aptitude install build-essential sudo aptitude install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo aptitude i...原创 2019-05-26 22:04:33 · 1705 阅读 · 1 评论 -
OpenCV环境配置:OpenCV-4.0.1+OpenCV_contrib-4.0.1+VS2017编译配置记录
OpenCV-4.0.1+OpenCV_contrib-4.0.1+VS2017编译配置记录1.下载opencv源码和contrib模块源码以及CMake。2.将源码压缩包解压后配置cmake。3.使用VS2017进行编译。4.配置VS4.1配置环境变量4.2VS配置1.下载opencv源码和contrib模块源码以及CMake。opencv源码下载contrib模块源码下载CMake下载...原创 2019-04-03 09:24:14 · 9038 阅读 · 4 评论