opencv
lengyuyan007
这个作者很懒,什么都没留下…
展开
-
opencv 视频播放控制
转载地址:http://blog.sina.com.cn/s/blog_68ed8b21010166ho.html double cvGetCaptureProperty( CvCapture* capture, int property_id ) CV_CAP_PROP_POS_MSEC - 影片目前位置,为毫秒数或者视频获取时间戳 CV转载 2013-05-02 13:16:10 · 961 阅读 · 0 评论 -
opencv鼠标响应事件学习整理
Highgui 细解几个不常用的函数:int cvDestroyAllWindows(void) :关闭所有窗口,并且释放窗口内存空间;int cvStartWindowThread(void):创建一个线程来自动更新窗口及处理窗口触发事件,创建失败,返回值为0;OPENCV 里的鼠标响应事件:1,先举个小例子,然后按照例子里的说明:在一个空图里画矩形,用鼠标画:原创 2013-05-05 16:07:24 · 2659 阅读 · 0 评论 -
opencv之滑动条详解
还是先看一个例子:在OPENCV里没有按钮,这个可以用滑动条来辅助实现,当然滑动条只取值0-1,如果愿意也可以用鼠标响应事件来代替:当鼠标移动到图像区域时表示1,之外表示0;#include"cv.h"#include"highgui.h"#include#pragma comment(lib,"cv.lib") #pragma comment(lib,"highgu原创 2013-05-05 16:31:28 · 1103 阅读 · 0 评论 -
opencv视频处理整理
opencv 的highgui仓库里可以处理三大部分内容:摄像机等硬件,文件系统,用户界面。这里先整理下常见的摄像头库函数:CVvCapture *cvCreateFileCapture(const char* "文件名"):返回一个CvCapture指针,如果读入成功,返回一个已经初始化的CvCapture指针,失败返回NULL;使用它是要检查返回值是否为空;CVvCapture原创 2013-05-05 17:15:21 · 1416 阅读 · 0 评论 -
腐蚀,膨胀,opencv的形态学处理
对于腐蚀和膨胀,看过很多理论,但是至今还是比较模糊,我的理论是模糊的话,那就不要在头痛了,记住它的用法吧,我确信我不能在这个上面研究出什么新的算法了,会用就行。自己的理解:假设图像A和核元素B,不管B是什么形状,都会有一个参考中心Bo腐蚀:用B在A上移动,B结构下的A最小的亮度值作为Bo对应的像素点的亮度值;膨胀:把“小”字改为“大”字;OPENCv里的函数:cvErode原创 2013-05-05 19:29:54 · 1000 阅读 · 0 评论 -
cvMorphologyEx —不推荐使用
在OpenCV中某些高级形态学变换用cvMorphologyEx函数完成,包括开运算,闭运算,标准形态梯度,白顶帽,黑顶帽运算。但是不推荐使用该函数。 通过查看cvMorphologyEx的源代码,可以发现,在执行开、闭等运算,在进行第二步形态学腐蚀和膨胀时,该函数仍然采用与第一步相同的结构元素进行。这种方法在针对一般对称的结构元素情况是正确的,但是当结构元素为自定义的非对称结构元素时,结果图转载 2013-05-05 19:51:18 · 699 阅读 · 0 评论 -
cvFloodFill
#include "stdafx.h"#include "cv.h"#include "highgui.h"#include #include #pragma comment(lib,"cv.lib") #pragma comment(lib,"highgui.lib") #pragma comment(lib,"cxcore.lib")转载 2013-05-05 21:03:35 · 750 阅读 · 0 评论 -
cvSmooth()
copy百度文库:函数 cvSmooth 可使用上面任何一种方法平滑图像。每一种方法都有自己的特点以及局限。 没有缩放的图像平滑仅支持单通道图像,并且支持8位到16位的转换(与cvSobel和cvaplace相似)和32位浮点数到32位浮点数的变换格式。 简单模糊和高斯模糊支持 1- 或 3-通道, 8-比特 和 32-比特 浮点图像。这两种方法可以(in-place)方式处理图像转载 2013-05-05 18:39:10 · 1000 阅读 · 0 评论 -
cvFindContours
提取轮廓在OpenCV里有一个函数 cvFindContours :int cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour,int header_size=sizeof(CvContour), int mode=CV_RETR_LIST,int method=CV_CHAIN_APPRO转载 2013-05-10 14:22:51 · 1073 阅读 · 2 评论 -
cvFindContours之2
先看这个opencv的经典例子:#include "cv.h"#include "cxcore.h"#include "highgui.h"#include #endif #pragma comment(lib,"cv.lib") #pragma comment(lib,"highgui.lib") #pragma comment(lib原创 2013-05-10 14:39:35 · 648 阅读 · 0 评论 -
OpenCV:CvMemStorage
1、动态内存存储及操作函数 CvMemStorage typedef struct CvMemStorage { struct CvMemBlock* bottom;/* first allocated block */ struct CvMemBlock* top; /* the current memory block - top of the stack */转载 2013-05-10 19:49:54 · 586 阅读 · 0 评论 -
opencv画轮廓的外界圆矩形椭圆等
#include #include #include #include using namespace std; #pragma comment(lib,"cv.lib") #pragma comment(lib,"highgui.lib") #pragma comment(lib,"cxcore.lib") in原创 2013-05-10 21:37:30 · 1465 阅读 · 0 评论 -
Cvbox2D
之前用到opencv最小外接矩形去表示一个类椭圆形的高度,特此记录备查。对给定的 2D 点集,寻找最小面积的包围矩形,使用函数:CvBox2D cvMinAreaRect2( const CvArr* points, CvMemStorage* storage=NULL ); points 点序列或点集数组 storage 可选的临时存储转载 2013-05-10 21:51:18 · 613 阅读 · 0 评论 -
OpenCV坐标系与操作像素的四种方法
像素是图像的基本组成单位,熟悉了如何操作像素,就能更好的理解对图像的各种处理变换的实现方式了。1.at方法第一种操作像素的方法是使用“at”,如一幅3通道的彩色图像image的第i行j列的B、G、R分量分别表示为:image.at(i,j)[0];image.at(i,j)[1];image.at(i,j)[2];而对于单通道的灰度图像就简单很多了:原创 2017-08-11 14:18:33 · 699 阅读 · 0 评论 -
集成性能基元(ipp)
Intel公司有一个产品叫集成性能基元(Integrated Performance Primitives,IPP)库。这个库实际上是一个有着高性能内核的工具箱,它主要用于多媒体处理以及其他计算密集型应用,可发掘处理器架构的计算能力。(其他厂商的处理器也有类似的架构,只不过规模较小。)就像第一章所探讨的,无论从软件层面还是公司内组织层面OpenCV都与IPP有着紧密的联系。最终,OpenC转载 2013-05-04 21:10:47 · 1257 阅读 · 0 评论 -
字体和文字
最后一种形式的绘图是绘制文字。当然,文字创建了一套自己的复杂格式,但是,在这类事情上,OpenCV一如既往地更关心提供一个简单的"一招解决问题"的方案,这个方案只适用于一些简单应用,而不适用于一个稳定的和完整的应用(这将降低由其他库提供的功能)。OpenCV有一个主要的函数,叫cvPutText()。这个函数可以在图像上输出一些文本。参数text所指向的文本将打印到图像上,参数origin指定转载 2013-05-04 20:48:24 · 650 阅读 · 0 评论 -
CvMat矩阵结构
在开始学习矩阵的相关内容之前,我们需要知道两件事情。第一,在OpenCV中没有向量(vector)结构。任何时候需要向量,都只需要一个列矩阵(如果需要一个转置或者共轭向量,则需要一个行矩阵)。第二,OpenCV矩阵的概念与我们在线性代数课上学习的概念相比,更抽象,尤其是矩阵的元素,并非只能取简单的数值类型。例如,一个用于新建一个二维矩阵的例程具有以下原型:cvMat* cvCreateMat转载 2013-05-02 22:07:14 · 751 阅读 · 0 评论 -
矩阵数据的存取
访问矩阵中的数据有3种方法:简单的方法、麻烦的方法和恰当的方法。简单的方法从矩阵中得到一个元素的最简单的方法是利用宏CV_MAT_ELEM()。这个宏(参见例3-4)传入矩阵、待提取的元素的类型、行和列数4个参数,返回提取出的元素的值。例3-4:利用CV_MAT_ELEM()宏存取矩阵CvMat* mat = cvCreateMat( 5, 5, CV_32FC1 ); floa转载 2013-05-02 22:31:10 · 1012 阅读 · 0 评论 -
矩阵和图像操作(7)
cvMergevoid cvMerge( const CvArr* src0, const CvArr* src1, const CvArr* src2, const CvArr* src3, CvArr* dst ); 【67】cvMerge()是cvSplit()的逆运算。数组src0,src1,src2,和src3将被合并到数组转载 2013-05-04 20:38:11 · 624 阅读 · 0 评论 -
矩阵和图像操作(9)
cvSub()是一个简单的减法函数,它对数组src2和src1对应的元素进行减法运算,然后把结果赋给dst。如果数组mask非空,那么dst中元素对应位置的mask中的0元素不会因此而改变。相关的函数cvSubS()执行相类似的功能,但它会对src的每一个元素减去一个常量value。函数cvSubRS()的功能和cvSubS()相似,但不是src的每个元素减去一个常量,而是常量减去的src中的每一转载 2013-05-04 20:39:56 · 868 阅读 · 0 评论 -
数据存储
OpenCV提供了一种机制来序列化(serialize)和去序列化(de-serialize)其各种数据类型,可以从磁盘中按YAML或XML格式读/写。在第4章中,我们将专门介绍存储和调用常见的对象IplImages的函数(cvSaveImage()和cvLoadImage())。此外,第4章将讨论读/写视频的特有函数:可以从文件或者摄影机中读取数据的函数cvGrabFrame()以及写操作函数c转载 2013-05-04 20:57:32 · 707 阅读 · 0 评论 -
矩阵和图像操作(3)
cvAvgCvScalar cvAvg( const CvArr* arr, const CvArr* mask = NULL ); cvAvg()计算数组arr的平均像素值,如果mask为非空,那么平均值仅由那些mask值为非0的元素相对应的像素算出。此函数还有别名cvMean(),但不推荐使用。cvAvgSdvcvAvgSdv( c转载 2013-05-04 20:26:13 · 895 阅读 · 0 评论 -
矩阵和图像操作(4)cvcolor
cvConvertScaleAbs()与cvConvertScale()基本相同,区别是dst图像元素是结果数据的绝对值。具体说来,cvConvertScaleAbs()先缩放和平移,然后算出绝对值,最后进行数据类型的转换。cvCopyvoid cvCopy( const CvArr* src, CvArr* dst, const Cv转载 2013-05-04 20:31:35 · 1606 阅读 · 0 评论 -
矩阵和图像操作(1)
矩阵和图像操作(1)表3-3列出了一些操作矩阵图像的函数,其中的大部分对于图像处理非常有效。它们实现了图像处理中的基本操作,例如对角化、矩阵变换以及一些更复杂的诸如计算图像的统计操作。【47】表3-3:矩阵和图像基本操作函数名称描述cvAbs计算数组中所有元素的绝对值cvAbsDiff计算两转载 2013-05-04 20:15:22 · 661 阅读 · 0 评论 -
矩阵和图像操作(5)
cvDetdouble cvDet(const CvArr* mat); cvDet()用于计算一个方阵的行列式。这个数组可以是任何数据类型,但它必须是单通道的,如果是小的矩阵,则直接用标准公式计算。然而对于大型矩阵,这样就不是很有效,行列式的计算使用高斯消去法。值得指出的是,如果已知一个矩阵是对称正定的,也可以通过奇异值分解的策略来解决。欲了解更多信息,请参阅"cvSVD"一节。但这转载 2013-05-04 20:34:20 · 726 阅读 · 0 评论 -
矩阵和图像操作(6)
cvGetDiag ()类似于cvGetCol();它能从一个矩阵选择某一条对角线并将其作为向量返回。submat是一个矩阵类型的头指针。函数cvGetDiag()将填充该向量头指针中的各分量,以使用指向arr中的正确信息。注意,调用cvGetDiag()会修改输入的头指针,将数据指针指向arr对角线上的数据,实际上,并没有复制arr的数据。可选参数diag表明submat指向哪一条对角线的。如果转载 2013-05-04 20:36:42 · 881 阅读 · 0 评论 -
矩阵和图像操作(8)
计算C范数时,数组src将被进行比例变标,使其中绝对值最大的值等于a。当计算L1范数成L2范数时,该数组也将被缩放,如使其范数为a。如果norm_type的值设置为CV_MINMAX,那么将会对数组的所有的值进行转化,使它们线性映射到a和b之间(包括a和b)。与以前一样,如果参数mask非空,那么只有与掩码非0值对应的像素会对范数的计算有贡献,并且只有那些像素会被cvNormalize()改变转载 2013-05-04 20:39:05 · 548 阅读 · 0 评论 -
矩阵和图像操作(2)
矩阵和图像操作(2)这个函数可用来实现alpha 融合 [Smith79; Porter84];也就是说,它可以用于一个图像同另一个图像的融合,函数的形式如下:void cvAddWeighted( const CvArr* src1, double alpha, const CvArr* src2, double b转载 2013-05-04 20:20:04 · 586 阅读 · 0 评论 -
绘图
我们经常需要绘制图像或者在已有的图像上方绘制一些图形。为此,OpenCV提供了一系列的函数帮助我们绘制直线、方形和圆形等。直线cvLine()是绘图函数中最简单的,只需用Bresenham算法[Bresenham65]画一条线:void cvLine( CvArr* array, CvPoint pt1, CvPoint pt2转载 2013-05-04 20:45:48 · 544 阅读 · 0 评论 -
opencv直方图该怎么画
图像直方图是反映图像中像素分布特性的统计表,一般显示如下:其中横坐标代表的是图像像素的种类,或者说是灰度级,纵坐标代表的是每一级灰度下像素数或者该灰度级下像素数在所有图像总像素数总所占的百分比。直方图反映了图像像素的整体分布,是图像的一个很重要的特征,直方图处理也是很多空间域图像处理的基础,在特征提取,图像增强,图像匹配等方面都占有一席之地。直观上看,若直方图的转载 2017-08-15 20:30:38 · 275 阅读 · 0 评论