21
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Python】opencvでWebカメラの起動に時間がかかる問題の対処

Last updated at Posted at 2022-03-03

はじめに

USB経由で接続されたWebカメラの起動に30秒~1分ほどかかっており、いらいらしたので対処法を探しておりました。しかし調べ方が未熟なせいもあって解決に時間がかかりました。

capture = cv2.VideoCapture(1) ←具体的にはここがボトルネック。

対象者

この記事は下記のような人を対象にしています。

  • 同じ悩みを持ち、ちょっとでも短時間でWebカメラを起動したいと思った人

環境

  • Windows10
  • Python3.7

結論

opencvのissueをたどってみると解決法がありました。
MSMFバックエンドの設定部分で問題が起きていたみたい。

# cv2のインポート前にカメラに関する設定を行う
# https://github.com/opencv/opencv/issues/17687
import os
os.environ["OPENCV_VIDEOIO_MSMF_ENABLE_HW_TRANSFORMS"] = "0"
import cv2

検証

Webカメラの起動が本当に速くなったのか手元の環境で実験しました。
使ったWebカメラはロジクール Webカメラ C270n です。
サンプルプログラムをお借りしました。

# cv2のインポート前にカメラに関する設定を行う
import os
os.environ["OPENCV_VIDEOIO_MSMF_ENABLE_HW_TRANSFORMS"] = "0"

import cv2
from time import time

# VideoCapture オブジェクトを取得します
st_time = time()
capture = cv2.VideoCapture(1)
ed_time = time()
print(f"elapsed time: {ed_time - st_time}")

while(True):
    ret, frame = capture.read()
    cv2.imshow('title',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

capture.release()
cv2.destroyAllWindows()

カメラの設定を入れる前
elapsed time: 33.045
カメラの設定を入れた後
elapsed time: 0.7440

カメラの起動にかかる時間が33秒から0.7秒に短縮された。

おわりに

もちろん個体差があるだろうが、カメラが起動するまでモヤモヤする時間が
少しでも短くなると思うと嬉しい。

21
12
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?