web-dev-qa-db-ja.com

Pythonでcv2を使用して画像を表示するにはどうすればよいですか?

私は映画のフレームを表示するコードを扱ってきました。コードの基本は次のとおりです。

import cv2
import matplotlib.pyplot as plt

# Read single frame avi
cap = cv2.VideoCapture('singleFrame.avi')
rval, frame = cap.read()

# Attempt to display using cv2 (doesn't work)
cv2.namedWindow("Input")
cv2.imshow("Input", frame)

#Display image using matplotlib (Works)
b,g,r = cv2.split(frame)
frame_rgb = cv2.merge((r,g,b))
plt.imshow(frame_rgb)
plt.title('Matplotlib') #Give this plot a title, 
                        #so I know it's from matplotlib and not cv2
plt.show()

Matplotlibを使用して画像を表示できるため、問題なく読み取れていることがわかります。

ウィンドウの作成とcv2を使用して画像を表示しようとする理由がわかりません。 cv2ウィンドウは表示されません。奇妙なことに、2つ目のcv2ウィンドウを作成すると、「入力」ウィンドウが表示されますが、これは空白/白いウィンドウにすぎません。

ここで何が欠けていますか?

18
user1245262

私が見る限り、あなたはそれをほとんど上手くやっています。不足していることが1つあります。

cv2.imshow('image',img)
cv2.waitKey(0)

そのため、おそらくウィンドウは表示されますが、非常に速く閉じられます。

41
phev8