Windows の VideoCapture(0) が固まる!
LinuxでWebカメラの画像をOpenCVのVideoCaptureで取得したところなんの問題もなくすぐできた。
が、そのコードをWindowsに持っていったら固まった。
正確には30秒ほど待たされて動き出し、以降のreadは何も問題なく動いていた。VideoCaptureだけ待たされれている。
あと、この現象はUSBカメラでのみ起こり、ノートPC本体についているフロントカメラでは起きなかった。
なんそれ!?
おまじないすると治った
import cv2 より先に
import os
os.environ["OPENCV_VIDEOIO_MSMF_ENABLE_HW_TRANSFORMS"] = "0"
と記述したら治った!
import cv2 より先にが大事。後だと意味ない。
確認用おソース
import os
os.environ["OPENCV_VIDEOIO_MSMF_ENABLE_HW_TRANSFORMS"] = "0"
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
cv2.imshow('title', frame)
k = cv2.waitKey(1)
if k == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
以上!