2015-12-03 112 views
0

我嘗試使用cv2.imshow()來顯示圖像,但是我發現結果是自動填充空白。我使用的代碼如下:opencv cv2.imshow自動添加填充到小圖像

import cv2 
if __name__ == '__main__': 
    img = cv2.imread('test2.png') 
    cv2.imshow('dafasf', img) 
    key = cv2.waitKey(0) 
    if key == 27: # ESC 
    cv2.destroyAllWindows() 

the image I usedenter image description here

+1

你可以嘗試用一個更大的圖像?也許它有一個最小的窗口大小,你的圖像比那更小? – guneykayim

+0

你是對的,當我嘗試一個更大的圖像時沒有問題。也許在OpenCV中有一個最小窗口大小。我們可以使用cv2.WINDOW_NORMAL標籤根據以下答案手動控制窗口大小。 –

回答

2

默認情況下imshowWINDOW_AUTOSIZE屬性創建窗口對象。這意味着窗口大小由某個前端(GUI)確定,其中OpenCV已編譯。

您的圖像並未真正改變,它只是顯示問題。

如果您想手動控制窗口屬性,可以嘗試使用imshow調用之前的屬性創建namedWindow,即i。即是這樣的:

cv2.namedWindow("window name", cv2.WINDOW_NORMAL) 
cv2.imshow("window name", img) 

根據documentation有3個屬性的窗口顯示(WINDOW_NORMALWINDOW_AUTOSIZEWINDOW_OPENGL),但具有下列簡單的代碼片段,你可以決定你的實際支持的值(在我的版本我看到WINDOW_FREERATIOWINDOW_FULLSCREENWINDOW_AUTOSIZEWINDOW_NORMALWINDOW_KEEPRATIOWINDOW_OPENGL):

[i for i in list(cv2.__dict__.keys()) if i[:6] == 'WINDOW']