opencv提供了C接口和C++接口,例如加载图像函数C接口为CvLoadImage而C++接口为Imread他们在使用时有什么区别呢?
OpenCV提供C接口和C++接口,功能是一样的。选用何种接口,完全取决于个人爱好。
如果你的程序是C风格的,最好选用C接口,如果是C++风格的,最好选用C++接口。
C接口的很多函数需要配对使用,比如:创建矩阵后需要释放矩阵,相对来说,代码量要大一些,一个不小心就会出现内存泄漏。尽量还是使用C++接口吧,个人意见。
如下代码:
C程序加载图像
IplImage *src;
src = cvLoadImage("xx.jpg");
cvNamedWindow("lena",CV_WINDOW_AUTOSIZE);
cvShowImage("lena",src);
cvWaitKey(0);
cvDestroyWindow("lena");
cvReleaseImage(&src);
C++程序如下:
Mat img = imread("xx.jpg");
namedWindow("image", CV_WINDOW_AUTOSIZE);
imshow("image", img);
waitKey();
对比两种加载方式可以看出,C风格的函数一般都是配对使用,即有加载就要有释放,所以很容易出现的内存泄漏,而C++接口使用了类的方式。
在使用C++代码时要注意 上述C++代码需要加入命名空间CV 即using namespace cv;否则需要写成imread就要写成cv::imread