使用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的主要内容,如果未能解决你的问题,请参考以下文章

c ++ opencv中的等价matlab代码

使用opencv与c ++和c

Matlab与C/C++混合编程之Matlab调用OpenCV库函数

Matlab与C/C++混合编程之Matlab调用OpenCV库函数

使用 C 代码获取与 ifconfig 相同的信息

opencv学习_C++编译