たぶん全然初歩的な質問ではないですよ。
たとえばStackoverflowのuser1899365さんの回答が参考になりますね。
- LinuxベースのOS(MACを含む)のバグ
- 質問に短く答えるなら
waitKey()
をはさめばOK
だそうです。
user1899365さんがさらに勧めるリンク先(stackoverflow)のsusmitsさんによれば、
- OpenCVをGUI(Gtk+)で使った時のクセで、
cv2.destroyAllWindows()
をしたときにWindowを閉じるのがポシャる
cv2.destroyAllWindows()
の後にイベントを起こすためにwaitKey()
を入れる
- ただ、
waitKey()
が有効なのはWindowがアクティブな間だけなので、次のcv2.destroyAllWindows()
を呼び出さない限りまだ表示されているかも
また、elaRoscaさんによれば、
- windowを作るときに
cv.StartWindowThread()
をして、そこで表示
恐らく一番良い対策は、同欄のコメントにあるwaitKey()
とcv.StartWindowThread()
を合わせるとさらによい、だと思いますので、その様に実装するのが良いと思います。
コピペですが…
Python
1import cv2 as cv
2import time
3
4WINDOW_NAME = "win"
5
6image = cv.imread("ela.jpg", cv.CV_LOAD_IMAGE_COLOR)
7cv.namedWindow(WINDOW_NAME, cv.CV_WINDOW_AUTOSIZE)
8initialtime = time.time()
9
10cv.startWindowThread()
11
12while (time.time() - initialtime < 5):
13 print "in first while"
14cv.imshow(WINDOW_NAME, image)
15cv.waitKey(1000)
16
17cv.waitKey(1)
18cv.destroyAllWindows()
19cv.waitKey(1)
20
21initialtime = time.time()
22while (time.time() - initialtime < 6):
23 print "in second while"
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/30 11:24
退会済みユーザー
2017/12/30 13:40