![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
opencv
文章平均质量分 73
大流士一世
这个作者很懒,什么都没留下…
展开
-
opencv学习笔记(二)播放视频
dWindo#include int main(int argc,char** argv[]){ cvNamedWindow("Example2",CV_WINDOW_AUTOSIZE); CvCapture* capture = cvCreateFileCapture("1.wmv"); IplImage* frame;原创 2016-12-20 13:54:38 · 478 阅读 · 0 评论 -
opencv学习笔记(十三)利用cvResize函数调整图片尺寸
利用cvResize函数调整图片尺寸原创 2016-12-31 14:13:17 · 5509 阅读 · 0 评论 -
opencv学习笔记(二十一) Sobel算子边缘检测
边缘检测注意,边缘检测对噪声比较敏感,需要先用高斯滤波器对图像进行平滑。 Sobel变换和拉普拉斯变换都是高通滤波器。什么是高通滤波器呢?就是保留图像的高频分量(变化剧烈的部分),抑制图像的低频分量(变化缓慢的部分)。而图像变化剧烈的部分,往往反应的就是图像的边沿信息了。Sobel算子一个最重要并且最基本的卷积是导数的计算(或者是其近似值),有许多方法可以做到,但是只有少数方法适合于给定情原创 2017-01-09 11:24:47 · 1127 阅读 · 0 评论 -
opencv学习笔记(二十三)Canny边缘检测cvCanny()
Canny边缘检测该方法适用于单通道图像,在1986年由J. Canny得到完善,也就是通常所称的Canny边缘检测法。 Canny算法同上节提到的简单的基于拉普拉斯算法的不同点之一是在Canny算法中,首先在x和y方向求一阶导数,然后组合为4个方向的导数。这些方向导数达到局部最大值的点就是组成边缘的候选点。 然而,Canny算法最重要的一个新特点是其试图将独立边的候选像素拼装成轮廓。 轮廓的形原创 2017-01-15 14:27:11 · 6479 阅读 · 0 评论 -
opencv学习笔记(二十五)霍夫圆变换
霍夫圆变换与之前所描述的霍夫直线变换是大体上是类似的。说“大体上类似”的原因是——如果想要尝试完全类似——累加平面会被三维的累加容器所代替:在这三维中,一维是x,一维是y,另一维是圆的半径r。这就意味着需要大量的内存但速度却很慢。在OpenCV的应用中可以通过一个比较灵活的霍夫梯度法来解决圆变换的这一问题。 霍夫梯度法的原理如下。首先对图像应用边缘检测(这里用cvCanny ( )。然后,对边缘图原创 2017-02-18 10:02:26 · 1445 阅读 · 0 评论 -
opencv学习笔记(二十六)直方图有关的操作
直方图匹配在分析图像、物体和视频信息的过程中,我们常常想把眼中看到的对字用直方图(histogram)表示。直方图可以用来描述各种不同的事情,如物体的色彩分布、物体边缘梯度模板,以及表示目标位置的当前假设(目标当前位置的假设)的概率分布。直方图广泛应用于很多计算机视觉应用中。通过标记帧与帧之间显著的边缘和颜色的统计变化,直方图被用来检测视频中场景的变换。通过为每个兴趣点设置一个有相近特征的直方图所构原创 2017-02-19 19:11:53 · 2627 阅读 · 0 评论 -
opencv学习笔记(二十四)霍夫线变换
霍夫变换霍夫变换是一种在图像中寻找直线.、圆及其他简单形状的方法。 原始的霍夫变化是一种直线变换,即在二值图像中寻找直线的一种相对快速方法。变换可以推广到其他普通的情况,而不仅仅是简单的直线。 这个网站原理说的挺清楚 http://www.tuicool.com/articles/Mn2EBn霍夫线变换霍夫直线变换的基本理论是二值图像中的任何点都可能是一些候选直线集合的一部分。如果要确定每条线原创 2017-01-20 16:31:04 · 3506 阅读 · 0 评论 -
opencv学习笔记(二十八)直方图程序的改进版
改进实例1——加一个进度条控制横坐标bin#include <opencv2/opencv.hpp>#include <iostream> using namespace std; #define cvQueryHistValue_1D( hist, idx0 ) ((float)cvGetReal1D( (hist)->bins, (idx0)))int hist_size= 200;原创 2017-02-21 09:17:27 · 358 阅读 · 0 评论 -
opencv学习笔记(二十九)绘制一个RGB三色直方图
#include <opencv2/opencv.hpp>#define cvQueryHistValue_1D( hist, idx0 ) ((float)cvGetReal1D( (hist)->bins, (idx0)))//绘制直方图IplImage* DrawHistogram(CvHistogram* hist , float scaleX = 1 , float scaleY =原创 2017-03-03 12:30:27 · 1239 阅读 · 0 评论 -
opencv学习笔记(三十二)模板匹配
模板匹配的工作方式 模板匹配的工作方式跟直方图的反向投影基本一样,大致过程是这样的:通过在输入图像上滑动图像块对实际的图像块和输入图像进行匹配。 假设我们有一张100x100的输入图像,有一张10x10的模板图像,查找的过程是这样的: (1)从输入图像的左上角(0,0)开始,切割一块(0,0)至(10,10)的临时图像; (2)用临时图像和模板图像进行对比,对比结果记原创 2017-03-08 09:08:53 · 1110 阅读 · 0 评论 -
opencv学习笔记(三十三)多匹配——查找多个对象
参考这个: http://www.lxway.com/4464155816.htm程序实例:#include <opencv2/opencv.hpp>CvPoint getNextMinLoc(IplImage* result , int templatWidth,int templatHeight,double maxValIn , CvPoint lastLoc){ int y原创 2017-03-09 09:09:30 · 6105 阅读 · 1 评论 -
opencv学习笔记(三十)反向投影
小知识: HSV中的H分量,则大概对光线的变化会不敏感。如果选择的是V分量,当然光线的变量会影响结果了。如果选择的是图像的梯度,那就是检查纹路的了。等等。 工作原理: 简单的讲, 所谓反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的该特征。 我们使用肤色直方图为例来解释反向投影的工作原理: 假设你已经通过下图得到一个肤色直方图(Hue-Saturation)原创 2017-03-06 12:38:22 · 1813 阅读 · 0 评论 -
opencv学习笔记(三十四)内存和序列
1、内存 OpenCV使用内存存储器(memory storage)来统一管理各种动态对象的内存。内存存储器在底层被实现为一个有许多相同大小的内存块组成的双向链表,通过这种结构,OpenCV可以从内存存储器中快速地分配内存或将内存返回给内存存储器。 OpenCV中基于内存存储器实现的函数,经常需要向内存存储器申请内存空间(特别是那些返回动态结果的函数)。 内存存储器可以通过以下四个函数访问:原创 2017-03-10 20:34:27 · 1596 阅读 · 0 评论 -
opencv学习笔记(三十一)基于块的反向投影
参考了这篇文章 http://blog.csdn.net/fdl19881/article/details/6726438 检测原理: 书上说的很麻烦,按照博主的理解就很简单: cvCalcBackProjectPatch的大概意义 ,按我的理解的话,应该是通过块窗口搜索图像,比较窗口中对应像素的二维直方图与给定直方图的差异,若完全相同,那当然就越匹配。 对于不同的相关度方法,越匹原创 2017-03-07 16:59:00 · 882 阅读 · 0 评论 -
opencv学习笔记(三十五)查找轮廓
现在终于可以讨论轮廓的问题了。首先我们需要了解轮廓到底是什么?一个轮廓一般对应一系列的点,也就是图像中的一条曲线。表示方法可能根据不同情况而有所不同。有多种方法可以表示曲线。在OpenCV中一般用序列来存储轮廓信息。序列中的每一个元素是曲线中一个点的位置。关于序列表示的轮廓细节将在后面讨论,现在只要简单把轮廓想像为使用CvSeq表示的一系列的点就可以了。1、cvFindCantours()寻找轮廓原创 2017-03-11 09:48:57 · 2556 阅读 · 0 评论 -
opencv学习笔记(十二)腐蚀和膨胀
这是一个先腐蚀后膨胀的程序。原创 2016-12-30 21:04:25 · 450 阅读 · 0 评论 -
opencv学习笔记(二十)自适应阈值cvAdaptiveThreshold ()
这是一种改进了的阈值技术,其中阈值本身是一个变量。在OpenCV中,这种方法由函数cvAdaptiveThreshold ( ) 来实现。 此函数只能处理单通道8位图像或浮点图像,它要求源图像和目标图像不能使用同一图像。cvAdaptiveThreshold()定义: void cvAdaptiveThreshold( const CvArr* src, CvArr* dst,原创 2017-01-07 18:43:21 · 1380 阅读 · 0 评论 -
opencv学习笔记(三)视频播放控制
这个程序我们通过通过加入滚动条来控制视频的播放。代码如下:#include using namespace std; using namespace cv; int g_slider_position = 0; int n = 0; //定义一个全局变量,控制滚动条的位置 CvCapture *g_capture = NULL; /*原创 2016-12-21 21:42:22 · 1388 阅读 · 0 评论 -
opencv学习笔记(十四)图像金字塔
图像金字塔被广泛用于各种视觉应用中。图像金字塔是一个图像集合,集合中所有的图像都源于同一个原始图像,而且是通过对原始图像连续降采样获得,直到达到某个中止条件才停止降采样。原创 2017-01-01 21:13:49 · 544 阅读 · 0 评论 -
opencv学习笔记(四)高斯滤波
上代码:#include "highgui.h"#include "cv.h"void example2_4( IplImage* image ){IplImage* out = cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,3);cvSmooth( image, out, CV_GAUSSIAN, 3, 3 );cvS原创 2016-12-22 20:36:05 · 1418 阅读 · 0 评论 -
opencv学习笔记(十六)利用cvGetSubRect截取图像
利用cvGetSubRect来截取图像原创 2017-01-03 15:49:01 · 5988 阅读 · 0 评论 -
opencv学习笔记(五)缩小图片到原来的1/2
#include "highgui.h" #include "cv.h" IplImage* doPyrDown(IplImage* in, int filter = IPL_GAUSSIAN_5x5) { assert(in->width % 2 == 0 && in->height % 2 == 0); IplImage*原创 2016-12-23 20:22:05 · 2521 阅读 · 1 评论 -
opencv学习笔记(六)二值化以及边缘检测
#include IplImage* doCanny(IplImage* in,double lowThresh,double highThresh,double aperture){ if(in->nChannels!=1) return(0);//Canny只能处理灰度图 IplImage* out = cvCreateImage(原创 2016-12-24 19:26:43 · 5108 阅读 · 0 评论 -
opencv学习笔记(七)从电脑摄像头读入数据
#include"highgui.h"#include"cv.h"//从摄像头中读入数据int main(int argc,char** argv){cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);CvCapture* capture; //初始化一个CvCapture结构的指针if(argc==1){capture=c原创 2016-12-25 18:52:05 · 1051 阅读 · 0 评论 -
opencv学习笔记(一)读入一幅图片
这是一个opencv打开图片的简单程序。原创 2016-12-19 19:15:33 · 2019 阅读 · 0 评论 -
opencv学习笔记(十七)利用cvPyrSegmentation()做图像分割
图像分割的意义:在一幅图像中,人们常常只对其中的部分目标感兴趣,这些目标通常占据一定的区域,并且在某些特性(如灰度、轮廓、颜色和纹理等)上和临近的图像有差别。原创 2017-01-04 15:56:58 · 2847 阅读 · 0 评论 -
opencv学习笔记(九)捕获摄像头的视频并保存成avi格式
这个程序引用自下面的博客,但是运行之后我发现视频保存之后,要利用前面提到的opencv播放视频程序播放,不能用普通播放器播放——而且用前面的opencv程序播放时,图像是倒置的,需要我们在程序里面改一下。在while(1)里面加上一句 cvFlip(frame, NULL, 0 );//翻转图像 http://blog.csdn.net/augusdi/article/details原创 2016-12-27 19:31:24 · 2100 阅读 · 1 评论 -
opencv学习笔记(十)画直线、矩形、圆形、椭圆以及多边形程序
opencv常见的画几何图形的函数原创 2016-12-28 14:22:56 · 2860 阅读 · 0 评论 -
opencv学习笔记(十八)cvSplit()、cvMerge()彩色图片通道分割与融合
18.1cvSplit()cvSplit()是openCV中的一个函数,它分别复制每个通道到多个单通道图像。 定义: void cvSplit( const CvArr* src, CvArr* dst0, CvArr* dst1, CvArr* dst2, CvArr* dst3 ); 作用: cvSplit()函数将复制src的各个通道到图像dst0,dst1,dst2和dst3中。如果原创 2017-01-05 15:23:04 · 3625 阅读 · 0 评论 -
opencv学习笔记(十一)利用鼠标画出一个矩形
利用鼠标画出一个矩形。原创 2016-12-29 17:09:40 · 3851 阅读 · 0 评论 -
opencv学习笔记(十五)利用cvSetImageROI()对图像部分区域进行操作
这是一个对图像部分区域进行操作的程序原创 2017-01-02 20:52:15 · 8073 阅读 · 0 评论 -
opencv学习笔记(十九)单通道固定阈值cvThreshold()以及自适应阈值化 OTSU算法
cvThreshold 对单通道数组应用固定阈值操作。该函数的典型应用是对灰度图像进行阈值操作得到二值图像原创 2017-01-06 18:42:41 · 2030 阅读 · 0 评论 -
opencv学习笔记(三十六)距离变换
距离变换cvDistTransform() 距离变换于1966年被学者首次提出,目前已被广泛应用于图像分析、计算机视觉、模式识别等领域,人们利用它来实现目标细化、骨架提取、形状插值及匹配、粘连物体的分离等。距离变换是针对二值图像的一种变换。在二维空间中,一幅二值图像可以认为仅仅包含目标和背景两种像素,目标的像素值为1,背景的像素值为0;距离变换的结果不是另一幅二值图像,而是一幅灰度级图像,即原创 2017-03-13 16:01:51 · 3548 阅读 · 0 评论