C++ OpenCV:在哪里可以找到CV\u WINDOW\u AUTOSIZE常量?

C++ OpenCV:在哪里可以找到CV\u WINDOW\u AUTOSIZE常量?,c++,linux,opencv,C++,Linux,Opencv,我试图从OpenCV文档构建示例程序,但遇到了一个问题: 错误:“CV\u WINDOW\u 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 || !i

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

错误:“CV\u WINDOW\u 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;  
}
#包括
#包括
使用名称空间cv;
int main(int argc,字符**argv)
{
Mat图像;
image=imread(argv[1],1);
if(argc!=2 | |!image.data)
{
printf(“无图像数据”);
返回-1;
}
namedWindow(“显示图像”,CV\u窗口\u自动调整大小);
imshow(“显示图像”,图像);
等待键(0);
返回0;
}

我认为
CV\u WINDOW\u AUTOSIZE
常量已包含在某个头文件中,但我找不到必要的头文件

您可以在
highgui.h

中找到它,因为所有的窗口都在highgui模块中,所以您需要

#include <opencv2/highgui/highgui.hpp>
#包括

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

CV_WINDOW_AUTOSIZE
实际上可以在
highgui.h
中找到,但正如@berak在评论中指出的,这是过时的c-api的一部分。你应该做两件事中的一件:

    使用“代码> Windows WORKSIZHEATION/COMPUTE”,这是C++ API的一部分。您不需要更改任何其他内容来实现此功能,甚至不需要包含示例中尚未包含的内容
  • 改用
    namedWindow(“显示图像”)
    ,因为默认情况下namedWindow使用
    WINDOW\u AUTOSIZE
    ,所以您甚至不必将其作为参数

针对OpenCV 3.0.0进行了测试,在OpenCV 3.1中,似乎需要使用
cv::WindowFlags::WINDOW\u AUTOSIZE
,它位于

中,在版本4中进行了更改。 如果您在示例中使用名称空间cv进行了定义,则可以直接使用AUTOSIZE。
另外,不要忘记为opencv添加正确的依赖项。对于opencv 4,它是在

中定义的。我有相同的问题和用法

窗口\自动调整大小,而不是

CV_窗口_自动调整大小


然而,这对我来说并不管用。这是为什么?@leinaD_natipaC-您使用的是过时的c-api(不要这样做!),上面的答案是针对2.4.9的,那么我应该使用什么?include没有任何作用,即使CMake说它是针对opencv_highgui(message(“${opencv_LIBS}”)-->[…];opencv_highgui;[…])链接可执行文件,但其他一切都可以正常工作,所以我不知道我做错了什么。没关系,只是发现我读的文档都错了。不过,您使用c-api的想法是对的。这对OpenCV 3.0很好。非常感谢。是的,版本在这种开源的东西中很重要。每当一个最近流行的库得到更新,所有的教程和故障排除都会过时,直到数小时毫无结果的调查之后,才有人意识到这一点。