imshow()
方法原型: void imshow(const string& winname, InputArray mat);
作用: 在指定的窗口顯示圖片。
參數:
const string& winname
:顯示圖片的窗口名稱。InputArray mat
:需要顯示的mat圖像。
namedWindow()
方法原型: void namedWindow(const string& winname,int flags=WINDOW_AUTOSIZE );
作用: 創建一個窗口。
參數:
const string& winname
:標識創建的窗口名稱。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文件路徑
這樣就解決了顯示兩個窗口的問題。
如果設置完成後還是不起作用可以重新生成解決方案試一下