我曾尝试从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
常量已包含在某个头文件中,但我无法找到必要的头文件。
答案 0 :(得分:7)
CV_WINDOW_AUTOSIZE
实际上 在highgui.h
中找到,但是@berak在评论中指出, &#39; s过时的c-api的一部分。你应该做两件事之一:
WINDOW_AUTOSIZE
代替,这是C ++ API的一部分。你不需要改变任何其他东西来使这项工作,甚至不包括#include在示例中已经#include的任何东西。namedWindow( "Display Image" )
,因为namedWindow默认使用WINDOW_AUTOSIZE
,因此您甚至不必将其作为参数包含在内。经过OpenCV 3.0.0测试
答案 1 :(得分:3)
对于opencv 4,它是在<opencv2/highgui/highgui_c.h>
答案 2 :(得分:1)
因为所有窗口化内容都在highgui模块中,所以你需要
#include <opencv2/highgui/highgui.hpp>
此外,您需要稍后链接对抗opencv_highgui库
答案 3 :(得分:1)
版本4已更改。 如果已使用示例中的名称空间cv进行定义,则可以直接使用WIDOW_AUTOSIZE。 另外,不要忘记为opencv添加正确的依赖项
答案 4 :(得分:0)
在OpenCV 3.1中,您需要使用位于cv::WindowFlags::WINDOW_AUTOSIZE
的{{1}}。
答案 5 :(得分:0)
我有相同的问题并使用
WINDOW_AUTOSIZE代替
CV_WINDOW_AUTOSIZE
答案 6 :(得分:-1)
您可以在highgui.h
找到它。