
OpenCV学习
lien0906
这个作者很懒,什么都没留下…
展开
-
优化OpenCV视频的读取速度
我们使用Opencv读取视频时,常规的做法是使用read()函数逐帧读取,如import cv2cap = cv2.VideoCapture("./test.mp4")while True: # read a frame ret, frame = cap.read() if not ret: break # do something else ...cap.release()但是在图像处理时,并不需要逐帧处理,而是抽样的方式转载 2021-08-11 10:26:24 · 8325 阅读 · 1 评论 -
CvMat、Mat、IplImage之间的转换详解及实例
OpenCV学习之CvMat的用法详解及实例 CvMat是OpenCV比较基础的函数。初学者应该掌握并熟练应用。但是我认为计算机专业学习的方法是,不断的总结并且提炼,同时还要做大量的实践,如编码,才能记忆深刻,体会深刻,从而引导自己想更高层次迈进。1.初始化矩阵: 方式一、逐点赋值式: CvMat* mat = cvCreateMat( 2, 2, CV_64转载 2015-05-28 09:05:47 · 487 阅读 · 0 评论 -
xml文件学习
输入输出XML和YAML文件目的你将得到以下几个问题的答案:如何将文本写入YAML或XML文件,及如何从从OpenCV中读取YAML或XML文件中的文本如何利用YAML或XML文件存取OpenCV数据结构如何利用YAML或XML文件存取自定义数据结构?OpenCV中相关数据结构的使用方法,如 :xmlymlpers:FileStorage , FileNode 或 Fi转载 2015-04-28 08:49:46 · 549 阅读 · 0 评论 -
cvSetData与imageData
关于cvSetData的一个小练习//刚开始我一直以为imageData里面会有负数,后来发现自己错了,但是会有0存在void main() {int i , j;long k;char *BGRData;IplImage * image = cvLoadImage( "lena.jpg" , 1 );IplImage *iplImage = cvCreateIma转载 2015-04-22 16:38:47 · 3361 阅读 · 0 评论 -
InputArray和OutputArray的那些事core
看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray型的,这个接口类还是很强大的,今个就来说说它们的那些事。InputArray这个接口类可以是Mat、Mat_、Mat_、vector、vector>、vector。也就意味着当你看refman或者源代码时,如果看见函数的参数类型是InputArray型时,把上诉几种类型作为参数都是可以的转载 2015-03-19 14:26:54 · 562 阅读 · 0 评论 -
新版本2.4.2简介&FREAK和ORB特征描述子效果对比features2d
OpenCV 2.4.2简介OpenCV从未放慢自己前进的步法,就在7月4日,最新版的2.4.2又放出来了。与之同时放出的还有两个网站http://opencv.org/和http://answers.opencv.org,前者作为一个正式的全新的官方用户网站,简单浏览了一下,应该是一个对应之前维基百科上的那个网站,是一个介绍性的新闻网站,对开发者的意义可能不是太大;后面这个网站就厉害了,转载 2015-01-24 16:33:08 · 993 阅读 · 0 评论 -
OpenCV学习--saturate_cast防止数据溢出
源代码来源于官网的OpenCV教程,实现的功能比较简单最后自己动手用C语言实现了一下,貌似比库函数要快一点[cpp] view plaincopy#include "StdAfx.h" #include "blending.h" using namespace std; using namespace cv; void转载 2015-01-21 09:25:19 · 2521 阅读 · 0 评论 -
OpenCV矩阵运算 .
一、矩阵Mat I,img,I1,I2,dst,A,B;double k,alpha;Scalar s;1.加法I=I1+I2;//等同add(I1,I2,I);add(I1,I2,dst,mask,dtype);scaleAdd(I1,scale,I2,dst);//dst=scale*I1+I2;2.减法absdiff(I1,I2,I);//I=|I1-I2转载 2015-01-21 09:02:54 · 1000 阅读 · 1 评论 -
OpenCV 3 将会为我们带来什么?
年8月,OpenCV 3.0 alpha发布,同时宣布beta将在仲秋时节发布,而正式版会在圣诞节和新年的假期就绪。其中beta版已在光棍节发布,而从目前GitHub仓库的情况来看,正式版可能还得过一阵子才行。3.0将是OpenCV的又一个革命性版本,它会带来哪些改变呢?大体上保留了OpenCV 2经典的C++和Python编程接口风格。其中,Python接口大大增强,也加入了Py转载 2015-01-21 09:12:33 · 596 阅读 · 0 评论 -
使用C++将OpenCV中Mat的数据写入二进制文件,用Matlab读出
在使用OpenCV开发程序时,如果想查看矩阵数据,比较费劲,而matlab查看数据很方便,有一种方法,是matlab和c++混合编程,可以用matlab访问c++的内存,可惜我不会这种方式,所以我就把数据写到文件里,用matlab读出来,然后用matlab各种高级功能查看数据的值。1、将Mat的数据写入指定文件为了方便拿来主义者,我直接把这个函数贴出来,你只要把代码拷贝转载 2015-01-20 17:49:52 · 2163 阅读 · 1 评论 -
编译opencv2.4.8静态库
环境: VS2008 + WIN7 + opencv2.4.8 + cmake2.8 需要的环境在开始已经说明了,下面开始。 首先将OpenCV-2.1.0-win.zip解压到一个目录,我的是E:/opencv248(可以自己改名),然后在opencv21目录下创建vc2008目录,再打开安装好的cmake2.8,填入源代码目录(E:/opencv248)和原创 2014-12-08 21:33:02 · 1666 阅读 · 0 评论 -
OpenCV中的内存泄漏检测(好东东日后必看!)
OpenCV中的内存泄漏检测2009-10-29 16:53内存泄漏时程序开发中经常遇到的问题. 而且出现内存泄漏很难检测,但是其导致的结果却是灾难性的. 这里讲一下opencv中内存泄漏检测的一些技巧.OpenCV中关于内存管理主要涉及到以下3个函数:代码: 全选CV_IMPL void cvSetMemoryManager( CvAllocFun转载 2015-06-05 19:06:17 · 2840 阅读 · 0 评论 -
OpenCV 3 最新模块一次看个够
本文原版是译作《OpenCV 2 计算机视觉编程手册》的附录,经过删减后在专栏中刊登。OpenCV 3 就要正式发布了,但是很多读者还在用 OpenCV 2,甚至 OpenCV 1。你们一定想知道,是否有必要升级到 3,以及如何提前进行准备。OpenCV 3 的改动在哪?C 风格的API很快将会消失,完全被C++的API替代,代码更加简洁、不易出错。读者如果想借助ope转载 2015-06-05 19:11:29 · 1598 阅读 · 0 评论 -
python opencv minAreaRect 生成最小外接矩形
使用python opencv返回点集cnt的最小外接矩形,所用函数为 cv2.minAreaRect(cnt) ,cnt是所要求最小外接矩形的点集数组或向量,这个点集不定个数。举例说明:画一个任意四边形的最小外接矩形,其中 cnt 代表该四边形的4个顶点坐标(点集里面有4个点)cnt = np.array([[x1,y1],[x2,y2],[x3,y3],[x4,y4]]) # 必须是a...转载 2019-01-22 17:50:44 · 10637 阅读 · 1 评论 -
caffe与cv2图片格式的相互转换
目录: caffe与cv2图片格式转换 str_to_cv2图片格式转换caffe与cv2图片格式的转换 python中两种方式直接获得的图像是不一样的,主要表现在颜色通道,数据类型上,如下表。因此同时使用caffe和cv2时,需要将数据进行转换。 颜色通道数据类型caffeRGBnp.float32cv2BGRnp.uint8caffe加载的图片转换为cv2可用的图片[...转载 2018-06-02 16:02:30 · 1106 阅读 · 0 评论 -
ubuntu16.04安装opencv3.4.1教程
最近opencv3.4.1发布了,想换个新的试试鲜,于是把配置的过程通过博文的方式记录下来,方便查阅。 本教程原为3.3.0,但经过博主亲测,3.4.0、3.4.1皆适用1.去官网下载opencv,在本教程中选用的时opencv3.4.1,其他版本的配置方法异曲同工。 下载链接http://opencv.org/releases.html,选择sources...转载 2018-06-22 15:57:59 · 875 阅读 · 1 评论 -
安装opencv 并解决undefined reference to `cvLoadImage’的问题
ubuntu12.04 安装opencv1 编译环境 sudo apt-get install build-essential2 安装GTK环境 sudo apt-get install libgtk2.0-dev 3 编译GTK程序时自动找出头文件及库文件位置 sudo apt-get install pkg-config 4 安装cmake sudo apt-get install c...转载 2018-06-06 13:20:44 · 6023 阅读 · 0 评论 -
opencv之图像创建注意事项
在opencv中进行图像创建时,比如imgIn.create(cvSize(1920, 1080), CV_8UC3); 然后进行分析的图像大小要求为(640.480),则需要对imgIn进行resize,此时基于两种考虑:(1)为保证减少创建更多图像,会再定义一个Mat型数据imgIn2,然后再进行resize,即resize(imgIn,imgIn2,cvSize(640,480)),如原创 2018-01-30 17:40:12 · 839 阅读 · 0 评论 -
OpenCV学习:fastAtan2函数解密
OpenCV学习:fastAtan2函数解密高中数学中各种正弦函数,余弦函数总是把人搞得头大,但是具体应用时你会发现,其实你只需要搞清楚一个2π空间内函数分布即可。下面分析OpenCV中fastAtan2函数是怎么处理的方向问题。fastAtan2函数在OpenCV中用户非常广,比如在SIFT描述子求取过程中需要计算特征点的方向,此时OpenCV的源码中就是使用的fastAta转载 2015-11-02 16:09:25 · 9446 阅读 · 1 评论 -
OpenCV参考手册之Mat类详解(二)
译文参考The OpenCV Reference Manual (Release 2.3)August 17 2011Mat::~MatMat的析构函数。C++: Mat::~Mat()析构函数调用Mat::release()。Mat::operator =提供矩阵赋值操作。C++: Mat& Mat::operator=(const Mat& m)C++: Mat转载 2015-08-05 14:27:46 · 553 阅读 · 0 评论 -
OpenCV保存成XML(FileStorage)和CSV(重载<<运算符)文件
XML文件(使用FileStorage类)使用OpenCV时不仅要保存影像结果,往往也需要保存中间的矩阵结果,而OpenCV的imwrite函数只支持CV8U类型的数据(使用OpenCV保存其他类型Mat的时候,程序不会报错,但是无法生成结果文件),因此会给工作带来很多不便。OpenCV在2.0以后的版本中提供了FileStorage类,供用户直接使用,保存为XML/YAML文件。保存XM转载 2015-06-29 20:24:43 · 1014 阅读 · 0 评论 -
【OpenCV】有关内存释放的一些问题
转载请注明出处:http://blog.youkuaiyun.com/xiaowei_cqu/article/details/7586847前一天把系统整个重写了一遍,脉络清晰了很多,也终于解决了以前很多崩溃,异常退出的问题。这里小小总结一下自己遇到的麻烦。1、内存泄露内存泄露是说没有释放已经不能使用的内存,这里一般指堆的内存才需要显示的释放。比如用malloc,calloc,real转载 2015-06-05 19:08:03 · 744 阅读 · 0 评论 -
opencv中imread这个函数不能正确读入图片的解决
通常我们为了简单起见,是把所有的库(.lib)包括debug、release两个版本同时加载的。这样的话象下面的代码是可以正常工作的:[cpp] view plaincopy#include #include using namespace cv; void main() { IplImage *s转载 2015-01-13 09:36:24 · 12876 阅读 · 1 评论 -
divide的使用
Performs per-element division of two arrays or a scalar by an array.C++: void divide(InputArray src1, InputArray src2, OutputArray dst, double scale=1, int dtype=-1)C++: void divide(do原创 2015-01-13 10:28:18 · 11709 阅读 · 0 评论 -
IplImage访问图像中每个像素的值
转载请注明出处:http://blog.youkuaiyun.com/xiaowei_cqu/article/details/7557063!!此篇是基于IplImage* (C接口或者说2.1之前版本的接口,新的Mat的访问方式请参考博文:《访问Mat图像中每个像素的值》)IplImage是OpenCV中CxCore部分基础的数据结构,用来表示图像,其中Ipl是Intel Image P转载 2014-08-25 10:03:45 · 5770 阅读 · 0 评论 -
CMAKE OPENCV过程
OpenCV1.0版本有windows,linux之分,笔者曾经一直使用Opencv1.0。这个版本在下载,安装之后,在\OpenCV\_make文件夹下面已经存在了一个opencv.dsw的工程文件,直接用VC6,或者,Visual Studio就可以打开该工程,从而可以进行相应的编译工作;而对于OpenCV2.0及以后的版本而言,就没有类似的工程文件了。这个时候,就需要你自己利用CMa原创 2014-06-17 15:50:19 · 656 阅读 · 0 评论 -
cvCreateImageHeader cvCreateImage
原文地址http://hi.baidu.com/oocfgfmxikjpuyr/item/dfb55919e2ceb3ef5e53b173这个问题找了半天,后来才发现是用了cvCreateImageHeader,而没有用cvCreateImage。函数 cvCreateImage 创建头并分配数据,这个函数是下列的缩写型式header = cvCreateI转载 2014-07-04 15:46:55 · 1208 阅读 · 0 评论 -
OpenCV图像的内存存储
OpenCV使用内存存储器(memory storage)来统一管理各种动态的内存.内存存储器在底层被实现为一个有许多相同大小的内存块组成的双向链表,通过这种结构,OpenCV可以从内存存储器中快速的分配内存或将内存返回给内存存储器.1.数据结构cvMemStorage结构体定义[cpp] view plaincopyty转载 2014-06-12 08:40:29 · 1178 阅读 · 0 评论 -
Mat, vector<point2f>,Iplimage等等常见类型转换
在mfc c++ 以及opencv 编写程序当中,很多常用的类型转换,现在总结一下。(注意加相应的头文件,这里不罗嗦)提纲:1. Mat ---> Iplimage2. Iplimage ---> CvvImage3. Mat ---> vector or vector4. vector or vector ---> vector> or vect转载 2014-06-12 08:43:52 · 1548 阅读 · 0 评论 -
opencv中使用addweighted函数将两幅图像叠加
在图像处理的操作中经常会遇到将图像叠加的问题,这在opencv中提供了极好的支持,如addweighted函数,下面将该函数的帮助部分略微说一下:C++: void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArraydst, int dtype=原创 2014-06-10 20:24:14 · 1804 阅读 · 0 评论 -
使用OpenCV官方提供文件配置、静态编译并运行OpenCV-2.3.x/2.4.x实例
版权声明:对于本博客所有原创文章,允许个人、教育和非商业目的使用,但务必保证文章的完整性且不作任何修改地以超链接形式注明原始作者、出处及本声明。博客地址:http://blog.youkuaiyun.com/shuxiao9058原始作者:季亚当我们需要测试程序,或者想将程序发给其他同事或者同学,以让同事或者同学运行以测试程序性能或者逻辑是否恰当时,是不是还要他人也要像你当初开发程序时转载 2014-07-01 14:04:22 · 680 阅读 · 0 评论 -
Opencv2.X以上Mat类型与IplImage*的转换
在Opencv2.X以上的处理中,大部分处理都是以Mat为主,而对于习惯了1.X的童鞋来说,有时候会带来不便,希望能采用1.X的形式来处理。经过试验,介绍一种简单的Mat与IplImage*类型间的转换:示例代码是需要mat转换为img:Mat mat,mat1; // mat1是临时变量IplImage * img;mat1=mat.clone();// 包括数据的深度复制,以防原创 2014-06-10 17:54:49 · 732 阅读 · 0 评论 -
OPENCV脱离库的静态链接方法
要给老师整理做过的算法各种脱离OPENCV库的可执行文件,就又折腾起了静态链接问题 ,现在来说说如果想要你的程序在一台裸奔的电脑上运行,需要怎么办。以OPENCV2.4.3+VS2010第一种方法是粗暴的什么都不改变然后将有可能用到的DLL都拷贝到文件夹中,这时候如需要opencv_highgui243.lib,是来自 opencv\build\x86\vc10\lib,以前使用这种方法,转载 2014-06-27 08:32:55 · 4257 阅读 · 0 评论 -
Mat访问图像中每个像素的值
今天百度搜资料还搜到了自己的。。。《访问图像中每个像素的值》,这是之前写的了,用的也是2.0的风格IplImage*格式,不太适用后来Mat的格式,特此重写一篇。以下例子源自《The OpenCV Tutorials --Release 2.4.2》2.2 How to scan images, lookup tables and time measurement with OpenCV转载 2014-08-25 10:06:09 · 1078 阅读 · 0 评论 -
关于cvReshape和cvGetRow的用法
1.在求矩阵转置方面,cvReshape比cvTranspose要好: cvMat* matT, hdr; matT = cvReshape( mat, &hdr, CV_MAT_CN(mat->type), mat->cols ); 以上方式比下边的方式要好 CvMat* matT = cvCreateMat( mat->cols, mat->rows, mat->type );原创 2014-08-28 17:34:46 · 1932 阅读 · 0 评论 -
CvMat的数据访问
http://blog.sina.com.cn/s/blog_4b0020f30101075w.html CvMat矩阵数据结构是OpenCV的基础数据类型,对于图像处理这种密级型运算,经常需要访问,修改,设置其元素的值。OpenCV提供了很多优良的函数,能够很简单的实现上述功能。在《学习OpenCV》一书中,作者分别就简单的方法,麻烦的方法,和恰当的方法对相关函数进行了讲解,讲得比较清晰。本转载 2015-01-12 09:56:45 · 3432 阅读 · 0 评论 -
iplimage 像素访问
1) 假设你要访问第k通道、第i行、第j列的像素。 (2) 间接访问: (通用,但效率低,可访问任意格式的图像) 对于单通道字节型图像: IplImage* img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1); CvScalar s; s=cvGet2D(img,i,j);// get the (i,j) pixel value prin转载 2014-11-06 14:31:14 · 1342 阅读 · 0 评论 -
opencv中mask操作
其实opencv 里面很多函数都是会带有一个mask 参数的,很多同学都不知道它到底有什么用,好像在实际运用中忽略它也没有什么问题(这不废话嘛,opencv设计师设计它的时候默认就是可以忽略的)。我在这里就抛砖引玉,详细分析一个常用函数cvcopy里面的mask ,希望可以给大家一点点指引。cvCopy 这个函数很熟洗哈,用得很多吧哈哈…… 以下内容来子opencv安装文件夹中自带转载 2014-11-06 11:19:38 · 3491 阅读 · 0 评论 -
opencv不同深度CvArr*(CvMat*,IplImage*)类型的显示
对于不同的图片深度,显示是有范围的下面转一段别人总结的深度显示范围。测试double型:0.0--1.0之间 IPL_DEPTH_64F测试float型:0.0--1.0之间 IPL_DEPTH_32F测试long型:0--65535之间 IPL_DEPTH_32S 测试short int型:-32768--32767之间 IPL_DEPTH_16S 测转载 2014-11-06 09:42:33 · 822 阅读 · 0 评论 -
openCV中 cvSeq的用法说明
openCV中 cvSeq的用法说明函数原型说明CvSeq* cvCreateSeq(int seq_flags,int header_size,int elem_size,CvMemStorage* storage)功能:创建一序列 参数:seq_flags为序列的符号标志。如果序列不会被传递给任何使用特定序列的函数,那么将它设转载 2014-11-21 16:34:29 · 1033 阅读 · 0 评论