openCV
末叶
这个作者很懒,什么都没留下…
展开
-
Visual Studio 2010中Opencv 2.4.3版本配置(不编译)
1. 配置环境变量在环境变量中需要添加bin路径,具体是在Path中添加:C:\OpenCV\build\x86\vc10\bin;2. 添加包含文件在项目属性中,(属性——配置属性——VC++目录——包含文件)中添加以下路径:C:\OpenCV\build\include;C:\OpenCV\build\转载 2013-01-14 15:56:48 · 1609 阅读 · 0 评论 -
OpenCV学习笔记(10)-Mahalanobis距离
Mahalanobis距离是数据所在的空间的协方差的度量,或者是任务把数据所在空间进行"扭曲拉伸"然后进行度量.如果你值得Z-score,就可以把Mahalanobis距离看作多维空间中Z-Score的类型物.图13-4(a)展示了三个数据集的初始分布,看起来竖直方向上的那两个集合比较接近.在我们根据数据协方差归一化空间之后,如果13-4(b),实际上水平方向上的两个集合比较接近.这中情况经常发生原创 2013-06-07 15:03:02 · 5094 阅读 · 0 评论 -
OpenCV学习笔记(9)-ML库的通用类
ML库中的所有程序都是用C++写的,它们都继承于CvStatModel类.CvStatModel中有两套方法来对磁盘进行模型的读/写操作:保存操作的save()和write(),读操作的load()和read().对于机器学习模型,应该使用简单的save()和load(),它们实际上把复杂的write()和read()函数进行了封装,能够从硬盘读/写XML和YAML文件.CvStatModel中还原创 2013-06-07 10:25:49 · 3382 阅读 · 1 评论 -
OpenCV学习笔记(11)-K均值
K均值聚类算法在cxcoer中,因为它在ML库诞生之前就存在了.K均值尝试找到数据的自然类别.用户设置类别个数,K均值迅速地找到"好的"类别中心."好的"意味着聚类中心位于数据的自然类别中心.K均值是最常用的聚类计数之一,与高斯混合中的期望最大化算法(在ML库中实现为CvEM)很相似,也与均值漂移算法(在CV库中实现为cvMeanShift())相似.K均值是一个迭代算法,在OpenCV中采用的是原创 2013-06-08 15:25:40 · 2477 阅读 · 0 评论 -
OpenCV学习笔记(12)-朴素贝叶斯分类
前面提到的函数都在cxcore库中,现在我们开始讨论OpenCV的机器学习(ML)库.首先看到OpenCV最简单监督学习分类器CvNormalBayesClassifier,也叫正态贝叶斯分类器或朴素贝叶斯分类器.它简单是因为它假设所有的特征之前相互独立,而这在现实中很少见(如,找到一直眼睛常常意味着另一只眼睛在附近).Zhang讨论了这个分类器有时能获得惊人的性能的原因.朴素贝叶斯分类不能处理回原创 2013-06-08 16:29:44 · 4006 阅读 · 0 评论 -
[OpenCV2]访问数据值
为了访问矩阵的每个元素,只要知道它的行数和列数就可以了.我们用一个数值能够获取到它相应的元素值.对于多通道的图像我们需要使用一个向量值.Getting ready为了举例如何直接访问像素值,我们创建一个简单的功能:对一个图像添加椒盐噪声.椒盐噪声是一个特定的噪声,图像中的一些像素被白色或者黑色的像素点替代了.这种噪声发生在有错误通讯中,在文件传输途中,有些像素值丢失了.在我们的例子中,我们翻译 2013-06-25 23:26:49 · 1435 阅读 · 2 评论 -
[OpenCV2]使用指针遍历图像
在多数的图像处理任务,为了执行一个计算任务,需要遍历图像的所有像素.考虑到大量的像素数据需要被访问,用一个有效率的方法去做这个事情是很有必要的.本节和下一节会用不同的方式展示如何用循环遍历图像.本节使用指针的方法.Getting ready我们会用一个简单的任务举例如何遍历图像:减少一幅图像的颜色数.彩色图像是由三个通道的像素组成的.每个通道的亮度值分别对应三原色(红绿蓝).因为这些值翻译 2013-06-28 15:06:42 · 3568 阅读 · 0 评论 -
[OpenCV2]使用迭代器遍历指针
在面向对象的程序中,在一个循环数据的收集中通常使用迭代器.迭代器是一个专门的类用了保存每个元素.对于一个给定的集合,如何获取每个元素的操作是看不到的.这个信息隐藏的原理的应用使得遍历容器更容易.此外,无论使用什么类型的的集合都是相似的.标准库模版(STL)有一个容器类和它的每一个集合类都是相关的.OpenCV提供了一个cv::Mat容器类,这个类与C++STL中的标准容器是兼容的.Gettin翻译 2013-06-29 10:17:35 · 2791 阅读 · 0 评论 -
[OpenCV2]编写有效率的图像循环
这本章的前几节,我们提出了遍历一幅图像像素的几个不同方法.这这节,我们会比较这些不同方法的处理效率.当你写一个图像处理函数,处理效率是经常关系的事.当设计你的功能函数的时候,需要频繁的检查你的代码的处理效率,主要是为了发现使你的程序跑的慢的瓶颈.然而,为了是程序看起来简单易懂不做优化是非常需要注意的,除非不是必须的.简单的代码确实容易调试和维护.但是影响一个程序效率的关键代码需要大量优化.翻译 2013-07-01 14:01:35 · 2144 阅读 · 0 评论 -
[OpenCV2]遍历图像的临近像素
在图像处理中,经常需要处理一个当前点这个点的值可能是基于附近几个临近像素点而得出的.当临近像素点包含上一行或者下一行数据的时候,你需要同时扫描图像的多行.这节会告诉你怎么做.Getting ready本节,我们会用一个锐化图像的例子举例.它是基于拉普拉斯操作的(在第6章会讨论).众所周知,如果你对一幅图像使用拉普拉斯算法,这个图像的边缘会增强,可以获得一个锐化图像.这个锐化操作如下:翻译 2013-07-02 10:45:26 · 2773 阅读 · 0 评论 -
[OpenCV2]执行简单的图像算法
图像可以以不同的方式组合.因为他们是有规律的矩阵,他们可以相加,相减,相乘和相除.OpenCV提供了各种各样的图像算法,这节我们会讨论这个.GetReading...我们使用第二幅图像,我们会对他进行一个算法操作:和我们的输入图像结合.图像如下:How to do it...在这里我们添加两幅图像.当我想创建一些特殊效果或者在一幅图像上覆盖信息时,图像的加操作是很有用的.我翻译 2013-07-03 10:08:17 · 2140 阅读 · 2 评论 -
[OpenCV2]定义感兴趣的区域
有时,我们只需要对一幅图像的一部分进行处理.本节会教会我们如何定义感兴趣的区域.Getting ready假设我们想合并两个不同大小的图像.例如,我们将下面的小的图标添加到我们的测试图像上:但是使用cv::add函数要求两个图像具有相同的大小.在这个例子中,必须定义感兴趣的区域(ROI)使得cv::add可以被使用.它只会应用在和我们logo图像相同大小的ROI区域.ROI的位翻译 2013-07-04 09:24:47 · 4959 阅读 · 2 评论 -
使用Qt+OpenCV+VideoInput 显示摄像头图像
缘由:最近使用Qt+openCV获取摄像头的图像但是仅仅只是使用openCV自带的方法显示图像时,发现计算机CPU使用率比较高,最主要的一点是摄像头驱动自带的设置图像参数的无法直接调用出来网上查找了很多资料发现 openCV内部是使用了videoInput类的方法实现的.但是没有引用它自身的方法.经过几天的研究,成功使用videoinput显示摄像头图像,并且可以弹出摄像头驱动自带原创 2014-03-22 23:00:18 · 5931 阅读 · 2 评论 -
opencv_traincascade的使用
介绍使用级联分类器工作包括两个阶段:训练和检测。 检测部分在OpenCVobjdetect模块的文档中有介绍,在那个文档中给出了一些级联分类器的基本介绍。当前的指南描述了如何训练分类器:准备训练数据和运行训练程序。重点注意事项OpenCV中有两个程序可以训练级联分类器: opencv_haartraining 和opencv_traincascade 。 openc转载 2014-04-07 09:31:58 · 3229 阅读 · 0 评论 -
OpenCV学习笔记(13)-boosting
决策树很有用,但是他们并不是最好的分类器.在本节和下节,我们讲述两种计数:boosting和随机森林.它们在内部使用了决策树,所以继承了树的很多有用的性能(能够处理混合数据类型、没有归一化的数据、特征缺失)。这些技术能够获得相当好的性能,因此它们通常是ML库中最好的监督学习的算法。在监督学习领域,有一个叫统计提升(meta-Learning)的学习算法.Keans想知道可不可能从很多弱分类器中原创 2013-06-14 10:41:27 · 7068 阅读 · 2 评论 -
OpenCV学习笔记(8)-机器学习
什么是机器学习机器学习的目的是把数据转换成信息.在学习了一系列的数据之后,我们需要机器能够回答与这些数据有关的问题:其他还有哪些数据和本数据最相似?图像中有没有汽车?哪个广告最能得到消费者的响应?由于消费者经常考虑价格因素,这个问题会变成"在我们销售的所有产品中,如果要做广告,哪个产品会最热销?"机器学习通过从数据里提取规则或模式来把数据转换成信息.训练集和测试集机器学习针对温度,股票原创 2013-06-04 13:35:17 · 5327 阅读 · 1 评论 -
OpenCV学习笔记(二)—IplImage数据结构
IplImage结构准确定义如下typedef struct _IplImage{ int nSize; /* sizeof(IplImage) */ int ID; /* version (=0)*/ int nChannels; /* Most of OpenCV functions原创 2013-01-30 22:12:11 · 2482 阅读 · 0 评论 -
OpenCV学习笔记(三) 视频播放控制
需要使用到的函数cvGetCaptureProperty(获取视频属性)double cvGetCaptureProperty( CvCapture* capture, int property_id );capture 视频获取结构。property_id 属性标识。CV_CAP_PROP_POS_MSEC - 影片目前位置,为毫秒数或者视频获取时间戳转载 2013-03-19 21:33:35 · 1374 阅读 · 0 评论 -
openCV错误捕捉
最近学习openCV调试时出现了错误,但是不知道是什么错误如下图这样就需要用到错误捕捉,在这里使用try catch语句try中写 openCV中语句catch输出错误信息,控制台程序使用控制台输出MFC程序使用下方代码所用的方法try { IplImage* gray = NULL; IplImage* edge = NULL; gray = cv原创 2013-04-09 10:07:08 · 8969 阅读 · 1 评论 -
openCV基于图像处理的自动聚焦
最近在研究对于显微镜图像自动聚焦的方法,使用的是爬坡法进行显微镜聚焦的对于图像的评价函数查阅了相关的资料,在百度文库找到的资料还是不错的,点击打开链接常用的图像聚焦算法还是很全的,关键是用用程序如何实现:代码写出来后很简单: m_img = cvLoadImage(CT2CA(ary_filename.GetAt(i))); cvAvgSdv(m_img,&u原创 2013-04-26 14:54:55 · 8265 阅读 · 3 评论 -
OpenCV学习笔记(四)—矩阵和图像操作
矩阵和图像操作矩阵和图像的基本操作函数名称描述cvAbs计算数组中所有元素的绝对值cvAbsDiff计算两个数组差值的绝对值cvAbsDiffs计算数组和标量差值的绝对值cvAdd两个数组的元素级的加运算cvAdds一个数组和一个标量的元素级的相加运算cvAddWeigh原创 2013-04-26 15:04:52 · 1445 阅读 · 0 评论 -
OpenCV学习笔记(一)—OpenCV的基本数据类型和矩阵
基本数据类型可在"....../OpenCV/cxcore/include"目录下.h文件中查看其详细定义.points,size,rectangles和Scalar三元组的结构结构成员意义CvPointint x, y图像中的点CvPoint2D32ffloat x , y二维空间中的点CvPoint3D32原创 2013-01-19 23:13:22 · 2845 阅读 · 0 评论 -
OpenCV学习笔记(8)—轮廓的匹配
一个跟轮廓相关的最常用到的功能是匹配两个轮廓.如果有两个轮廓,如何比较它们;或者如何比较一个轮廓和另一个抽象模板.矩比较两个轮廓最简洁的方式是比较他们的轮廓矩.这里先简短介绍一个矩的含义.简单的说,矩是通过对轮廓上所有点进行积分运算(或者认为是求和运算)而得到的一个粗略特征.通常,我们如下定义一个轮廓的(p,q)矩:在公式中p对应x纬度上的矩,q对应y维度上的矩,q对应y维度上原创 2013-05-15 14:57:32 · 10889 阅读 · 0 评论 -
基于opencv的简单亮度校正功能实现
今天找到了个简单亮度校正功能的方法感觉效果还可以,使用于简单背景代码如下int _tmain(int argc, _TCHAR* argv[]){ IplImage* src; // 第一条命令行参数确定了图像的文件名。 char* filename = (char*)"C:\\Users\\chenchao\\Desktop\\结晶\\25.bmp"; if( (src =原创 2013-05-20 09:58:28 · 4327 阅读 · 0 评论 -
OpenCV学习笔记(五)—内存存储
OpenCV使用内存存储器(memory storage)来统一管理各种动态的内存.内存存储器在底层被实现为一个有许多相同大小的内存块组成的双向链表,通过这种结构,OpenCV可以从内存存储器中快速的分配内存或将内存返回给内存存储器.1.数据结构cvMemStorage结构体定义typedef struct CvMemStorage{ int signature; C原创 2013-05-07 10:44:37 · 2114 阅读 · 0 评论 -
OpenCV学习笔记(六)—序列
序列是内存存储器中可以存储的一种对象.序列是某种结构的链表.OpenCV中,序列可以存储多种不同的结构.你可以将序列想象为许多编程语言中都存在的容器类或容器类模版(如C++中的vector).学列在内存被实现为一个双端队列(deque).因此序列可以实现快速的随机访问,已经快速删除顶端的元素,但是从中间删除元素则稍慢些.1.数据结构seq数据结构如下#define CV_TREE_原创 2013-05-09 17:07:06 · 2938 阅读 · 0 评论 -
使用Qt创建一个OpenCV工程
要使用Qt创建一个工程需要以下几步:第一步:下载安装并配置OpenCV版本;我用的是OpenCV2.43版本,好像2.2以后的版本可以不用自己编译,使用安装解压出来的库就可以了.第二步:下载安装并配置Qt我用的是5.02版本,安装配置好就行了,新版本的一般也不需要配置什么的.第三步:开始创建一个简单的控制台程序(1)打开Qt Creator,选择创建一个控制台程序原创 2013-05-28 15:27:50 · 7058 阅读 · 6 评论 -
OpenCV学习笔记(7)—轮廓
查找轮廓轮廓到底是什么?一个轮廓一般对应一系列的点,也就是图像中的一条曲线.表示的方法可能根据不同情况而有所不同.有多重方法可以表示曲线.在openCV中一般用序列来存储轮廓信息.序列中的每一个元素是曲线中一个点的位置.关于序列表示的轮廓细节将在后面讨论,现在只要简单把轮廓想象为使用CvSeq表示的一系列的点就可以了.函数cvFindContours()从二值图像中寻找轮廓.cvFindC原创 2013-05-15 09:52:33 · 7187 阅读 · 2 评论 -
使用Qt显示openCV矩阵图片
1.首先配置QtCreator 可以参见 http://blog.csdn.net/cc7829290/article/details/8984706 使用的QtCreator,如果使用的其他编译器需要同事配置好Qt和openCV2.首先使用Qt建立一个ui界面绘制2个按钮和一个label3.在头文件声明一个Mat类和一个QImage类.处理添加两个按钮的sl原创 2013-05-29 15:51:29 · 11026 阅读 · 2 评论 -
OpenCV学习笔记(12)-二叉决策树
我们将具体讨论二叉决策树,他们是最常用的,且实现了机器学习库中大量的功能,因此将被作为指导性的例子来讲解.二叉决策树由LeoBreiman和他的同事提出.他们称之为"分类和回归树(CART)".OpenCV实现的就是"分类回归树".算法的要点是给树的每个节点定义一个衡量标准.比如:当我们拟合一个函数的时候,我们使用真实值和预测值的差的平方和,这就是衡量标准.算法的目地是使差的平方和最小.这就是衡量原创 2013-06-13 10:02:01 · 8518 阅读 · 1 评论 -
Qt Creator + MinGW + OpenCV2.43 (自编译) 环境配置
最近在使用Qt+openCV做项目 原来用msvc转载 2014-05-16 10:25:29 · 1487 阅读 · 0 评论