C++ IplImage*的若干bug之一:cvCreateImage问题

源代码:

IplImage* image_src, TempImg;  //定义两个IplImage*变量
IplImage *image = cvLoadImage(“test.jpg”);  //加载一幅图片
int width  = image->width;
int height = image->height;

image_src = cvCloneImage(image);	
cvSetImageROI(image_src, cvRect( 0, 0, width, height));
TempImg = cvCreateImage(cvSize(width, height), image->depth, image->nChannels);
cvCopy(image_src, TempImg);




在编译的过程中,出现以下错误:

错误: ‘operator=’在‘TempImg = cvCreateImage(cvSize(width, height), image->_IplImage::depth, image->_IplImage::nChannels)’中没有匹配
附注: 备选是:
In file included from /usr/local/include/opencv2/core/core_c.h:47:0,
                 from /usr/local/include/opencv/highgui.h:45,
                 from ../src/API_annotaDeal/API_annotaDeal.cpp:22:
/usr/local/include/opencv2/core/types_c.h:465:16: 附注: _IplImage& _IplImage::operator=(const _IplImage&)
/usr/local/include/opencv2/core/types_c.h:465:16: 附注:   no known conversion for argument 1 from ‘IplImage* {aka _IplImage*}’ to ‘const _IplImage&’
/usr/local/include/opencv2/core/types_c.h:465:16: 附注: _IplImage& _IplImage::operator=(_IplImage&&)
/usr/local/include/opencv2/core/types_c.h:465:16: 附注:   no known conversion for argument 1 from ‘IplImage* {aka _IplImage*}’ to ‘_IplImage&&’
错误: 不能将‘void cvCopy(const CvArr*, CvArr*, const CvArr*)’的实参‘2’从‘IplImage {aka _IplImage}’转换到‘CvArr* {aka void*}’

 修改后代码:

IplImage* image_src;  //定义IplImage*变量
IplImage *image = cvLoadImage(“test.jpg”);  //加载一幅图片
int width  = image->width;
int height = image->height;

image_src = cvCloneImage(image);	
cvSetImageROI(image_src, cvRect( 0, 0, width, height));
IplImage* TempImg = cvCreateImage(cvSize(width, height), image->depth, image->nChannels);
cvCopy(image_src, TempImg);
编译通过。

你可能感兴趣的:(opencv,C/C++,图形图像,Ubuntu,debug)