私はopencv 2.4.2、python 2.7を使用しています。次の簡単なコードは正しい名前のウィンドウを作成しましたが、その内容は空白であり、画像を表示しません。
import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow',img)
誰もがこの問題について知っていますか?
imshow()
はwaitKey()
でのみ動作します:
import cv2
img = cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow', img)
cv2.waitKey()
(ウィンドウを更新するために必要なメッセージループ全体がそこに隠されています。)
ここで私のために働いた答えを見つけました: http://txt.arboreus.com/2012/07/11/highgui-opencv-window-from-ipython.html
インタラクティブなipythonセッションを実行し、highguiウィンドウを使用する場合は、最初にcv2.startWindowThread()を実行します。
詳細:HighGUIは、OpenCVコードから画像とビデオを表示するための簡略化されたインターフェイスです。次のように簡単にする必要があります。
import cv2
img = cv2.imread("image.jpg")
cv2.startWindowThread()
cv2.namedWindow("preview")
cv2.imshow("preview", img)
cv2.waitKey(0)
の後にcv2.imshow("window",img)
を使用する必要があります。そうして初めて機能します。
import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('Window',img)
cv2.waitKey(0)
私は同じ問題に直面しました。 IDLEから画像を読み取って、cv2.imshow()
を使用して表示しようとしましたが、表示ウィンドウがフリーズし、ウィンドウを閉じるときにpythonw.exe
が応答していません。
以下の投稿は、これが起こっている理由の可能な説明を提供します
「基本的には、IDLEからこれを行わないでください。スクリプトを記述し、シェルまたはWindowsの場合はスクリプトから直接実行します。拡張子.pywを付けてダブルクリックします。明らかにIDLE自身のイベントループとGUIツールキットのイベントループとの間に競合があります。 "
スクリプトでimshow()
を使用し、それをIDLEで直接実行するのではなく実行すると、機能しました。
Pythonコンソール内で実行している場合、これを実行します。
img = cv2.imread("yourimage.jpg")
cv2.imshow("img", img); cv2.waitKey(0); cv2.destroyAllWindows()
を押すと Enter イメージ上で、イメージが正常に閉じられ、他のコマンドの実行を続行できます。
最後にcv2.waitKey(0)
を追加します。
このスレッドのどこかに必要なものがすべて揃っています。
if cv2.waitKey(): cv2.destroyAllWindows()
iDLEでうまく動作します。
私にとっては、0より大きい数を持つwaitKey()が機能しました
cv2.waitKey(1)
「cv2.waitKey(0)」を使用する場合は、「cv2.waitkey(0)」ではなく「cv2.waitKey(0)」を記述してください。小文字の「k」もプログラムをフリーズする可能性があります。 。
これを機能させていない場合は、
import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('Window',img)
cv2.waitKey(0)
1つのファイルにまとめて実行します。
エラー:(-215)関数imshowでsize.width> 0 && size.height>
このエラーは、画像が見つからないために発生します。そのため、imshow関数のエラーではありません。