
opencv c++
文章平均质量分 60
lucust
mobe
展开
-
opencv c++ 光流法、稀疏光流法、稠密光流法、均值迁移追踪(meanshift、camshift)
当迭代10次不需要计算,两次的计算结果差小于0.01也不需要计算。原创 2022-12-08 15:41:37 · 3521 阅读 · 1 评论 -
opencv c++ 基于颜色的对象追踪
通过API:inrange获取对应颜色的mask图像:参考 :(70条消息) opencv c++ 图像色彩空间转换 掩膜mask处理(12)_lucust的博客-优快云博客 a)查看帧图像颜色分布。 通过插件image watch 来可以快速获取如下像素点坐标,像素值信息。 b)获取正确的颜色range,从而获取mask c)对mask图像进行颜色分析。帧图像处理函数:视频调用函数:原创 2022-12-08 13:17:53 · 901 阅读 · 0 评论 -
opencv c++ Harris角点检测、shi-tomasi角点
应用:连续的图像移动或图像拼接场景中,确定图像中某一对象的位置。 在x方向和y方向都有最大梯度变化的像素点,衡量这个变化的计算式如下,为xx,xy,yx,yy四个方向的梯度sum值组成的2×2矩阵: a)在实际过程中,会在计算梯度时,乘以一个对应位置的权重 w(x, y),u,v为沿着对应方向移动的距离。 b)在经过转换后得到新的E(u, v)式子: 其中: k = 0.04~0.6原创 2022-12-07 20:26:21 · 1797 阅读 · 0 评论 -
opencv c++ 直方图反向投影
找出图片中某目标,该目标最好具有直方图特征。 需要输入待找出物体的图片模板:img1,待识别图片:img2。 a)计算直方图:先将图像转为hsv,制作h与s两个通道的二维直方图。 b)计算比率:用待找出物体的图片模板直方图/待识别图片直方图。 c)卷积模糊 b)反向输出 如下找到图片中的手掌区域的应用: 计算直方图3、代码原创 2022-12-07 18:55:01 · 282 阅读 · 0 评论 -
opencv c++ 图像形态学操作
包括图像的腐蚀、膨胀、开、闭、形态学梯度、顶帽、黑帽、分支主题、结构元素等操作。 具体概念参考:(41条消息) 图像处理-形态学处理_Good@dz的博客-优快云博客_图像处理 形态学 用3×3的核去扫描二值图像,当核与图像中的前景像素(值为1的像素)有交集时,则将二值图像中对应的卷积核中心位置的像素值置为1。 拓展:卷积核可以为任意形状(除1×1),且重置点可以选用卷积核中的任意位置,有‘交集‘就对重置点位置像素置1。 用3×3的核原创 2022-12-06 19:53:17 · 2106 阅读 · 0 评论 -
opencv c++ 霍夫圆检测
a)对某点,以其为圆心的圆为无数(一圈圈的圆),将其从x-y平面坐标系上转换到r-θ极坐标系上后,则变成了以r、θ为自变量,为固定值,x、y为因变量的式子: b)其余点作同样操作,可以得到,当半径r为某值时,使得三个圆同时交于1点,从而获取这些点构成的圆的圆心,半径。 圆的参数方程: 注:在实际实现时,会设定一个固定的半径r来进行检测(因为r的范围太大了)。3、代码: 说明:原创 2022-12-05 19:24:12 · 2584 阅读 · 5 评论 -
opencv c++ 霍夫直线检测
目的:在进行图像边缘提取后,将数据从平面坐标转换到极坐标空间,即完成了直线的信息提取。1、原理 平面坐标系:通过之间的斜率k和截距b来确定一条直线。y = kx+b 极坐标系:通过半径r、角度θ来确定一条直线。r = xcosθ + y sinθ注:在图像处理中,定义的平面坐标原点位于左上角,横轴为x,右方向为正方向,纵轴为y,下方向为正方向。 对于直线上任意一点,都有: 对于任意点,经过它的线有无数: 将原创 2022-12-05 17:18:31 · 2487 阅读 · 0 评论 -
opencv c++ 轮廓逼近与拟合
轮廓逼近:指用越来越多的多边形对轮廓进行拟合,从而获得与轮廓近似的多边形,并获取多边形的形状。目的是为了减少编码点 拟合:生成最相似的圆或多边形。2、代码 API: 只能获取到多边形的边数,可以使用result.rows调用出边数。获取拟合多边形的边数: 拟合圆、椭圆:原创 2022-12-03 16:09:03 · 1712 阅读 · 0 评论 -
opencv c++ 轮廓匹配
a)几何计算公式: p、q为阶数,当p+q = 1时,几何矩为一阶矩,p+q = 2,几何矩为二阶矩,依次类推。。因此,对于二值图像有: 所有前景像素的x坐标之和: 所有前景像素的y坐标之和: 所有前景像素的个数: 注:前景像素为像素值为对应类型的满像素值的像素。b)几何中心矩计算公式 Hu矩计算公式: 性质:Hu矩具有放缩不变性,旋转不变性。原创 2022-12-03 14:10:24 · 1898 阅读 · 2 评论 -
opencv c++图像轮廓计算
基于格林公式计算:连续型: 离散型 基于L2范数计算距离。 矩形,椭圆等外接形状。查找轮廓: 绘制轮廓:5、示例代码 代码展示了对二值化图像的轮廓查找、轮廓绘制、轮廓面积及周长的计算和应用、轮廓外接矩形、椭圆、带角度的矩形及角度信息的提取。原创 2022-12-03 11:59:03 · 1053 阅读 · 0 评论 -
oepncv c++ 连通组件扫描
a)基于像素的扫描方法 b)基于块的扫描方法。将上图左边的块模板分为右边所示的大块分区P、Q、R、S、X。2、将一个等价队列中的标记全部置为最小标记值,如上{1,3,5}队列全置为1。centroids——每个连通组件的(包括背景)的中心坐标信息,数据类型为CV_64F。labels——带标记的与输入图像同大小类型的图像。d)opencv中的连通组件扫描算法——BBDT。,则扫描区域内其余的前景像素与当前像素连通。原创 2022-12-02 18:47:19 · 542 阅读 · 0 评论 -
opencv c++ 二值图像、阈值计算方法、全局阈值、自适应阈值
彩色图像 :三通道,像素值一般为0~255;灰度图像:单通道,像素值一般为0~255;二值图像:单通道,像素值一般为0(黑色)、255(白色);threshold()原创 2022-12-02 16:16:55 · 2348 阅读 · 0 评论 -
opencv c++ 边缘提取
以图像像素值突变最大的方向作为边缘法线,与边缘法线垂直的就是边缘。边缘强度:局部图像上的像素值突变程度(图像局部一阶梯度和二阶梯度值)。原创 2022-12-02 11:19:02 · 2017 阅读 · 0 评论 -
opencv c++ 图像噪声及去噪
两种常用类型的图像传感器CCD和CMOS采集图像过程中,由于受传感器材料属性、工作环境、电子元器件和电路结构等影响,会引入各种噪声,如电阻引起的热噪声、场效应管的沟道热噪声、光子噪声、暗电流噪声、光响应非均匀性噪声。d——双边模糊近邻选用像素点半径,和sigmaSpace一起控制卷积核大小,如果为0,则只由sigmaSpace制卷积核大小。对像素点进行处理时,对周围像素点赋予权值,像素值相近的周边点赋予较高权值,像素值差距大的赋予较低权值。inputMat——在生成噪声图像时的输入矩阵为与原始图像。原创 2022-12-01 15:39:21 · 5491 阅读 · 0 评论 -
opencv c++ 图像梯度、边缘、锐化
注:也可仿照robot算子示例输入3×3的卷积核,并赋予对应的sobel值进行梯度图像获取。分别使用x、y方向的算子来获取Gx,Gy,然后选用梯度计算方法来获取对应像素点的梯度值。获取图像上沿着某一方向或多个方向上,像素值的突变图像。分别为: 四邻域算子、八邻域算子、变种算子。即二阶导数的图像应用。之间相互独立的函数,原创 2022-11-30 15:18:21 · 5451 阅读 · 1 评论 -
opencv c++ 实时对象追踪
根据选定的ROI区域的颜色直方图选定若干点,然后计算空间点图心。如果在过程中图心始终位于该ROI的中心,则对象没有移动,若图心改变,则对象朝图心改变的方向移动。但它不会允许改变边界框大小(即只允许图像对象的平动,不允许前后运动)。在meanshift的基础上可以自适应边界框大小,还可以追踪对象的方向。涉及算法:meanshift,CAMshift。原创 2022-11-13 16:22:59 · 2051 阅读 · 0 评论 -
opencv c++ 高斯混合模型使用
【代码】opencv c++ 高斯混合模型使用。原创 2022-11-13 14:51:19 · 1150 阅读 · 0 评论 -
opencv c++ 获取图片中的连通域
有时一张图片上有多个待识别物体,图像在被转换成二值化图像后,对应的物体部分会明显与背景有区别,每个物体之间也会有着不同的轮廓(物体均有间隔距离)。labels //与image相同大小的Mat,其中的同一连通域的像素点会带有相同索引。获取针对不同物体获取其轮廓,分别保存为与输入图像相同大小的Mat并输出。connectivity // 连通域查找方法4,8。itype // 标签图像类型。image // 输入图像。原创 2022-11-07 16:33:42 · 1514 阅读 · 0 评论 -
opencv c++去除含有白噪声的伪影
在进行除法操作前,需要将image和shine_back均进行浮点类型转换(此时两个图像的所有像素值均在0~1之间),在除法操作时,为1 - (shine_back/image ),同样shine_back与image的同时亮光部分的像素值会在操作后被置0,而只有image亮的部分会被置1。再对输入图像进行直接阈值处理后,会在部分区域出现伪影,而伪影常常会伴随着白噪声,这使得后续对图像的边缘提取会造成一定的困难,因此需要对该部分进行去除。原创 2022-11-06 19:41:25 · 1287 阅读 · 0 评论 -
opencv c++ 高斯模糊,高斯双边模糊(28)
对于空间(x、y)和色彩域内做卷积操作,会考虑色彩空间像素值的差异,只对同一通道内差异大的像素值进行处理。sigmaColor应设置一个较大的值,sigmaSpace为sigmaColor的1/10左右。高斯核从最中心到边缘的权值逐渐变小,服从如下正态分布,从而使得中心像素占的比例最大。当窗口尺寸设置为(0,0)时, 模糊效果会达到最佳。当设置了Size的时候,sigma的设置将无效果。int d 设置为0;,因为偶数无法中心化。原创 2022-10-29 17:15:08 · 1549 阅读 · 0 评论 -
opencv c++ 图像卷积(27)(自定义卷积、滤波)
这里的窗口一般被称为卷积核(kernal),卷积核中的元素被称为权值。注意,当输入图像通道数为多个时,对应的卷积核也有同样的通道数量。用一个小于图像的矩阵窗口在图像上按照一定的。这里的blur函数步长始终为1。,将对应像素点与窗口权值进行。移动,在窗口覆盖的图像。原创 2022-10-29 16:26:22 · 1827 阅读 · 0 评论 -
opencv c++ 直方图均衡化(26)
直方图均衡化,公式推导,实际案例解释。原创 2022-10-29 15:45:57 · 1479 阅读 · 0 评论 -
opencv c++ 二维直方图(25)
1、转换输入图像为HSV。(注:H通道取值范围0~180,S通道的范围为0~255)定义bin参数,将H通道的bin尺寸定为30,每个bin长度6个像素值,S通道bin尺寸定为32,每个bin长度为8个像素值。其余calcHist函数所需参数定义。2、逐个bin来获取对应bin区域的密度值,并绘制对应的矩形。背景:将彩色图BGR转换为HSV时,原来的三通道会被转换为。,由此可以对转换后的HSV图像进行二维直方图绘制。原创 2022-10-25 16:14:09 · 458 阅读 · 0 评论 -
opencv c++ 图像直方图(24)
直方图的大小范围,像素取值范围0~255时,最少有256个bin,256除以bin的大小应是整数结果。对图像中各个像素点点值的统计(即对每段像素值计算其出现次数)。&bgr_plane[0] //单通道图像地址。,故此直方图能广泛应用于图像处理各个领域。在对图像进行平移、旋转、缩放等操作时,其。原创 2022-10-25 14:30:15 · 521 阅读 · 0 评论 -
opencv c++ 视频处理与保存(23)
视频清晰度划分:SD:标清HD:高清。原创 2022-10-25 10:12:27 · 1402 阅读 · 0 评论 -
opencv c++ 视频文件摄像头使用(22)
如果要打开视频文件的话,将上述代码capture(0),改为capture(videopath)即可。当使用 VideoCapture capture(0)时,能实现电脑摄像头调用。3、视频链接or URL of video stream (eg.1、视频路径,name of video file (eg.原创 2022-10-24 19:07:39 · 385 阅读 · 0 评论 -
opencv c++图像旋转(21)
【代码】opencv c++图像旋转(21)原创 2022-10-24 16:47:09 · 616 阅读 · 0 评论 -
opencv c++ 图像翻转(20)
flipcode // 0——上下翻转,1——左右翻转, -1——对角线翻转。附:将图像翻转与随机ROI区域裁剪,对比度调整等结合使用,可以实现图像增广。目的:对图像进行翻转(镜像处理)。src //输入图像。dst //输出图像。原创 2022-10-24 15:57:14 · 699 阅读 · 0 评论 -
opencv c++图像缩放与插值(19)
dsize // 输出图像与原图像尺寸比例,Size类型。用途:几何变换,透视变换(视角切换),插值计算新像素。输出图像与原图像x尺寸比例,输出图像与原图像y尺寸比例。src //输入图像。dst //输出图像。原创 2022-10-24 15:45:56 · 622 阅读 · 0 评论 -
opencv c++图像像素类型转换与归一化(18)
2、在imshow中,输入图像像素值类型为float型时,在之前必须进行归一化处理,不然无法正常显示,因为imshow函数会自动对float型的像素值乘以255.1、在进行归一化前,必须将输入的图像像素值使用converTo函数转换为float型。beta = 0——范围归一化的最大值,该参数不能用于范数归一化的模式。alpha = 1——范围归一化的最小值(NORM_MINMAX)mask = noArray()——用于判断是否。dtype = -1——为负数时,原创 2022-10-24 14:50:55 · 1194 阅读 · 0 评论 -
opencv c++ 鼠标操作与响应(17)
/定义全局变量来辅助记录鼠标状态Mat temp;sp——鼠标左键点击点,初始化为(-1,-1)ep——鼠标左键松开点,初始化为(-1,-1)temp——用于保存原图,在实时反馈框图时不被过多的框遮住原图(即在鼠标移动绘制过程中,将带框图像重置为原图,并绘制新框图)这里需要定义鼠标左键被点击时、鼠标移动时,鼠标左键抬起时的事件。2、1鼠标左键被点击时更新起始点,反馈点击位置即可。2、2鼠标左键抬起时更新终止点,当框图是从左上往右下绘制时,绘制方框,并显示被方框框住的ROI区域,最后重置。原创 2022-10-24 10:49:26 · 1016 阅读 · 0 评论 -
opencv c++ 多边形填充与绘制(16)
API:polylines(预定义的背景画布, 点数组, true, 颜色, 线宽, 线形, shift参数);fillPoly(定义的背景画布, 点数组, 颜色, 线形, shift参数);原创 2022-10-23 15:46:04 · 1675 阅读 · 0 评论 -
opencv c++ 随机数与随机颜色(15)
opencv内置随机数API。RNG rng(随机数种子)原创 2022-10-23 14:53:18 · 846 阅读 · 0 评论 -
opencv c++图像几何形状绘制(14)
用途:框住图像中某个物体。(人脸识别)调用API:rectangle(输入图像,矩形,颜色(Scalar形式),线宽,线形,shift参数)circle(输入图像,圆心坐标(Point),半径,颜色,线宽,线形,shift参数);line(输入图像, 左边界坐标, 右边界坐标, 颜色,线宽,线形,shift参数);ellipse(输入图像, 椭圆, 颜色,线宽,线形);矩形定义示例:Rect rect;原创 2022-10-23 11:21:21 · 780 阅读 · 0 评论 -
opencv c++ 图像像素值统计(13)minMaxLoc
minMaxLoc(输入图像,最小值,最大值,最小值坐标,最大值坐标,Mat());的,如果需要求RGB通道的,可以通过split函数来将其拆解成三部分实现。meanStdDev(输入图像,均值矩阵,方差矩阵);目的:获取像素的最大值、最小值、均值、方差等数据。:minMaxLoc的输入图像要求是。原创 2022-10-23 10:07:03 · 1012 阅读 · 0 评论 -
opencv c++ 图像色彩空间转换 掩膜mask处理(12)
知识点:色彩空间及其转换RGB色彩空间HSV色彩空间YUV色彩空间YCrCb色彩空间API:cvtColor——色彩空间转换inRange——提前指定色彩范围区域。原创 2022-10-21 16:14:29 · 1485 阅读 · 0 评论 -
opencv c++通道分离与合并(11)
说明:根据from_to来交换,入开始的0,2意为将通道0交换到通道2。——将src的各通道图像矩阵值赋予mv。使用API函数split和merge进行通道的分离和合并。——将mv合并到dst。mv——定义的空白图像数组矩阵。原创 2022-10-21 15:39:27 · 545 阅读 · 0 评论 -
opencv c++ 图像像素逻辑操作(位操作)(10)
/空白图像创建//在图像内添加矩阵}rectangle(输入图像,形状函数(形状参数),颜色, 线宽, 图形学处理~一般用LINE_8即可,0)原创 2022-10-21 14:30:29 · 452 阅读 · 0 评论 -
opencv c++ 自带颜色表操作(9)
用于实现图像的各种色系转换。函数:src——输入图像dst——输出图像。原创 2022-10-21 13:47:23 · 536 阅读 · 0 评论 -
opencv c++ 键盘响应操作(8)
1、在对视频进行分析时,waitKey值应尽可能小。2、在键盘输入时,鼠标应提前点击图像窗口。思路:用循环和特定输入来。原创 2022-10-20 14:56:02 · 614 阅读 · 0 评论