使用opencv与c ++和c
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用opencv与c ++和c相关的知识,希望对你有一定的参考价值。
我想使用opencv和c ++处理视频,执行速度非常重要。但是我看到了一些可能存在问题的东西,例如C ++的canny函数被定义为
void Canny(InputArray image, OutputArray edges, double threshold1, double threshold2, int apertureSize=3, bool L2gradient=false )
C中的等价物定义为
void cvCanny(const CvArr* image, CvArr* edges, double threshold1, double threshold2, int aperture_size=3 )
显然,如果我使用C ++,每次都会复制传递给函数图像,因为我不使用该函数,所以每秒至少复制24次。如果我使用C函数,我不会遇到这个问题,因为不会复制。有没有办法结合使用例如IplImage和Mat,以及在我将IplImage转换为Mat之后会花多少钱?一般来说,使用IplImage是个好主意吗?
您可能会误解C ++代码的作用。如果你看看the documentation
你会看到InputArray
是一个const&
typedef const _InputArray& InputArray;
其中InputArray是一个可以从Mat,Mat_ <T>,Matx <T,m,n>,std :: vector <T>,std :: vector <std :: vector <T>>构建的类,std: :vector <Mat>,std :: vector <Mat <T >>,UMat,std :: vector <UMat>或double。它也可以用矩阵表达式构造。
以上是关于使用opencv与c ++和c的主要内容,如果未能解决你的问题,请参考以下文章
Matlab与C/C++混合编程之Matlab调用OpenCV库函数