コンテンツにスキップ

Top

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()

以上!