首先代码:
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main( int argc, char** argv )
{
Mat image;
image = imread( "MyPic.jpg", CV_LOAD_IMAGE_GRAYSCALE );
if( !image.data )
{
printf( "No image data n" );
return -1;
}
namedWindow( "Display Image", CV_WINDOW_AUTOSIZE);
imshow( "Display Image", image );
waitKey(0);
return 0;
}
一个简单的程序,只是加载一个图像,然后命名为"MyPic.jpg",这是一个例子,我发现在开放的CV网站文档(有小的变化)。它给了我这两个错误:
‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope
‘CV_WINDOW_AUTOSIZE’ was not declared in this scope
为什么不工作?怎么了?
我把我的评论作为答案,以便其他遇到这个问题的人可以很容易地找到解决办法。
你是使用主干版本还是发布版本的OpenCV?如果是前者,那么您应该使用IMREAD_GRAYSCALE
和WINDOW_AUTOSIZE
代替。新的文档,包括函数调用的变化等,可以在这个链接中找到。
HTH
解决方法如下:
- 确保你使用的命名空间是:
using namespace cv;
- ,而不是使用
CV_LOAD_IMAGE_GRAYSCALE
,尝试做:cv::IMREAD_GRAYSCALE
选择:
通过opencv项目,您还可以尝试使用常量运行快速搜索,并提供数值代替。例如,在CV_LOAD_IMAGE_GRAYSCALE
的情况下,发现它对应于代码中的值0(特别是在文件constants_c.h
.