OpenCV:我在哪里可以找到CV_WINDOW_AUTOSIZE常量?

use*_*580 1 c++ linux opencv

我试图从OpenCV文档构建示例程序,但我遇到了一个问题:

错误:未在此范围内声明'CV_WINDOW_AUTOSIZE'

计划来源:

#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main( int argc, char** argv )
{
Mat image;
image = imread( argv[1], 1 );

 if( argc != 2 || !image.data )
{
  printf( "No image data \n" );
  return -1;
}

 namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
 imshow( "Display Image", image );

 waitKey(0);

 return 0;  
}
Run Code Online (Sandbox Code Playgroud)

我认为CV_WINDOW_AUTOSIZE常量已包含在某个头文件中,但我找不到必要的头文件.

lei*_*paC 8

CV_WINDOW_AUTOSIZE实际上真的highgui.h,但是,正如@berak在评论中指出的那样,是过时的c-api的一部分.你应该做两件事之一:

  • WINDOW_AUTOSIZE相反,使用它,这是C++ API的一部分.您不需要更改任何其他内容来使其工作,甚至不包括#include示例中尚未包含的任何内容.
  • namedWindow( "Display Image" )改用,因为namedWindow WINDOW_AUTOSIZE默认使用,因此您甚至不必将其作为参数包含在内.

测试OpenCV 3.0.0


lmi*_*lmh 5

看来在 OpenCV 3.1 中您需要使用cv::WindowFlags::WINDOW_AUTOSIZE位于<opencv2/highgui.hpp>.


ber*_*rak 3

由于所有窗口内容都在 highgui 模块中,因此您需要

#include <opencv2/highgui/highgui.hpp>
Run Code Online (Sandbox Code Playgroud)

另外,您稍后需要链接到 opencv_highgui 库