- 博客(15)
- 资源 (2)
- 收藏
- 关注
原创 【opencv学习之四十二】简单运动检测
视频运动检测基本思想是进行每一帧对比,检测不同然后得出是否运动,一般分为两种,背景法和差帧法;背景法是:将一幅图作为背景,让后和每一帧对比;缺点是一开始存入的背景可能随光照变法而造成错误,但是可以用在光照环境稳定的地方,优点是可以检测之前背景没有的景象;差帧法是:将前一帧和后一帧进行对比;缺点是无法对运动后突然又静止的景象进行识别,优点是光照不影响;实例背景法://////////////////...
2018-02-22 20:55:49 1637
原创 【opencv学习之四十一】SIFT和SUFT算法
SIFT和SUFT算法是有相关专利的,所以在opencv中属于"nonfree"里的,在opencv2.x.x版本可能还有保留,但是在opencv3.x.x后就没有了,需要单独下载opencv_contrib库,然后自己Cmake;相关算法的详解这里不做过多解释了,推举两个大神博客:1.小魏的修行的博客:http://blog.csdn.net/xiaowei_cqu/article/detail...
2018-02-21 22:22:58 10070
原创 【opencv学习之四十】角点检测
图像的角点通常被定义为两条边的交点,或者灰度值急剧变化的点;角点作为图像上的特征点,在很多图像识别等应用具有很好特征识别性;openCV实现的角点算法主要有:cornerHarris(),goodFeaturesToTrack(Shi-Tomasi)和cornerSubPix();其中cornerHarris()角点检测是一种直接基于灰度值的角点提取算法,其原理是通过对每一个像素(x,y)在blo...
2018-02-21 19:33:20 433
原创 【opencv学习之三十九】背景分割和漫水填充
openCV中实现了背景分割算法——grabCut()和漫水填充算法——floodFill();其中GrabCut算法是调用仅需要确认前景和背景输入,该算法就可以完成前景和背景的相对最优的分割;该算法利用了图像中的纹理信息和边界反差信息,来进行分割,和分水岭算法比较类似,但是速度挺慢的,结果好于分水岭;floodFill漫水填充算法比较常见,图画中的填充色用的就是这个算法;原理也比较简单就是遍历封...
2018-02-21 18:28:26 1768
原创 【opencv学习之三十八】图像的分水岭算法
分水岭算法主要根据图像梯度将图像分割成“山”和“谷”;一般图像噪声经常干扰分水岭算法的分割,所以一般采用标记的方法来给分水岭算法提供灰度级参考,来更换的分割图像;从效果来说比普通的灰度阈值分割效果要好;算法的具体原理和实现可参考网上的详解;原函数及解释:CV_EXPORTS_W void watershed( InputArray image, InputOutputArray markers )...
2018-02-21 11:52:37 958
原创 【opencv学习之三十七】图像的矩及矩的匹配
图像的矩是归一化的灰度级图像的二维随机变量的概率密度,是一个统计学特征。OpenCV中实现了这个矩的算子是Moments();其中分为零阶矩M00、一阶矩M10和M01、二阶矩M20,M02和M11;其中当图像为二值图时,M00是图像面积(白色区域)的总和,或者说连通域的面积;而这时M10和M01是图像白色区域上x和y坐标值的累计,所以图像的的重心(Xc,Yc)可以由:Xc=M10/M00;Yc=...
2018-02-11 20:36:43 4342
原创 【opencv学习之三十六】轮廓特征应用:计算点与轮廓距离
opencv实现了Contours与point的距离关系的计算使用起来很方便,不用自己再进行坐标转换计算了;示例代码如下:void imgContoursPoint()//26轮廓与点的距离计算{ //1.查找轮廓前的预处理 Mat srcImg = imread("D:/ImageTest/11.png"); Mat copyImg = srcImg.clone()
2018-02-06 23:32:46 5760
原创 【opencv学习之三十五】轮廓特征应用:按轮廓剪切图像ROI
将轮廓剪切出来然后单独保存到一个文件夹里,基本方法是通过轮廓最小外接矩形来对图像进行ROI剪切操作,然后将剪切后的图像保存到文件夹里,循环此操作直到轮廓遍历完成;下面实现代码:void imgContoursROI()//轮廓roi{ //1.查找轮廓的预处理 Mat srcImg = imread("D:/ImageTest/convex.png"); Mat co
2018-02-06 23:20:36 6996 5
原创 【opencv学习之三十四】轮廓特征应用:最小外接矩形和圆
opencv轮廓特征中有外接矩形和圆,其中外接矩形又分为平行窗口矩形和不平行窗口矩形;外接圆也分为正圆和椭圆两种;基本调用方法类似,都是contours中的一个属性,调用就可获取最小特征参数;话不多说直接代码:最小外接矩形:void imgminRect()//轮廓最小外接矩形{ Mat img=imread("D:/ImageTest/convex.png");//加载图片
2018-02-06 23:06:21 4792
原创 【opencv学习之三十三】轮廓特征应用:凸包
凸包这个概念学术上讲的比较深,通俗简单来说(当然不太准确)就是轮廓最外侧点的连线形成的区域结果,例如下面样子:外面红色轮廓就是凸包的结果:贴一下简单用于的代码:void imgConvex()//25.轮廓凸包{ Mat img=imread("D:/ImageTest/convex.png");//加载图片 Mat dst; cv::cvtColor
2018-02-06 21:27:16 1218
原创 【opencv学习之三十二】轮廓查找并统计2
关于opencv在图像中查找轮廓并统计的方法基本这样几个步骤:1、读取图像——2、前期处理滤波平滑等——3、分割图像,一般阈值分割——4、FindContours查找轮廓——5、统计轮廓——6、根据连通域面积大小过滤轮廓——7、染色需要显示的轮廓——8、显示图像;上个数米的程序例子是用opencv2写的,很多方法都带cv前缀,下面用opencv3进行轮廓查找并统计:void imgCont
2018-02-06 21:05:15 1361
原创 【opencv学习之三十一】轮廓查找并统计 数米实例
opencv有几个经典实例,其中一个关于轮廓查找并统计的实例,数米粒的实验代码,这里简单贴出来:/****************************************************************************************\* 25 查找并计算米粒的数量
2018-02-05 23:01:59 2713
原创 【opencv学习之三十】简单模板匹配matchTemplate
opencv实现了一部分通过模板与目标图像进行寻找最佳匹配的方面matchTemplat();这个方法网上有很多讲解,基本思想是将模板图像在目标图像上滑动逐一对比,通过统计的基本方法进行匹配,比如方差检验,相关性检验等方法来寻找最佳匹配;话不多多说吧,从网上找到的一些实验代码,实验了一下:1简单匹配代码://模板匹配,简单的寻找拷贝图,效果一般void ImgMatch()//图像匹配{ ...
2018-02-05 22:42:18 6147
原创 【opencv学习之二十九】彩色分割
图像的色彩分割其实原理差不多,也是根据图像的rgb色彩组成,设置分割区间来将颜色分开来;比如Scalar(100,100,100)-Scalar(150,150,150)间的色彩分割出来;但是rgb颜色分割时候,rgb值往往不是连续性的,比如下面:淡蓝色深蓝色啊中间并不递增分布的,所以用rgb彩色分割效果一般,一般采用HSV等方法分割;代码示例rgb分割:int img_B,i
2018-02-05 00:21:04 6502 2
原创 【opencv学习之二十八】直方图补充及直方图匹配
之前有写过直方图,这里补充一些实验代码和总结,另外补充直方图匹配的代码;分通道计算和绘制直方图:void imgHistogram()//直方图-一维灰度直方图{ ///一维灰度直方图 //1.计算直方图 Mat srcImg = imread("D:/2.jpg"); // Mat srcImg = imread("D:/ImageTest/p
2018-02-01 00:10:17 441
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人