2017-06-17 408 views
1

我最近在Debian OS上安裝了opencv 2.4.9和python。我寫了以下簡單代碼來顯示圖像Opencv imshow不會創建窗口

import numpy as np 
import cv2 


print "hello" 
cv2.namedWindow("show",0) 
print "hello1" 
# Load an color image in grayscale 
img = cv2.imread('image.jpg',0) 

print "hellp" 
cv2.imshow("show",img) 
cv2.waitKey(100) 

cv2.destroyAllWindows() 

我正在使用python 2 IDLE。當我運行程序時,只打印你好。另外「顯示」窗口不會被創建。我已經嘗試過其他的答案,比如「添加waitKey()或者創建窗口。但是在我的情況下沒有任何工作。

我對Raspberry和python很新。 「不打印?

**編輯*

由於imshow方法是行不通的,我試過matplotlib。不過,現在窗框是不會得到更新

import numpy as np 
import cv2 
from matplotlib import pyplot as plt 

cap = cv2.VideoCapture(0) 

while(True): 
    # Capture frame-by-frame 
    ret, frame = cap.read() 
    print "new frame" 
    # Our operations on the frame come here 
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    #cv2.imwrite("framenew.jpg",frame) 

    # Display the resulting frame 
    plt.imshow(gray,cmap ='gray') 
    plt.show() 

    if cv2.waitKey(0) & 0xFF == ord('q'): 
     break 

# When everything done, release the capture 
cap.release() 
cv2.destroyAllWindows() 

我想知道如何正確地使用這個庫

+1

嘗試使用'cv2.waitKey(0)',它可以解釋不顯示圖像 – magicleon

+0

如果您使用的是64位機器,您必須使用文檔中所述的'k = cv2.waitKey(0)&0xFF' '如果您使用的是64位機器,您將不得不修改k = cv2.waitKey(0)行,如下所示:k = cv2.waitKey(0)&0xFF' – warl0ck

+0

和大多數新的raspberry oi都是64位所以我認爲這可能是問題,看看上面的修復是否有助於這個 – warl0ck

回答

3

您可以將密鑰等待時間設置爲0秒作爲waitKey(0)。您的代碼waitKey(100)指示OpenCV等待100毫秒,然後銷燬該窗口。如果您將waitKey(5000)設置爲5秒鐘,則會顯示圖像5秒鐘並將其銷燬。

以下是相關的OpenCV Doc

功能waitKey等待鍵事件無限(當 延遲< = 0)或用於延遲毫秒,當它是正的。由於操作系統在切換線程之間至少有一段時間,因此 函數不會等待延遲毫秒,它將至少等待延遲 毫秒,具體取決於當時計算機上正在運行的其他程序。 如果在指定時間過去之前未按任何鍵 ,它將返回按下按鍵的代碼或-1。

下面是waitKey(),將永遠等待Q被按下之前銷燬imshow()窗口的樣本使用。

if cv2.waitKey(0) & 0xFF == ord('q'): 
    break 

希望得到這個幫助。

+0

我仍然看不到任何窗口.. – Anonymous