コンテンツにスキップ

Top

Windows の VideoCapture(0) が固まる!

LinuxでWebカメラの画像をOpenCVのVideoCaptureで取得したところなんの問題もなくすぐできた。

が、そのコードをWindowsに持っていったら固まった。

正確には30秒ほど待たされて動き出し、以降のreadは何も問題なく動いていた。VideoCaptureだけ待たされれている。

あと、この現象はUSBカメラでのみ起こり、ノートPC本体についているフロントカメラでは起きなかった。

なんそれ!?

おまじないすると治った

import cv2 より先に

1
2
import os
os.environ["OPENCV_VIDEOIO_MSMF_ENABLE_HW_TRANSFORMS"] = "0"

と記述したら治った!

import cv2 より先にが大事。後だと意味ない。

確認用おソース

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
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()

以上!