OpenCV
文章平均质量分 71
-_Matrix_-
尊重知识,尊重价值。
展开
-
OpenCV动态人物识别代码
【代码】OpenCV动态人物识别代码。原创 2023-06-19 20:41:27 · 577 阅读 · 0 评论 -
监督学习和无监督学习
cv::ml::KNearest:K最近邻(K-Nearest Neighbors)是一种基于实例的学习方法,它通过计算输入样本与训练样本之间的距离来进行分类。cv::ml::RTrees类是随机森林的实现,它支持二叉和多叉决策树,提供了参数用于控制森林的大小和生长。cv::ml::Boost类实现了Boosting算法,支持二分类和多分类任务,并提供了参数用于控制弱分类器的数量和类型。cv::ml::DTrees:决策树(Decision Trees)是一种常见的机器学习算法,用于分类和回归问题。原创 2023-06-18 12:30:56 · 10636 阅读 · 2 评论 -
图像水平投影和垂直投影,图像分割
【代码】图像水平投影和垂直投影,图像分割。原创 2023-06-18 12:26:57 · 762 阅读 · 3 评论 -
OpenCV Mat类
Mat类提供了许多方法和操作符,用于访问和处理图像的像素值和矩阵的元素。OpenCV是一个广泛使用的计算机视觉库,它提供了许多用于图像处理和计算机视觉任务的函数和工具。OpenCV的Mat类还提供了许多其他方法和操作,可以对图像和矩阵进行各种处理和分析。类的模板化版本,提供了更高的类型安全性,并在编译时确定了矩阵的大小和数据类型。类是OpenCV中通用的矩阵和图像数据结构,可以存储不同维度、通道数和数据类型的数据。类是OpenCV中通用的矩阵和图像数据结构,可以适用于各种维度、通道数和数据类型的数据。原创 2023-06-17 08:58:39 · 2467 阅读 · 0 评论 -
特征点Features2D类介绍
以下是OpenCV中继承自: Adaptive and Generic Accelerated Segment Test (AGAST) 特征检测器。cv::AKAZE: Accelerated-KAZE (AKAZE) 特征检测器和描述子提取器。cv::BRISK: Binary Robust Invariant Scalable Keypoints (BRISK) 特征检测器和描述子提取器。: FAST 特征检测器。: Good Features to Track (GFTT) 特征检测器。原创 2023-06-17 08:55:49 · 1980 阅读 · 0 评论 -
计算图片中像素梯度值的几种方式
它分别对图片进行水平和垂直方向的卷积操作,然后将两个方向的梯度值合并,得到每个像素的综合梯度值。基本梯度图像是OpenCV中支持的计算形态学梯度的方法,而此方法得到梯度有被称为基本梯度。其中,G_x和G_y分别是水平和垂直方向的梯度值,G是综合梯度值。其中,I是图像像素的值(如:RGB值),(i,j)为像素的坐标。图像膨胀之后再减去原来的图像得到的差值图像,称为图像的外部梯度。用膨胀后的图像减去腐蚀后的图像得到差值图像,称为基本梯度图像。用原图像减去腐蚀之后的图像得到差值图像,称为图像的内部梯度。原创 2023-06-17 08:56:20 · 2001 阅读 · 0 评论 -
InputArray和OutputArray的那些事
如果在你自己编写的函数中形参也想用InputArray,可以传递多类型的参数,在函数的内部可以使用_InputArray::getMat()函数将传入的参数转换为Mat的结构,方便你函数内的操作;看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray型的,这个接口类还是很强大的,今个就来说说它们的那些事。有时候InputArray输入的矩阵是个空参数,你只需要用cv::noArray()作为参数即可,或者很多代码里都用cv::Mat()作为空参。原创 2023-06-17 08:53:38 · 279 阅读 · 0 评论 -
霍夫变换原理
然后,我们计算线段的另一个端点(x2, y2),其中x2和y2分别等于直线在笛卡尔坐标系下的截距(x0, y0)加上一个向量-(-b, a),该向量的长度同样为1000。由于在霍夫空间中,直线的表示形式是(rho, theta),其中rho表示直线到图像中心的距离,theta表示直线与x轴的夹角,因此我们需要将它们转换为笛卡尔坐标系下的表示形式,即直线的两个端点坐标(x1, y1)和(x2, y2)。然后,我们将x1和y1作为直线的起点,将x2和y2作为直线的终点,在图像上绘制一条直线。原创 2023-06-17 08:51:01 · 1068 阅读 · 1 评论 -
图像细化原理
Zhang-Suen 算法原理Zhang-Suen 算法每运行一次, 需要遍历所有的不为0的像素。在对每个像素(P1)进行删除或保留的判断时,我们需要关注其周围的8个邻居像素(P2, P3, P4, P5, P6, P7, P8)的值。其中 P2 到 P8 的顺序是算法规定,用于后面判断。原创 2023-06-17 08:48:10 · 1435 阅读 · 0 评论 -
形态学中的8种操作
该操作通过将核与图像上的每个像素进行卷积,计算核覆盖下的像素的最小值,并将结果写入输出图像中。该操作能够减小图像中的亮度和尺寸,并能够消除小的噪点。实际应用:去除图像中的细小物体,消除图像中的噪点,分割图像中的前景和背景等。该操作通过将核与图像上的每个像素进行卷积,计算核覆盖下的像素的最大值,并将结果写入输出图像中。该操作能够增加图像中的亮度和尺寸,并能够填充小的空洞。实际应用:扩张图像中的前景区域,填充图像中的空洞,连接相邻的物体等。原创 2023-06-17 08:44:58 · 1716 阅读 · 0 评论 -
图像连通域怎么理解
一个图像可以包含多个不同的连通域,每个连通域可以表示为一个独立的对象或区域。在计算机视觉和图像处理中,通过对图像进行连通域分析,可以对图像进行物体检测、目标跟踪、图像分割等操作。图像连通域指的是在一个二值图像中,所有具有相同像素值(通常为黑色或白色)且相邻的像素构成的连通区域。其中,相邻的像素指的是在图像中上下、左右或对角线方向上相邻的像素。3:连通域处理:对于每个连通域,可以计算其位置、大小、形状等特征,以及进行进一步的处理和分析。2:连通域标记:遍历图像中的每个像素,将与其相邻的像素标记为同一连通域。原创 2023-06-17 08:40:11 · 2462 阅读 · 0 评论 -
图像边缘检测原理
图像的边缘指的是图像中像素灰度值突然发生变化的区域,如果将图像的每一行像素和每一列像素都描述成一个关于灰度值的函数,那么图像的边缘对应在灰度值函数中是函数值突然变大的区域。图中我们可以看到,100与90之间相差的灰度值为10,即当前像素点在X轴方向上的梯度为10,而其它点均为90,则求导后发现梯度全为0,因此我们可以发现在数字图像处理,因其像素性质的特殊性,微积分在图像处理表现的形式为计算当前像素点沿偏微分方向的差值,所以实际的应用是不需要用到求导的,只需进行简单的加减运算。3卷积 实现上面一样的功能。原创 2023-06-17 08:36:07 · 2156 阅读 · 0 评论 -
边缘检测卷积核矩阵
其中 Gx 表示水平方向的卷积核,Gy 表示垂直方向的卷积核。其中 Gx 表示水平方向的卷积核,Gy 表示垂直方向的卷积核。DoG 算子是一种基于高斯滤波的边缘检测算法,其卷积核矩阵是两个不同尺度的高斯函数相减得到的。以上是一些常见的边缘检测算子和算法,当然还有其它的算子和方法,可以根据具体情况进行选择和尝试。Laplacian 算子是基于二阶微分的算子,而 Canny 算子是一种综合的边缘检测算法。acian 算子是基于二阶微分的算子,而 Canny 算子是一种综合的边缘检测算法。原创 2023-06-17 08:30:20 · 1453 阅读 · 0 评论 -
OpenCV reshape函数
在opencv中,reshape函数比较有意思,它既可以改变矩阵的通道数,又可以对矩阵元素进行序列化,非常有用的一个函数。从结果看出,不管是变化成行向量还是列向量,opencv都是行序列化,即从左到右,从上到下,与matlab是不一样的。cn: 表示通道数(channels), 如果设为0,则表示保持通道数不变,否则则变为设置的通道数。我们知道,在matlab里面,是列序列化, 即取值为从上到下,从左到右,opencv又是怎么样的呢。第二次变化:通道数不变,将矩阵序列化N行1列的列向量。原创 2023-06-16 20:15:44 · 1907 阅读 · 0 评论 -
OpenCV深度depth的理解
depth:深度,即每一个像素的位数(bits),在opencv的Mat.depth()中得到的是一个 0 – 6 的数字,分别代表不同的位数:enum { CV_8U=0, CV_8S=1, CV_16U=2, CV_16S=3, CV_32S=4, CV_32F=5, CV_64F=6 };因为您需要决定如何转换更大范围的可能值(+/-20亿!图像深度是指存储每个像素所用的位数,也用于量度图像的色彩分辨率.图像深度确定彩色图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数.原创 2023-06-16 20:13:44 · 602 阅读 · 0 评论 -
anchor锚点理解
Point(2,2) 意思就是源图向外扩两个像素。Point(1,1) 意思就是源图向外扩1个像素。Point(0,0) 意思就是源图向外扩0个像素。Point(4,4) 意思就是源图向外扩4个像素。原创 2023-06-16 20:13:10 · 102 阅读 · 0 评论 -
图像处理中常用的卷积核
【代码】图像处理中常用的卷积核。原创 2023-06-16 20:13:24 · 4056 阅读 · 3 评论 -
RGB用小数表示的好处
这些颜色空间使用不同的参数来表示颜色,但可以使用类似的归一化方法将它们映射到0到1之间的范围内,从而使它们更易于比较和转换。更精确的颜色表示:使用小数可以提供更精确的颜色表示,因为小数可以表示更细微的差异。例如,使用整数表示的颜色可能无法表示非常接近的颜色,而使用小数则可以。总的来说,使用小数表示RGB值是一种通用的、易用的、精确的、可读性高的颜色表示方法,具有广泛的应用前景和优势。兼容性:在一些应用程序中,例如CSS和HTML,使用小数表示RGB值是必需的,因为这些应用程序只接受小数值。原创 2023-06-16 20:11:50 · 1551 阅读 · 0 评论 -
OpenCV 笔记_5
文章目录笔记_5特征点匹配DMatch 存放匹配结果DescriptorMatcher::match 特征点描述子(一对一)匹配DescriptorMatcher::knnMatch 特征点描述子(一对多)匹配DescriptorMatcher::radiusMatch 特征点描述子(一对多)特定范围匹配BFMatcher 暴力匹配 -在(特征点Feature2D类介绍)这篇文章中有介绍drawMatches 绘制特征点匹配结果RANSAC 优化特征点算法findHmomograph原创 2023-06-16 19:51:15 · 5413 阅读 · 1 评论 -
OpenCV 笔记_4
文章目录笔记_4图像细化thinning 图像细化函数轮廓检测findContours 轮廓检测函数drawContours 轮廓绘制函数contourArea 计算轮廓面积:返回值 double类型arcLength 计算轮廓长度:返回值 double类型轮廓外接多边形boundingRect 给定轮廓的外接矩形minAreaRect 给定轮廓的最小外接矩形approxPolyDPconvexHull 二维凸包检测函数直线检测HoughLines 霍夫变换 - 找直线 -输出(rho,the原创 2023-06-16 19:31:51 · 2603 阅读 · 0 评论 -
OpenCV 笔记_3
因此为了能够有效的提取出较弱的边缘,需要将像素值间的差距增大,因此引入Scharr算子。Scharr算子是对Sobel算子差异性的增强,因此两者之间的在检测图像边缘的原理和使用方式上相同。可以通过将滤波器中的权重系数放大来增大像素值间的差异,Scharr算子就是采用的这种思想,其在X方向和Y方向的边缘检测算子如(5.19)中所示。此时,在不考虑数据类型的情况下,框滤波函数boxFilter()和均值滤波函数blur()会具有相同的滤波结果。2:而过滤器是是由长、宽和深度指定的,是一个三维的概念。原创 2023-06-16 19:11:45 · 2815 阅读 · 0 评论 -
OpenCV 笔记_2
函数是OpenCV库中用于在图像上绘制带有箭头的直线的函数。它可以在输入图像上绘制带有箭头的直线段。interpolation标志。原创 2023-06-16 18:58:23 · 2559 阅读 · 0 评论 -
OpenCV 笔记_1
OpenCV 默认通道模型是BGR(蓝绿红)原创 2023-06-16 18:33:46 · 2049 阅读 · 0 评论 -
图像锐度评分算法,方差,点锐度法,差分法,梯度法
图像锐度评分是用来描述图像清晰度的一个指标。常见的图像锐度评分算法包括方差法、点锐度法、差分法和梯度法等。方差法:该方法是通过计算图像像素值的方差来评估图像锐度。锐度越高,像素值的变化就越大,方差也就越大。方差法计算简单,但对噪声敏感,需要进行滤波或者预处理。点锐度法:该方法是通过计算图像中每个像素的局部对比度来评估图像锐度。局部对比度越高,图像锐度越高。点锐度法计算简单,但对噪声和细节缺失比较敏感。差分法:该方法是通过计算图像中像素值的差分来评估图像锐度。锐度越高,像素值的变化就越大,差分也就越大。原创 2023-04-21 21:59:04 · 2653 阅读 · 1 评论 -
Qt配置OpenCV教程,亲测已试过(详细版)
win10系统Qt5.12.9配置OpenCV4.5.1库教程 Qt,OpenCV,Cmake详细下载安装教程软件准备首先要说的是装软件还是装最新的好,不用考虑各种软件的版本对应问题,都是最新版的情况下它们互相之间一定是兼容的,下边具体来说下需要的几个软件。 64位win10系统 Qt 5.12.9 Cmake 3.18.0 OpenCV 4.5.1以下叙述顺序即为安装配置顺序QtDownload国原创 2021-01-22 00:43:38 · 123561 阅读 · 229 评论 -
OpenCV_contrib配置教程(详细版)
上栏操作:在上栏界面中的变量中找到“BUILD_opencv_world”和“OPENCV_ENABLE_NONFREE”两个变量,在变量后面的方框中勾选,即打上“√”(含义可自行百度,但没必要)。比如:#cmake_download “D:/OpenCV4.5.1/opencv-4.5.1/.cache/ade/b624b995ec9c439cbc2e9e6ee940d3a2-v0.1.1f.zip” “https://github.com/opencv/ade/archive/v0.1.1f.zip”原创 2023-04-19 19:20:33 · 10726 阅读 · 4 评论 -
Qt MSVC配置OpenCV教程,亲测已试过(详细版)
点开这里的sources文件夹,你会发现里边的文件和上边由opencv-4.5.1.zip解压出来的文件是一样的, 由于我们配置时只需要用到sources文件夹里的东西,所以你下载Sources还是Win pack都是可以的。首先要说的是装软件还是装最新的好,不用考虑各种软件的版本对应问题,都是最新版的情况下它们互相之间一定是兼容的,下边具体来说下需要的几个软件。vc14 适用于VS2015和VS2017,而vc15适用于VS2019,我用的是VS2017所以用vc14路径。以下叙述顺序即为安装配置顺序。原创 2023-03-18 11:02:56 · 5857 阅读 · 5 评论 -
VideoCapture读取视频失败解决方案
VideoCapture().open()返回false解决方案解决方法:将opencv安装目录D:\opencv\build\x64\vc14\bin中的opencv_videoio_ffmpeg451_64.dll复制到生成项目的.exe所在的文件(Debug/Release)中。(因为我用OpenCV版本是4.5.1,所以ffmpeg451)...原创 2021-01-25 21:41:31 · 6482 阅读 · 2 评论