web-dev-qa-db-ja.com

cv2.imshowコマンドがopencv-pythonで適切に機能しない

私はopencv 2.4.2、python 2.7を使用しています。次の簡単なコードは正しい名前のウィンドウを作成しましたが、その内容は空白であり、画像を表示しません。

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow',img)

誰もがこの問題について知っていますか?

81
top.eng

imshow()waitKey()でのみ動作します:

import cv2
img = cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow', img)
cv2.waitKey()

(ウィンドウを更新するために必要なメッセージループ全体がそこに隠されています。)

174
berak

ここで私のために働いた答えを見つけました: 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)
34
Akhorus

cv2.waitKey(0)の後にcv2.imshow("window",img)を使用する必要があります。そうして初めて機能します。

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('Window',img)
cv2.waitKey(0)
19
AdityaIntwala

私は同じ問題に直面しました。 IDLEから画像を読み取って、cv2.imshow()を使用して表示しようとしましたが、表示ウィンドウがフリーズし、ウィンドウを閉じるときにpythonw.exeが応答していません。

以下の投稿は、これが起こっている理由の可能な説明を提供します

pythonw.exeが応答しません

基本的には、IDLEからこれを行わないでください。スクリプトを記述し、シェルまたはWindowsの場合はスクリプトから直接実行します。拡張子.pywを付けてダブルクリックします。明らかにIDLE自身のイベントループとGUIツールキットのイベントループとの間に競合があります。 "

スクリプトでimshow()を使用し、それをIDLEで直接実行するのではなく実行すると、機能しました。

7
rkdasari

Pythonコンソール内で実行している場合、これを実行します。

img = cv2.imread("yourimage.jpg")

cv2.imshow("img", img); cv2.waitKey(0); cv2.destroyAllWindows()

を押すと Enter イメージ上で、イメージが正常に閉じられ、他のコマンドの実行を続行できます。

6
Dharma

最後にcv2.waitKey(0)を追加します。

4
Pygirl

このスレッドのどこかに必要なものがすべて揃っています。

if cv2.waitKey(): cv2.destroyAllWindows()

iDLEでうまく動作します。

3
iamchriskelley

私にとっては、0より大きい数を持つwaitKey()が機能しました

    cv2.waitKey(1)
2
RamG

「cv2.waitKey(0)」を使用する場合は、「cv2.waitkey(0)」ではなく「cv2.waitKey(0)」を記述してください。小文字の「k」もプログラムをフリーズする可能性があります。 。

2

これを機能させていない場合は、

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('Window',img)
cv2.waitKey(0)

1つのファイルにまとめて実行します。

1
Joseph

エラー:(-215)関数imshowでsize.width> 0 && size.height>

このエラーは、画像が見つからないために発生します。そのため、imshow関数のエラーではありません。

0