opencv 学习(一)

来源:互联网 发布:计算机机房网络管理 编辑:程序博客网 时间:2024/04/29 23:35

c 风格的写法和c++风格的写法

Mat imread imshow  是c++的风格,CvMat    IplImage  CvLoadimage CvRelease 是c风格的写法 ,另外c++的自动的管理内存,所以尽量用c++风格的写法吧

  

imread returns a Mat, not CvMat. They are the two different interfaces (Mat/imread for C++ and Ipl... and Cv.. for C interface). 

The C++ interface is nicer, safer and easier to use. It automatically handles memory for you, and allows you to write less code for the same task. The OpenCV guys advocate for the usage of C++, unless some very specific project requirements force you to C.

Example (C++)

cv::Mat image = imread("path/to/myimage.jpg")if(image.empty())    return;cv::imshow("Image", image);cv::Mat bw = image > 128; // threshold imagecv::Mat crop = image(cv::Rect(0, 0, 100, 100)); // a 100px x 100px cropcrop= 0; // set image to 0cv::waitKey();// end code here


And the C interface

IplImage* pImg = CvLoadImage("path/to/myimage.jpg");if(pImg == NULL)    return;// ... big bloat to do the same operations with IplImage    CvShowImage("Image", pImg);cvWaitKey();CvReleaseImage(&pImg); // Do not forget to release memory.// end code here
一些等价

CvSize -> Size
CvVideoCapture -> VideoCapture
IplImage, CvMat -> Mat
cvQueryFrame -> >> (operator)
cvShowImage -> imshow
cvLoadImage -> imread


0 0