opencv
文章平均质量分 72
Bruce_Zeng
这个作者很懒,什么都没留下…
展开
-
Opencv2.2版本以上CvvImage类的使用
前段时间一直在学习opencv,但学习过程中写的例子都是基于控制台的。今天打算把之前写的一些例子都移植到MFC中,基本上就是复制以前的代码,唯一的区别在于在控制台中,显示图像是先创建一个窗口,然后在窗口中显示图像,然而在MFC中,一般是将图像显示在一个picture控件中,这样就得用到CvvImage类啦,但是这里有一个问题,那就是Opencv2.2以上版本不再原创 2012-10-08 17:22:00 · 7788 阅读 · 6 评论 -
opencv 反向投影 cvCalcBackProject的示例 ,用图像中某中颜色的区域
在学习 《学习opencv》的cvCalcBackProject时自己写的例子#include #include #include #include #include using namespace std;int main(){ IplImage *src = cvLoadImage("f:\\images\\hand00.jpg"); IplImage *hsv_src转载 2012-10-27 19:08:39 · 1756 阅读 · 0 评论 -
使用反向块投影搜寻图像中的物体 cvCalcBackProjectPatch
这篇讲的是使用函数cvCalcBackProjectPatch()在一幅图中寻找某个特定的小物体。先简单讲下这个函数吧,cvCalcBackProject()计算一个像素是否是一个已知目标的一部分,cvCalcBackProjectPatch()计算一块区域是否包含已知的目标。函数cvCalcBackProjectPatch()在整个输入图像使用一个滑动窗口,如图1所示。在输入原创 2012-10-29 15:43:35 · 3314 阅读 · 0 评论 -
windows下安装opencv
opencv(open source computer vision library)是一个基于C/C++语言的开源图像函数处理库。它的主要模块包括:cv —— 核心函数库cvaux —— 辅助函数库cxcore —— 数据结构与线性代数库highgui —— GUI函数库ml —— 机器学习函数库opencv是跨平台的,支持包括windows、un转载 2012-09-09 20:15:21 · 10395 阅读 · 0 评论 -
逐点绘出检测出的轮廓图
#include#include#includeusing namespace std;int main(){ int i = 0; int mode = CV_RETR_EXTERNAL; int contours_num = 0; CvMemStorage* storage = cvCreateMemStorage(0); CvSeq* contour = 0; Ipl原创 2012-09-20 20:28:32 · 1323 阅读 · 0 评论 -
cvApproxPoly的学习
这是一个轮廓的多边形轮廓逼近函数,这个函数用指定精度逼近一个或多个 曲线,并返回逼近结果。一开始觉得这个函数没什么必要,因为如果只是要简单的提取和显示图像轮廓的话只要cvFindContours函数就够了,那么为什么还要这个函数呢?后来百度了下,在opencv论坛上找到了答案。首先,轮廓的多边形逼近指的是:使用多边形来近似表示一个轮廓。其次,多边形逼近的目的是为了减少轮廓的顶点数目。但多边形逼原创 2012-10-15 20:53:50 · 25822 阅读 · 7 评论 -
由点集序列或数组创建凸边形
下面是一个有点集序列或数组创建凸边形的简单示例#include#include#include#define ARRAY 0int main(){ IplImage* img = cvCreateImage (cvSize(500, 500), 8, 3); cvNamedWindow ("hull", 1);#if ! ARRAY CvMemStorage* st原创 2012-10-17 10:21:51 · 2104 阅读 · 0 评论 -
opencv 实现加载并显示图像
学习 opencv 写的第一个程序,特此纪念!#include #include int main(){ IplImage* pImg; if ((pImg = cvLoadImage("test.bmp", 1)) != 0) { cvNamedWindow ("Image", 1); cvMoveWindow ("Image", 0, 0); cv原创 2012-09-12 02:04:17 · 5325 阅读 · 1 评论 -
opencv 中通过鼠标和键盘操作实现图像的平移
通过鼠标和键盘的操作来实现图像的平移,操作方法:用鼠标的话直接拖动图像即可,用键盘的话,使用wsad四个键来控制图像平移方向,w上,s下,a左,d右。#include #include IplImage* org = 0;IplImage* tmp = 0;IplImage* dst = 0; CvRect rect; //保存图像显示区域v原创 2012-09-12 19:19:04 · 6036 阅读 · 0 评论 -
Hough变换
霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。霍夫变换于1962年由Paul Hough 首次提出[53],后于1972年由Richard Duda和Peter Hart推广使用[54],经典霍夫变换用来检测图像中的直线,原创 2012-10-13 15:49:48 · 1865 阅读 · 0 评论 -
提取并显示图像轮廓
Opencv中提供了很多关于图像轮廓处理的函数,这里我用cvFindContours函数来提取轮廓,并用cvDrawContours函数将提取的轮廓画出来。函数cvFindContours的第一个参数就是我们要进行提取轮廓的目标图像,这里要注意,这个图像必须是一个二值图。得到二值图的方法有很多,这里我采用的是cvThreshold函数,通过设置阀值来得到相应的二值图。当然,这里阀值的选择根据不同的原创 2012-10-15 13:44:08 · 2984 阅读 · 0 评论 -
几种边缘检测的方法
这里主要讲下通过 Sobel算子、Laplace算子、Canny算子来实现图像的边缘检测,先来看下Sobel算子的实现:#include#includeint main(){ IplImage* pImage = NULL; IplImage* pImgSobelgray = NULL; IplImage* pImg8u = NULL; IplImage* pImg8uSm原创 2012-09-26 00:56:56 · 3203 阅读 · 0 评论 -
直方图用法示例
这个程序根据输入的图像计算出一个色相饱和度直方图,然后利用网格的方式将直方图以网格形式显示。Code:#include#include#includeint main(){ IplImage* src = NULL; src = cvLoadImage ("lena.jpg", 1); IplImage* hsv = cvCreateImage (cvGetSize(s原创 2012-10-27 14:52:41 · 2526 阅读 · 0 评论 -
距离变换(cvDistTransform)
距离变换的一些简单介绍简介图像的距离变换被定义为一幅新的图像,该图像的每个输出像素被设成与输入像素中0像素最近的距离。显然,典型的距离变换的输入应为某些边缘图像。在多数应用中,距离变换的输入是例如Canny 边缘检测的检测图像的转换输出(即边缘的值是0,非边缘的是非0)。示例代码#include#includeint main(){ Ipl原创 2012-10-25 20:48:05 · 4556 阅读 · 0 评论 -
Opencv实现图像旋转
#include "cv.h"#include "highgui.h"int main(){ double degree = 30; // rotate 30 degree double angle = degree * CV_PI / 180.; // angle in radian double a = sin(angle), b = cos(angle); // sine a原创 2012-10-16 15:08:32 · 1855 阅读 · 0 评论 -
目标检测
在目标检测方法中,首先利用样本(大约几百幅样本图片)的Haar特征进行分类器训练,得到一个联级的boosted分类器。训练样本分为正例样本和反例样本,其中正例样本是指待检测目标样本,反例样本指其他意图片,所有的样本图片都被归一化为同样的大小(如20*20)。分类器训练完以后,就可以应用于输入图像中的感兴趣区域(与训练样本相同的大小)的检测。检测到目标域分类器输出为1,否则输原创 2012-10-18 20:39:57 · 13410 阅读 · 0 评论 -
图像处理和图像识别中常用的OpenCV函数
1、cvLoadImage:将图像文件加载至内存2、cvNamedWindow:在屏幕上创建一个窗口3、cvShowImage:在一个已创建好的窗口中显示图像4、cvWaitKey:使程序暂停,等待用户触发一个按键操作5、cvReleaseImage:释放图像文件所分配的内存6、cvDestroyWindow:销毁显示图像文件的窗口7、cvCreateFileCapture原创 2012-10-20 13:00:32 · 3778 阅读 · 1 评论 -
OpenCV 2.2.0 摄像头捕获视频问题的解决
OpenCV升级到2.2之后,原来写的用摄像头捕获视频的程序用不了。经过Google发现这是一个OpenCV2.2已知的错误,解决的方案如下所述。 进入OpenCV的根目录,找到/modules/highgui/src/precomp.hpp这个文件,将其中的代码#if !defined WIN32 && !defined _WIN32#include "cvco转载 2012-10-19 21:46:18 · 1616 阅读 · 0 评论 -
图像金字塔
图像金字塔被广泛用于各种视觉应用中。图像金字塔是一个图像集合,集合中所有的图像都源于同一个原始图像,而且是通过对原始图像连续降采样活得,直到达到某个中止条件才停止降采样。(当然,降为一个像素肯定是中止条件。)有两种类型的图像金字塔常常出现在文献和应用中:高斯金字塔用来向下降采样图像,而拉普拉斯金字塔则用来从金字塔低层图像中向上采样重建一个图像。要从金字塔第 i原创 2012-10-21 14:54:35 · 13498 阅读 · 0 评论 -
OpenCV 2.4.2在VS2010下的安装(使用预编译库)
1)在网站上下载OpenCV安装包(目前最新版本是2.4.2)下载地址:http://opencv.org/选择OpenCV for Windows进行下载2)右键OpenCV-2.4.2.exe,在Windows 7下要选择,以管理员身份运行,在弹出窗口中选择解压路径,将其解压到某一目录下,如:C:\ProgramFiles (x86)\opencv。3)配置VC转载 2012-10-13 16:45:02 · 1173 阅读 · 0 评论 -
基于Hough变换检测圆
#include#includeint main(){ IplImage* src = NULL; IplImage* dst = NULL; IplImage* color = NULL; src = cvLoadImage ("circle.jpg", 1); dst = cvCreateImage (cvGetSize(src), IPL_DEPTH_8U, 1); i原创 2012-10-22 16:54:30 · 2060 阅读 · 0 评论 -
透视变换实例
#include#includeint main(){ CvPoint2D32f srcTri[4], dstTri[4]; CvMat* warp_mat = cvCreateMat (3, 3, CV_32FC1); IplImage* src = NULL; IplImage* dst = NULL; src = cvLoadImage ("len原创 2012-10-23 19:31:21 · 1772 阅读 · 0 评论 -
仿射变换实例
#include#includeint main(){ CvPoint2D32f srcTri[3], dstTri[3]; CvMat* rot_mat = cvCreateMat (2, 3, CV_32FC1); CvMat* warp_mat = cvCreateMat (2, 3, CV_32FC1); IplImage* src = NUL原创 2012-10-23 19:09:24 · 2026 阅读 · 0 评论 -
对数极变换示例
#include#includeint main(){ IplImage* src = NULL; src = cvLoadImage ("fruits.jpg", 1); IplImage* dst = cvCreateImage (cvGetSize(src), 8, 3); IplImage* src2 = cvCreateImage (cvGetSize(src), 8,原创 2012-10-25 16:07:55 · 1438 阅读 · 0 评论