【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文件路徑
        這樣就解決了顯示兩個窗口的問題。
在這裏插入圖片描述
        如果設置完成後還是不起作用可以重新生成解決方案試一下
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章