【OpenCV】imshow()和namedWindow()之间的关系,解决两个窗口问题

imshow()

    方法原型void imshow(const string& winname, InputArray mat);
    作用: 在指定的窗口显示图片。
    参数

  1. const string& winname:显示图片的窗口名称。
  2. InputArray mat:需要显示的mat图像。

namedWindow()

    方法原型void namedWindow(const string& winname,int flags=WINDOW_AUTOSIZE );
    作用: 创建一个窗口。
    参数

  1. const string& winname:标识创建的窗口名称。
  2. int flag:窗口的标识。(不写此参数则默认为WINDOW_AUTOSIZE)

        WINDOW_NORMAL->用户可随意改变窗口的大小。
        WINDOW_AUTOSIZE->窗口自动调整大小适应图像大小。
        WINDOW_OPENGL->窗口创建支持OpenGL。

关系

    如果只用imshow()显示一张图片的话,该窗口显示的图片是不可交互的。(不可放大,做小操作)
在这里插入图片描述
    但是如果在imshow()之前加上namedWindow()方法来显示一张图片的话,该窗口显示的图片是可交互的。(可以放大缩小之类的操作,不知道录屏的时候鼠标怎么没有显示出来。)
    注意:
        1、这里使用imshow()和namedWindow()方法时候窗口的标识名称(传递的第一个参数)要一样。
        2、namedWindow()方法要写在imshow()方法之前才可以。

在这里插入图片描述

常见问题

        有些朋友同时使用imshow()和namedWindow()显示图片的时候发现出现了两个窗口。
在这里插入图片描述
        这是由于配置问题导致的。
        1、【视图】->【其他窗口】->【属性管理器】
        2、展开Debug|x64,右键【Microsoft.Cpp.x64.user】,点击属性。
        3、【通用属性】->【链接器】->【输入】->【附加的依赖项】
在这里插入图片描述
        这里添加了两个依赖项,修改一下顺序,.lib文件最后带d的放在前面,或者直接去掉不带d的lib文件路径
        这样就解决了显示两个窗口的问题。
在这里插入图片描述
        如果设置完成后还是不起作用可以重新生成解决方案试一下
在这里插入图片描述

发布了3 篇原创文章 · 获赞 2 · 访问量 387

猜你喜欢

转载自blog.csdn.net/weixin_43243787/article/details/104755685