![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
opencv学习
文章平均质量分 71
小小小~
人工智能爱好者
展开
-
opencv_c++学习(三十)
model:模型文件名称config:配置文件名称framework:框架种类blob:新的输入数据,数据类型为CV_32F或CV_8U。name:输入网络层的名称。scalefactor:可选的标准化比例(尺寸缩放)。mean:可选的减数数值(平移)。原创 2023-05-30 10:36:31 · 930 阅读 · 0 评论 -
opencv_c++学习(二十九)
首先给出一个阈值k,后寻找距离黑色圆点最近的k个元素,占据比例大的元素即为黑色所属的类别。如图所示,即k=3时,黑色圆属于三角形,k=5时圆点属于正方形。trainData:训练时使用的数据,数据为Ptr类型。flags:构建模型方法标志,例如UPDATE_MODEL表示对使用新数据对模型进行更新。samplcs:输入数据矩阵,矩阵数据类型必须是cV_32。results:对输入数据预测结果的输出矩阵。flags:模型方法标志,取决于具体模型。原创 2023-05-29 21:58:17 · 895 阅读 · 0 评论 -
opencv_c++学习(二十八)
如上图所示,根据图像的情况反推相机的运动情况。如实现上述功能则需要拍摄当前物体的图像,然后拍摄一段时间之后物体的图像,然后联合两张图像则可以获取两个时刻的相机位姿关系。objectPoints:前一时刻世界坐标系中的3D点的三维坐标。imagePoints: 3D点在图像中对应的像素点的二维坐标。cameraMatrix:相机的内参矩阵。distCoeffs:相机的畸变系数矩阵。rvec:世界坐标系变换到相机坐标系的旋转向量。tvec:世界坐标系变换到相机坐标系的平移向量。原创 2023-05-29 16:45:31 · 1301 阅读 · 0 评论 -
opencv_c++学习(二十七)
上图为针孔相机成像原理,蓝色坐标中的O即为镜头光心。成像原理与小孔成像相同。单目相机映射关系如下:将上式进行变换,就可以从三位空间映射到2维平面的公式。原创 2023-05-28 17:17:11 · 1876 阅读 · 0 评论 -
opencv_c++学习(二十六)
Step1:选择某个像素点作为中心点P,其像素值为I。Step2:设置判定FAST角点(其方法比较两个像素之间的差值)的像素阈值,例如Tp20%∗IpStep3:比较中心点的像素值与半径为3的圆周上所有像素的像素值进行比较,如果存在连续N个像素的像素值大于(IpTp)或者小于(Ip−Tp),则将中心点设置为FAST角点。Step4:遍历图像中每个像素点,重复上述步骤,计算图像中的FAST角点。nfeatures:检测ORB特征点的数目。原创 2023-05-27 22:22:57 · 1568 阅读 · 0 评论 -
opencv_c++学习(二十五)
1、海瑞斯角点不可能出现在图像平滑的区域(上图1);2、图像边缘的支线出不可能出现海瑞斯角点(上图2);3、海瑞斯角点会出现在顶点处。(上图3);上图中的下半部分红色圆圈内就是海瑞斯角点常出现的地方。如上图第一个式子,海瑞斯角点就是将窗口移动后的数值与移动前的数值之差乘一个权重而获得。src:待检测Harris角点的输入图像,图像必须是CV_8U或者CV_32F的单通道灰度图像。dst:存放Harris评价系数的R矩阵,数据类型为CV_32F的单通道图像,与输入图像具有相同的尺寸。原创 2023-05-27 16:06:48 · 1187 阅读 · 0 评论 -
opencv_c++学习(二十四)
积分图像是对原图像进行积分操作的算法。如上图左所示,不同颜色代表不同区域。当我们想求取一个像素点的积分值时,我们需要求取该点左上方区域的数据之和,如P0的积分值是浅蓝色区域的数据之和。P1的积分值为蓝色和橙色区域的数值之和。上图展示的是倾斜求和积分方式。src:输入图像,图像数据类型可以是CV_8U、CV_32F或者CV_64F。sum:输出标准求和积分图像,图像的数据类型可以是CV_32S、CV_32F或者CV_64F。原创 2023-05-26 15:41:26 · 1175 阅读 · 0 评论 -
opencv_c++学习(二十三)
拟合含义如上图,即为通过已知点去拟合一条直线或者一个多边形。points:输入待拟合直线的2D或者3D点集。line:输出描述直线的参数,2D点集描述参数为Vec4f类型,3D点集描述参数为Vec6f类型。distType: M-estimator算法使用的距离类型标志。param:某些类型距离的数值参数©。如果数值为0,则自动选择最佳值。reps:坐标原点与直线之间的距离精度,数值0表示选择自适应参数,一般常选择0.01。原创 2023-05-26 09:53:28 · 914 阅读 · 0 评论 -
opencv_c++学习(二十二)
图中左侧为边缘检测的效果,中间为图像经过二值化的效果,右图为凸包检测效果。points:输入的2D点集。hull:输出凸包的顶点。clockwise:方向标志,当参数为true时,凸包顺序为顺时针方向,否则为逆时针方向。returnPoints:输出数据的类型标志,当参数为true时第二个参数输出的结果是凸包顶点的坐标,否则第二个参数输出的结果是凸包顶点的索引。原创 2023-05-25 20:40:36 · 1536 阅读 · 0 评论 -
opencv_c++学习(二十一)
image:输入图像,数据类型为CV_8U的单通道灰度图像或者二值化图像。contours:检测到的轮廓,每个轮廓中存放着像素的坐标。mode:轮廓检测模式标志。method:轮廓逼近方法标志。offset:每个轮廓点移动的可选偏移量。这个函数主要用在从ROI图像中找出的轮廓并基于整个图像分析轮廓的场景中。image:绘制轮廓的目标图像。contours:所有将要绘制的轮廓。contourldx:要绘制的轮廓的参数,如果是负数,则绘制所有的轮廓。color:绘制轮廓的颜色。原创 2023-05-24 22:28:55 · 959 阅读 · 0 评论 -
opencv_c++学习(二十)
op:形态学操作的类型标志。见下图:iterations:处理的次数。原创 2023-05-24 17:24:40 · 1027 阅读 · 0 评论 -
opencv_c++学习(十九)
街区距离:顾名思义,就类似于城市距离一样,并不是通过两点间的距离,而是我们从一个地点到达另一个地点的路程(横纵坐标差值之和)。maskSize:距离变换掩码矩阵大小,可以选择尺寸为DIST_MASK_3(3×3)、DIST_MASK_5 (5×5)dst:输出图像,与输入图像具有相同的尺寸,数据类型为CV_8U或者CV_32F的单通道图像。dstType:输出图像的数据类型,可以是CV_8U或者CV_32F。src:输入图像,数据类型为CV_8U的单通道图像。棋盘距离:是两点横纵坐标之差的最大值。原创 2023-05-22 21:41:04 · 388 阅读 · 0 评论 -
opencv_c++学习(十八)
邻域分为4邻域和8邻域。ltype:输出图像的数据类型,目前只支持CV_32s和lCV_16U这两种数据类型,默认参数值为CV_328。stats:不同连通域的统计信息矩阵,矩阵的数据类型为Cv_32S。ltype:输出图像的数据类型,目前支持CV_32S和CV_16U两种数据类型,默认参数为CV_32S。connectivity:标记连通域时使用的邻域种类,4表示4-邻域,8表示8-邻域,默认参数值为8。connectivity:标记连通域时使用的邻域种类,4表示4-邻域,8表示8-邻域,默认参数为8。原创 2023-05-22 17:14:06 · 775 阅读 · 0 评论 -
opencv_c++学习(十七)
ddepth:输出图像的数据类型(深度),根据输入图像的数据类型不同拥有不同的取值范围(这里不推荐8U, 建议使用16S)。ddepth:输出图像的数据类型(深度),根据输入图像的数据类型不同拥有不同的取值范围。ksize:滤波器的大小,可以选择的参数为FILTER_SCHARR,1,3,5或7。edges:输出图像,与输入图像具有相同尺寸的单通道图像,且数据类型为CV_8U。左侧上面的曲线表示的是像素从左到右的变化,下面的曲线是上面曲线求导而得。dst:输出图像,与输入图像src具有相同的尺寸和通道数。原创 2023-05-22 10:11:48 · 732 阅读 · 0 评论 -
opencv_c++学习(十六)
src:待均值滤波的图像,图像的数据类型必须是CV_8U、CV_16U、CV_16S、CV_32F和CV_64F这五种数据类型之一。dst:均值滤波后的图像,与输入图像具有相同的尺寸和数据类型。ksize:卷积核尺寸。anchor:内核的基准点(锚点),其默认值为(-1,-1)代表内核基准点位于kernel的中心位置。borderType:像素外推法选择标志。src:输入图像。dst:输出图像,与输入图像具有相同的尺寸和通道数。原创 2023-05-21 21:07:00 · 640 阅读 · 0 评论 -
opencv_c++学习(十五)
mask:匹配模板的掩码,必须与模板图像具有相同的数据类型和尺寸,默认情况下不设置,目前仅支持在TM_SQDIFF和ITM_CCORR_NORMED这两种匹配方法时使用。result:模板匹配结果输出图像,图像数据类型为CV_32F。如果image的尺寸为W×H,模板图像尺寸为w×h,则输出图像的尺寸为(W-w+1)×(H-h+1)。templ:模板图像,需要与image具有相同的数据类型,但是尺寸不能大于image。image:待模板匹配的原图像,图像数据类型为CV_8U和CV_32F两者中的一个。原创 2023-05-20 21:08:35 · 454 阅读 · 0 评论 -
opencv_c++学习(十四)
如果直方图各个数字之间分布比较均衡,则其对比度就相对较低,反之亦然。同时也可以通过直方图可以大致了解图像的亮暗等。images:待统计直方图的图像数组。nimages:输入的图像数量。channels:需要统计的通道索引数组。mask:可选的操作掩码。hist:输出的统计直方图结果,是一个dims维度的数组。dims:需要计算直方图的维度,必须是整数。histSize:存放每个维度直方图的数组的尺寸。ranges:每个图像通道中灰度值的取值范围。原创 2023-05-19 20:24:37 · 483 阅读 · 0 评论 -
opencv_c++学习(十三)
trackbarname:滑动条的名称。winname:创建滑动条窗口的名称。value:指向整数变量的指针,该指针指向的值反映滑块的位置,创建后,滑块位置由此变量定义。count:滑动条的最大取值。onChange:每次滑块更改位置时要调用的函数的指针。该函数应该原型为void Foo (int,void *);,其中第一个参数是轨迹栏位置,第二个参数是用户数据。如果回调是NULL指针,则不会调用任何回调,只更新数值。userdata:传递给回调函数的可选参数。原创 2023-05-18 21:41:19 · 398 阅读 · 0 评论 -
opencv_c++学习(十一)
bottomLeftOrigin:图像数据原点的位置,默认为左上角,如果参数改为true,则原点为左下角。lineType:线的类型,可取值为FILLED ,LINE_4,LINE_8和LINE_AA。pts:多边形顶点数组,可以存放多个多边形的顶点坐标的数组。thickness:圆形的线宽,如果为负数,则为实心圆。startAngle:椭圆弧起始的角度,单位为度。endAngle:椭圆弧终止的角度,单位为度。radius:圆形的半径长度,单位为像素。angle:椭圆旋转的角度,单位为度。原创 2023-05-18 16:10:50 · 682 阅读 · 0 评论 -
opencv_c++学习(十)
在图像变换的过程中往往需要对像素进行相关的操作。如上图(左)所示,我们会遇到两个相邻的像素块需要映射到同样的位置中,或者两个相邻的位置的像素中间需要映射出一个位置的像素块。这时候我们就需要一些差值的方法。如上图(右)所示,是一个双线性插值操作。原创 2023-05-18 10:20:51 · 548 阅读 · 0 评论 -
opencv_c++学习(九)
src:待二值化的图像,图像只能是CV_8U和CV_32F两种数据类型。对于图像通道数目的要求和选择的二值化方法相关。dst:二值化后的图像,与输入图像具有相同的尺寸、数据类型和通道数。thresh:二值化的阀值。maxval:二值化过程的最大值。type:选择图像二值化方法的标志。原创 2023-05-17 14:44:44 · 432 阅读 · 0 评论 -
opencv_c++学习(八)
src1 :第一个图像矩阵,可以是任意通道数的矩阵。src2:第二个图像矩阵,尺寸和通道数以及数据类型都需要与src1一致。dst:保留对应位置较大(较小)灰度值后的图像矩阵,尺寸、通道数和数据类型与src1一致。src:输入单通道矩阵minVal:指向最小值的指针,如果不需要,则使用NULL。maxVal:指向最大值的指针,如果不需要,则使用NULL。minLoc:指向最小值位置的指针,如果不需要,则使用NULL。maxLoc:指向最大值位置的指针,如果不需要,则使用NULL。原创 2023-05-16 21:28:13 · 330 阅读 · 0 评论 -
opencv_c++学习(七)
具体的体现样式如下:m:输出图像。rtype:转换后数据类型alpha:缩放系数beta:平移系数。原创 2023-05-16 19:59:29 · 427 阅读 · 1 评论 -
opencv_c++学习(六)
对以上实例解释如下:若读取的为本地视频,则filename为视频名称,若读取的是摄像头数据,则为int类型的摄像头id。原创 2023-05-09 21:58:03 · 465 阅读 · 0 评论 -
opencv_c++学习(五)
上图为opencv中三通道数据的存储方式,反映到图像上则为空间维度为3*3,通道为3的图像。原创 2023-05-07 22:26:54 · 494 阅读 · 0 评论 -
opencv_c++学习(四Mat类)
在上图中可以看出,在opencv中采用的是像素值来代表每一个像素三通道颜色的深浅。原创 2023-05-06 22:19:53 · 708 阅读 · 0 评论 -
opencv_c++学习(三)
CV_Assert()函数判断图像数据的类型是否为uchar类型,不满足则抛出异常。Mat.ptr(int i=0)获取像素矩阵的指针,索引i表示第几行,从0开始计行数。Mat.ptr(int i=0)获取像素矩阵的指针,索引i表示第几行,从0开始计行数。获取当前像素点P(row, col)的像素值p(row, col) =current[col]saturate_cast ( -100 ),返回0saturate_cast ( 288 ) ,返回255。原创 2023-05-05 22:08:31 · 840 阅读 · 0 评论 -
opencv_c++学习(二)
imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称,第二个参数表示加载的图像是什么类型。支持常见的三个参数值:IMREAD_UNCHANGED(0)表示把原图作为RGB图像加载进来。注意:OpenCV支持JPG、PNG、TIFF等常见格式图像文件加载。原创 2023-04-05 21:15:24 · 442 阅读 · 0 评论 -
opencv_c++学习(一)
opencv_c++的环境搭建原创 2023-04-04 18:24:24 · 576 阅读 · 0 评论