2013-10-10 257 views
17

我目前正在閱讀圖像並將其顯示到窗口。我已成功完成此操作,但在顯示圖像後,窗口僅允許我看到完整圖像的一部分。我嘗試加載後保存圖像,並保存了整個圖像。所以我相當肯定它正在讀取整個圖像。Python - OpenCV - imread - 顯示圖像

imgFile = cv.imread('1.jpg') 

cv.imshow('dst_rt', imgFile) 
cv.waitKey(0) 
cv.destroyAllWindows() 

圖片: image

截圖: screenshot

+1

您正在使用舊版本(用於名爲'cv2'的新模塊)。嘗試更新它。 – Igonato

+0

對不起,我忘記提及我正在使用cv2作爲cv。 –

+0

這段代碼看起來不錯。你能告訴我們一個截圖嗎? – Igonato

回答

21

貌似圖片太大,窗口根本不適合屏幕。 使用cv2.WINDOW_NORMAL標誌創建窗口,它將使其具有可伸縮性。然後,你可以調整大小以適應你的屏幕是這樣的:

from __future__ import division 
import cv2 


img = cv2.imread('1.jpg') 

screen_res = 1280, 720 
scale_width = screen_res[0]/img.shape[1] 
scale_height = screen_res[1]/img.shape[0] 
scale = min(scale_width, scale_height) 
window_width = int(img.shape[1] * scale) 
window_height = int(img.shape[0] * scale) 

cv2.namedWindow('dst_rt', cv2.WINDOW_NORMAL) 
cv2.resizeWindow('dst_rt', window_width, window_height) 

cv2.imshow('dst_rt', img) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

According to the OpenCV documentationCV_WINDOW_KEEPRATIO標誌也應該這樣做,但它沒有,它甚至不是Python模塊中提供價值。

+0

這工作出色!圖像創建的很小,但我可以點擊並拖動來放大窗口。謝謝! –

+0

使用浮點screen_res得到正確縮放的起始圖像: 'screen_res = 1280.,720.' – Marc

+0

@Marc'from __future__ import division'查看 – Igonato

3

這可以幫助你

namedWindow("Display window", CV_WINDOW_AUTOSIZE);// Create a window for display. 
imshow("Display window", image);     // Show our image inside it.