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

OpenCV: where can I find CV_WINDOW_AUTOSIZE constants?

本文关键字:CV WINDOW AUTOSIZE 常量 在哪里 OpenCV      更新时间:2023-10-16

我尝试从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;  
}

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

CV_WINDOW_AUTOSIZE实际上确实可以在highgui.h中找到,但是,正如@berak在评论中指出的那样,这是过时的c-API的一部分。相反,您应该执行以下两项操作之一:

  • 请改用WINDOW_AUTOSIZE,这是 C++ API 的一部分。您无需更改任何其他内容即可完成此操作,甚至无需 #include 示例中尚未 #included 的任何内容。
  • 请改用namedWindow( "Display Image" ),因为 namedWindow 默认使用 WINDOW_AUTOSIZE,因此您甚至不必将其作为参数包含在内。

针对 OpenCV 3.0.0 进行测试

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

对于 opencv 4,它是在 <opencv2/highgui/highgui_c.h> 中定义的

由于所有窗口化的东西都在Highgui模块中,你需要

#include <opencv2/highgui/highgui.hpp>

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

我有同样的问题和使用

WINDOW_AUTOSIZE而不是

CV_WINDOW_AUTOSIZE

它在版本 4 中已更改。如果已使用命名空间 cv 定义,则可以直接使用 WIDOW_AUTOSIZE,如示例中所示。另外,不要忘记为 opencv 添加正确的依赖项

您可以在 highgui.h 中找到它。