随笔分类 -  OpenCV

摘要:如何利用OpenCV持久化自己的数据结构?我们来看看OpenCV中的一个例子。MyData.hpp定义自己的数据结构MyData如下:#ifndef MYDATA_HPP#define MYDATA_HPP#include #include #include using namespace std;using namespace cv;class MyData{public: MyData() : A(0), X(0), id() {} explicit MyData(int) : A(97), X(CV_PI), id("mydata1234") // explicit 阅读全文
posted @ 2013-12-28 22:22 阳光守望者 阅读(1594) 评论(0) 推荐(1) 编辑
摘要:在OpenCV中,采用FileStorage类进行数据持久化,可以采用XML或YAML格式存储数据。将数据写入XML或YAML文件,可采用以下步骤:1、创建FileStorage对象。可以调用构造函数FileStorage::FileStorage(),并传入文件名参数;或者调用默认构造函数,然后调用FileStorage::open()。2、利用重载输出操作符 static inline FileStorage& operator fs; //! structs; //!#include #include #include void writeYAML(){ cv::FileStor 阅读全文
posted @ 2013-12-26 21:00 阳光守望者 阅读(5831) 评论(0) 推荐(1) 编辑
摘要:如果一幅图像的区域中显示的是一种结构纹理或者一个独特的物体,那么这个区域的直方图可以看作一个概率函数,他给的是某个像素属于该纹理或物体的概率。所谓反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找测试图像中存在的该特征。利用Hue直方图解释反向投影原理:1、获取测试图像中每个像素的hue数据 hi,j,并找到 hi,j在hue直方图中的bin的位置。2、查询hue直方图中对应bin的数值。3、将该数值存储在新的图像中(BackProjection),也可以先归一化hue直方图数值到0-255范围,这样可以直接显示BackProjection图像(单通道图像)。4、通过对测试图像每个像 阅读全文
posted @ 2013-12-19 14:52 阳光守望者 阅读(15788) 评论(1) 推荐(1) 编辑
摘要:直方图可以用来描述各种不同的事物,如物体的色彩分布、物体边缘梯度模板,以及表示目标位置的当前假设。简单的说,直方图就是对数据进行统计,将统计值组织到一系列事先定义好的bin中。bin中的数值是从数据中计算出特征的统计量,这些数据可以是诸如梯度、方向、色彩或者任何其他特征。无论如何,直方图获得的是数据分布的统计图。通常直方图的维数要低于原始数据。具体可参见:http://docs.opencv.org/doc/tutorials/imgproc/histograms/histogram_calculation/histogram_calculation.html#histogram-calcul 阅读全文
posted @ 2013-12-06 16:20 阳光守望者 阅读(4990) 评论(0) 推荐(0) 编辑
摘要:OpenCV的颜色空间转换函数:C++:voidcvtColor(InputArraysrc, OutputArraydst, intcode, intdstCn=0)参数dstCn原来一直沿用CV_BGR2GRAY,CV_RGB2GRAY,CV_GRAY2BGR,CV_GRAY2RGB等格式,但最新几个版本的OpenCV已改为COLOR_BGR2GRAY类似形式,今天才看源代码imgproc.hpp才发现,但官方文档还没修改,如下图,如果程序中使用较新的版本OpenCV,采用CV_BGR2GRAY可能会一直出错。新的OpenCV中imgproc.hpp的定义如下:enum{ COLOR... 阅读全文
posted @ 2013-12-04 14:39 阳光守望者 阅读(89080) 评论(3) 推荐(1) 编辑
摘要:Image Watch是在VS2012上使用的一款OpenCV工具,能够实时显示图像和矩阵Mat的内容,跟Matlab很像,方便程序调试,相当好用。跟VS2012配合使用,简直就是一款神器!让我一下就爱上它了!第一次看到Image Watch是今年3、4月份的时候,当时是在微博上看到新闻,点击链接的下载页面一直出问题,后面就忘了这事,昨天碰巧在OpenCV主页看到OpenCV2.4.5的Change Logs里面有链接,点进能下载果断试用下啊!闲话少说,先看看部分相关链接。1、Image Watch 的下载链接。2、OpenCV关于Image Watch的介绍页面链接。3、OpenCV2.4. 阅读全文
posted @ 2013-06-28 20:18 阳光守望者 阅读(25269) 评论(11) 推荐(5) 编辑
摘要:以前做项目用到OpenCV的库时,习惯把OpenCV目录下lib文件夹中所有的lib文件都添加到工程的依赖库中,当时很傻很天真,一个一个把lib名字复制粘贴过去。现在,OpenCV的库越来越多,老这样做不仅麻烦,而且显得不专业,效率不高。去年年底接触Python之后,赶脚用起来非常方便,但一直还停留在书本上,没用在实际项目中,于是先弄两个小脚本提高下做项目的效率。1、提取Debug版本的OpenCV库文件。 1 import sys 2 import glob 3 import os 4 if len(sys.argv) < 3 : 5 print 'usage: filenma 阅读全文
posted @ 2013-04-03 11:20 阳光守望者 阅读(1035) 评论(0) 推荐(0) 编辑
摘要:OpenCV(计算机视觉库)2.4.4版本已经发布了,OpenCV发展到现在,由最初的C接口变成现在的C++接口,让开发者写程序越来越简单,接口越来越合理,也不用担心内存释放问题。但要理解内部的一些实现机制,还真要费点功夫,这对开发者的C++基础要求越来越高。本文就是笔者在做项目过程中的一点感悟,由C++泛型句柄类思考OpenCV的Ptr模板类的实现。1、C++泛型句柄类我们知道在包含指针成员的类中,需要特别注意类的复制控制,因为复制指针时只复制指针中的地址,而不会复制指针指向的对象。这将导致当两个指针同时指向同一对象时,很可能一个指针删除了一对象,另一指针的用户还认为基础对象仍然存在,此时就 阅读全文
posted @ 2013-03-24 22:44 阳光守望者 阅读(9825) 评论(5) 推荐(6) 编辑
摘要:以前对PCA算法有过一段时间的研究,但没整理成文章,最近项目又打算用到PCA算法,故趁热打铁整理下PCA算法的知识。本文观点旨在抛砖引玉,不是权威,更不能尽信,只是本人的一点体会。主成分分析(PCA)是多元统计分析中用来分析数据的一种方法,它是用一种较少数量的特征对样本进行描述以达到降低特征空间维数的方法,它的本质实际上是K-L变换。PCA方法最著名的应用应该是在人脸识别中特征提取及数据维,我们知道输入200*200大小的人脸图像,单单提取它的灰度值作为原始特征,则这个原始特征将达到40000维,这给后面分类器的处理将带来极大的难度。著名的人脸识别Eigenface算法就是采用PCA算法,用一 阅读全文
posted @ 2013-03-20 12:20 阳光守望者 阅读(29261) 评论(4) 推荐(0) 编辑
摘要:利用拉普拉斯算子进行图像锐化是数字图像处理里比较简单的处理手段,下面的例子参考opencv 2 computer vision application programming cookbook,采用两种方法对输入图像进行拉普拉斯锐化,原理比较简单,故不赘述了。编译环境:VS2010+OpenCV2.3.1编程细节:函数的形参表中,为了防止修改输入图像image,故形参传递为pass by conference-const,同时函数体中指向输入图像的指针也必须声明为指向const对象的指针,如const uchar *next = image.ptr<const uchar>(j); 阅读全文
posted @ 2012-08-12 20:07 阳光守望者 阅读(37247) 评论(5) 推荐(1) 编辑