![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
opencv
吐着泡泡说爱你
小学生一枚,,学习嵌入式和视音频开发,数字图像处理
展开
-
opencv 编译及简介显示一张图片
学习书籍: 学习opencv ,Opencv3编程入门 ,Opencv机器人视觉编程攻略,Opencv图像处理编程实例, 参考网站: opencv官方网站 http://opencv.org Opencv Github 主页:https://github.com/lnseez/opencv Opencv开发版Wiki主页原创 2017-05-29 21:45:43 · 791 阅读 · 0 评论 -
opencv之特征检测与匹配(三)
1)SURF特征检测 SURF—-加速稳健特征算法 SURF是尺度不变特征变换SIFT的加速版,一般来说,标准的SURF算子比SIFT算子快好几倍,并且在多幅图像中具有更好的稳定性,SURF最大的特征在于采用harr特征以及积分图像的概念,这大大加快了程序运行时间,可以应用于物体识别以及三维重建中 在检测特征点的过程中计算了Hessian矩阵的行列式,与此同时,计算到了Hessian原创 2017-07-12 10:02:57 · 1263 阅读 · 0 评论 -
opencv 图像的膨胀和腐蚀(一)
膨胀腐蚀概述 **膨胀和腐蚀是形态学的操作,简单来说就是基于形状的一系列图像处理操作 **膨胀腐蚀是基于高亮部分(白色)操作的,膨胀是对高亮部分进行膨胀,类似“”领域扩张,腐蚀是高亮部分被腐蚀,类似领域被蚕食 膨胀腐蚀的应用和 功能: 消除噪声 分割独立元素或连接相邻元素 寻找图像中的明显极大值,极小值区域原创 2017-06-11 19:33:40 · 2165 阅读 · 0 评论 -
opencv 图像膨胀腐蚀(二)
形态学其他操作: 开运算,闭运算,顶帽,黑帽,形态学梯度 基于膨胀腐蚀基础,利用morphologyEx()函数进行操作 void morphologyEx(InputArray src,OutputArray dst,int op,InputArray kernel,Point anchor=Point(-1,-1),int iterations=1,in原创 2017-06-12 17:31:36 · 660 阅读 · 0 评论 -
opencv之轮廓特征属性及应用
1)最小外接圆 轮廓最小外接圆–minEnclosingCircle() void minEnclosingCircle(InputArray points,CV_OUT Point2f¢er,CV_OUT float&radius); &&points:输入的二维点集,可以填Mat类型或者std::vector &¢er:Point2f&类型的center原创 2017-07-04 09:17:30 · 524 阅读 · 0 评论 -
opecncv之运动物体检测
1)运动物体检测简介 运动物体检测就是在视频(视频文件/摄像头获取)中检测运动物体(目标)。opencv中常用的运动物体检测方法有背景减法,帧差法,光流法,运动物体检测广泛应用于视频安全监控,,车辆检测等方面 背景减法:就是用原图像减去背景模型,剩下的就是前景图像,即运动目标 帧差法:就是利用相邻的两帧或三帧图像,利用像素之间的差异性,判断是否有运动目标 视频就是一帧一帧图像组成的 求图像原创 2017-07-13 09:59:09 · 997 阅读 · 0 评论 -
opencv之轮廓特征属性及应用
1)点与轮廓的距离及位置关系 计算点与轮廓的距离及位置关系–pointPolygonTest() double pointPolygonTest(InputArray contour,Point2f pt,bool measureDist); &&contour 所需检测的轮廓对象 &&pt Point2f类型的pt 待判定位置的点 &&measureDis原创 2017-07-04 19:59:30 · 509 阅读 · 0 评论 -
opencv之轮廓特征属性及应用
1)HSV颜色空间 HSV颜色空间与人眼所看色彩较接近,因此常用于颜色检测和识别 其中H(色调)S(饱和度),V(亮度) H–不同的颜色(红色/绿色/蓝色)—范围:0–360 S–颜色深浅(浅红/深红)———–范围:0.0-1.0 V–颜色亮暗(暗红/亮红)———–范围:0.0-1.0 opencv默认的HSV范围分别是 H:0-180 S原创 2017-07-05 10:26:49 · 350 阅读 · 0 评论 -
opencv图像边缘检测
边缘检测检测 &&边缘检测可以提取图像重要轮廓信息,减少图像内容,可以用于分割图像,做特征 提取 &&边缘检测的一般步骤 滤波——(滤出噪声对检测边缘的影响) 滤高频 增强——(可以将像素邻域强度变化凸显出来–梯度算子)变化率 检测——(阈值方法确定边缘) &&常用边缘检测算子 Canny算子 Sobel算子 Scharr算子 Laplacian 算子 Ro原创 2017-06-14 15:09:51 · 502 阅读 · 0 评论 -
opencv之分水岭算法分割及图像修补
1)分水岭算法 原理: 任何一幅灰度图像都可以被看成是拓扑平面,灰度值高的区域可以被看成是山峰,灰度值低的区域可以被看成是山谷,我们向每一个山谷中灌不同颜色的水,随着水位的升高,不同山谷的水就会相遇汇合,为了防止不同山谷的水的汇合,我们需要在水汇合的地方构建起堤坝,不停的灌水,不停的构建堤坝直到所有的山峰都被水淹没,我们构建好的堤坝就是对图像的分割,这就是分水岭算法的背后原理 对灰度原创 2017-07-06 09:45:49 · 847 阅读 · 0 评论 -
opencv 之霍夫线变换及应用
霍夫变换是图像处理中的一种特征提取技术,该过程中在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换的结果 霍夫变换在opencv中主要分两种 霍夫线变换–检测直线(线段) 霍夫圆变换–检测圆 用到的函数: HoughLines()–标准霍夫变换,多尺度霍夫变换 HoughLinesP()—累计概率霍夫变换 HoughC原创 2017-06-15 11:39:15 · 616 阅读 · 0 评论 -
opencv之霍夫圆变换
霍夫圆变换的基本原理和霍夫线变换大体上相似,只是点对应的二维极径极角空间被三维的圆心点x,y和半径r空间取代,如果用完全一样的方法运算量比较大,运行速速比较慢,所以采用“”霍夫梯度法“”来做圆变换 4.1霍夫梯度法的原理 1.首先对图像应用边缘检测,比如用canny边缘检测 2.然后,对边缘图像中的每一个非零点,考虑其局部梯度,就是用Sobel()函数计算x,y方向的Sobel一阶原创 2017-06-15 15:07:51 · 651 阅读 · 0 评论 -
opencv之GrabCut&FloodFill分割
1)GrabCut图像分割算法 Opencv中的GrabCut算法是Graphcut算法的改进,Graphcut是一种直接基于图割算法的图像分割技术,仅仅需要确认前景和背景的输入,该算法就可以完成前景和背景的最优分割,该算法利用图像中的纹理(颜色)信息和边界(反差)信息,只要少量的用户交互操作就可得到比较好的分割结果,和分水岭算法比较相似,但是计算速度比较慢,得到的结果比较精确,如果从静态图像中提原创 2017-07-07 10:49:06 · 652 阅读 · 0 评论 -
OpenCV2升级到OpenCV3
新添加了脸部识别,文本探测,文本识别,新的边缘检测器,深度图像处理,新的光流和追踪算法 opencv3.0手册地址 http://docs.opencvorg/trunk/index/htmlOpencv2代码修改为Opencv3代码报错 1由于宏定义名称变更提示“”未定义的标识符“”问题 ex:CV_WINDOW_AUTOSIZE未声明的标识符 原因:OpenCV3中取消了Openc原创 2017-07-07 11:08:37 · 3856 阅读 · 1 评论 -
opencv角点检测简介
1)相关概念 1兴趣点 在图像处理和计算机视觉领域,兴趣点也被称为 关键点或者特征点被大量用于解决物体识别,图像识别,图像匹配,视觉追踪,三维重建,等一系列问题,我们不再观察整幅图,而是选择某些特殊的点,然后对他们进行分析,如果能检测到足够的这种点,同时他们的区分度很高,并且可以精准定位稳定的特征,这个方法就具有实用价值,图像特征类型被分为如下三种: *边缘 *角点(感兴趣关原创 2017-07-08 10:06:18 · 1171 阅读 · 0 评论 -
opencv特征检测与匹配
特征点的检测与匹配,在物体识别,视觉追踪,三维重建领域都有很广泛的应用 ,Opencv 提供了如下几种特征检测方法 “FAST”—–FastFeaturedector “STAR”—–StartFeaturedector “SIFT”——SIFTF(nonfree module) “SURF”—–SURF(nonfree module) “ORB”—–ORB “MSER”–MSER “原创 2017-07-09 09:59:01 · 840 阅读 · 0 评论 -
opencv 之运动物体检测(二)
1)运动物体轮廓椭圆拟合及中心vector<vector<Point>contours;vector<Vec4i>hierarcy;findContours(diff,,contours,hierarcy,CV_RETR_EXTERNAL,CV_CHAIN_APPPROX_NONE);cout<<"num"<<contours.size()<<endl;vector<RotatedRect>原创 2017-07-14 09:05:53 · 1059 阅读 · 0 评论 -
opencv之轮廓特征属性及应用
使用特定形状的轮廓包围 在实际应用中,经常会有将检测到的轮廓用多边形表示出来的应用,提取包围轮廓的多边形也方便我们做进一步分析,轮廓包围主要有几种 1.轮廓外接矩形 2.轮廓最小外接矩形(旋转) 3.轮廓最小包围圆形 4轮廓拟合椭圆 5.轮廓毕竟多边形曲线轮廓外接矩形–boudingRect() Rect boundingRect(InputArray points); points原创 2017-06-20 20:25:40 · 512 阅读 · 0 评论 -
opencv-----图像阈值化
*图像阈值化 可以根据灰度差异来分割图像不同的部分 *阈值化处理的图像一般为单通道图像(灰度图) *阈值化参数的设置可以使用滑动条来debug *阈值化处理容易受到光照处理,处理时应注意 固定阈值:threshold() 自适应阈值:adaptiveThreshold() 1)固定阈值————threshold() 给定阈值进行阈值操作得到二值图(原创 2017-06-11 10:56:14 · 386 阅读 · 0 评论 -
opencv --图像滤波
图像滤波简介 **滤波实际上是信号处理的一个概念,图像可以看做是一个二维信号,其中像素点灰度值的高低表示信号的强弱 **高频:图像中变化剧烈的部分 **低频:图像中变化,平坦的部分 ** 根据图像高低频特性,设置高通和低通滤波器,高通滤波可以=检测图像中的尖锐,变化明显的地方,低通滤波可以让图像变得平滑,消除噪声干扰 **图像滤波在图像预处理方面应用广泛,图像滤波的好坏决定着后续处原创 2017-06-10 16:08:02 · 457 阅读 · 0 评论 -
opencv 图像的读取显示和保存
opencv图像处理系统组成(个人见解) 图像获取:本地加载图片(jpg,bmp,png) : 相机获取图像Frame Byte : 视频获取数据 :创建图像CreateImage(IPL,cvMat,Mat) 操作处理 :图像加减 ,通道分离合并 ,阈值化,滤波原创 2017-05-31 21:25:29 · 5919 阅读 · 0 评论 -
opencv之直方图计算及绘制
图像直方图概述 直方图是对数据进行统计的一种方法,可以直观表现图像某属性的数据(频率)分布情况,包括灰度直方图,RGB直方图等 相关 概念及函数 &&dims :需要统计的特征数目 ,如只统计灰度值—dims=1,统计RGB值 –dims=3 &&bins:每个特征空间子区域段的数目,也可以称为组距(简单理解为直方图分成几个柱子组成)原创 2017-06-16 20:06:24 · 487 阅读 · 1 评论 -
opencv 摄像头/视频读取_写入
#include"opencv2/opencv.hpp"using namespace cv;using namespace std;void main(){ VideoCapture cap;//视频相关的类 Size size0=Size(568*320) VideoWriter writer("E\\out.avi",CV_FOURCC('X','V','I','D原创 2017-06-01 19:22:05 · 500 阅读 · 0 评论 -
opencv直方图相关及应用
1)直方图均衡化 直方图均衡化是灰度变换的一个重要应用,它是通过拉伸像素强度分布范围来增强图像对比度的一种方法,广泛应用于图像增强处理中。 直方图均衡化是直方图最典型的应用,是图像点运算的一种,对于一幅输入图像,通过运算产生一幅输出图像,点运算是指输出图像的每个像素点的灰度值由输入像素点决定 即: B(x,y)=f[A(x,y)] 直方图均衡化是通过灰度原创 2017-06-17 10:55:49 · 472 阅读 · 0 评论 -
opencv之模板匹配及应用 归一化 寻找最值
1)模板匹配 模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术,模板匹配不是基于直方图的,而是通过在输入图像中滑动图像块(模板)同时比对相似度,来对模板和输入图像进行匹配的一种方法 应用: 1.目标查找定位 2.运动物体跟踪 3其他。。。 因为是模板匹配所以倒置倾斜 相似度会差好多 不适应角度和寻找 不适应尺度变换matchTemplate(InputArray原创 2017-06-18 13:22:04 · 8043 阅读 · 5 评论 -
opencv 视频分解成图片 图片合成视频 批量读取图片
#include"opencv2/opencv.hpp"using namespace cv;using namespace std;void main(){//批量读取图片(有序) char filename[50]; char winname[50]; Mat srcImg; for(int i=0;i<1000;i++) { sprintf(filename,"原创 2017-06-02 21:59:35 · 1551 阅读 · 0 评论 -
opencv之轮廓的查找与绘制
1)什么是轮廓 轮廓可以简单的认为是将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度,提取轮廓就是提取这些具有相同颜色或者灰度的曲线,或者说是连通域,轮廓在形状分析和物体的检测和识别中非常有用注意事项: 1.为了更加准确,要使用二值化图像,在寻找轮廓之前,要进行阈值化处理或者Canny边缘检测 2.查找轮廓的函数会修改原始图像,如果你在查找轮廓之后还想使用原始图像的话,应该将原始图原创 2017-06-19 09:39:21 · 595 阅读 · 0 评论 -
opencv之轮廓的查找与绘制(二)
1)如何访问每一个轮廓 for(int i=0;i< contours.size();i++) { …………. } vector < vector /Point>>contours;//注这有个/是< 的意思 (每个轮廓的点集 size()单个轮廓中点的个数) (所有的轮廓集合 size() 轮廓的个数) 2)如何访问每一个轮廓的所有点 ex原创 2017-06-19 14:58:27 · 462 阅读 · 0 评论 -
opencv访问图像像素及简单应用
图像在内存中的存储方式 注:opencv 的通道顺序是BGR 而不是RGB 可以用isCountinous()判断矩阵是否连续存储 访问图像中像素方法 1)动态地址计算访问Mat img=imread("1.jpg");Mat dst=img.clone();imshow("src",img);int rowNumber=img.rows;//行数int colNumber=img原创 2017-06-07 22:38:32 · 410 阅读 · 0 评论 -
opencv 常用数据结构 Mat类操作
Opencv 常用数据结构 1)Point 类 Point类数据结构表示二维坐标系的点,由坐标x,y指定的2D点,如: Point pt; pt.x=20,pt.y=10; 其他类型——-Point Point2d Point2f Point2i,Point3d,Point3f,Point3i2)Rect 类 Rect 类用来表示矩形,成员有x,原创 2017-06-04 10:50:31 · 465 阅读 · 0 评论 -
opencv常用绘图函数
主要用途:对图像处理的标记 ————————————————————————————————常用绘图函数 line()函数———–用来绘制直线 circle()函数———用于绘制圆 rectangle()函数—-用于绘制矩形 ellispe()函数——–用来绘制椭圆 fillPoly()/polyliness()函数——用来绘制多边形 putText()函数——-用来添加文字 ——原创 2017-06-04 15:09:24 · 428 阅读 · 0 评论 -
opencv之轮廓特征属性及应用(一)
1)凸包 凸包是一个计算机几何图形学中的概念,简单来说,给定二维平面点集,凸包就是能够将最外层的点连接起来构成的凸多边形,他能够包含点集中所有的点,物体的凸包检测常应用在物体识别,手势识别及边界检测等领域寻找凸包–convexHull() void convexHull(InputArray points,OutputArray hulll,bool clockwise=false,bool r原创 2017-06-20 09:49:42 · 1057 阅读 · 0 评论 -
opencv基本图像运算
图像算数运算 1)图像加法 //图像的类型大小必须是一样的 常用函数:+,add(),addWeighted() ex: Mat img1,img2; Mat dst; dst=img1+img2; add(img1,img2,dst);//忽略最后两个参数 addWeightwd(img1,0.5,img2,0.5,0,ds原创 2017-06-08 14:33:28 · 1479 阅读 · 0 评论 -
opencv对比度亮度调整与通道分离
对比度亮度调整 1)原理介绍 g(x)=a*f(x)+b & 参数f(x)表示原图像像素 & 参数g(x)表示输出图像像素 & 参数a(a>0),被称为增益(gain),通常用来控制图像的对比度 亮的越来越亮 & 参数b通常被称为偏置(bias),通常用来控制图像的亮度 g(i,j)=a*f(i,j)+b 方法实原创 2017-06-08 19:58:40 · 1029 阅读 · 0 评论 -
opencv ROI(感兴趣区域)与掩码操作 ROI图像融合
感兴趣区域ROI 1)ROI介绍 **ROI–感兴趣的区域 **一般为矩形区域 **能够定义分析重点,减少处理时间,增减精度 **定义方法: 使用Rect表示矩形区域或者用Range设定行列范围 ex1: Mat img=imread(“1.jpg”); Mat temp=imread(“logo.bmp”); Mat imgageROI=img(R原创 2017-06-08 22:33:19 · 4556 阅读 · 0 评论 -
opencv之轮廓特征属性及应用
1)最小外接矩形 轮廓最小外接矩形–minAreaRect() RotatedRect minAreaRect(InputArray points); **points :输入的二维点集,可以填Mat 类型或std::vector **返回值:RotatedRect类矩形对象,外接旋转矩形主要成员有center,size,angle,points 在opencv中,坐标的原原创 2017-06-21 10:47:50 · 540 阅读 · 0 评论 -
opencv 图像的几何变换
图像缩放—resize() 1)resize()函数 CV_EXPORTS_W void resize(InputArray src,OutputArray dst,Size size,double fx=0,double fy=0,interpolation=INTER_LINEAR); **src:输入图像,Mat 类型即可 dst :输出图像,当非0时 由dsize确定尺寸原创 2017-06-09 16:22:16 · 379 阅读 · 0 评论 -
opencv之特征检测与匹配
1)SIFT特征提取匹配的步骤 A使用SiftFeatureDector的detect方法检测特征存入一个向量(可以使用drawKeypoints在图中标记出来) B使用SiftDescriptorExtractor的compute方法提取特征描述符(特征向量),特征描述符是一个矩阵 C使用匹配器matcher对描述符进行匹配 D匹配结果保存由DMatch的组成的向量里设置距离阈值,使得匹配原创 2017-07-10 10:48:03 · 750 阅读 · 0 评论