OpenCVでの画像キャプチャで少し困った
出来事
そんなに難しいことではないけど、半日くらい調べてたので雑記。
下のUSBカメラを使っていて、なぜか1280x1024以上の解像度の画像を取得出来ない問題を調べた話。
ホーザン(HOZAN) USBカメラ(レンズなし) WEBカメラ 最大フレームレート30fps 500万画素 画像撮影、計測機能付き L-835
- 出版社/メーカー: ホーザン
- メディア: Tools & Hardware
- この商品を含むブログを見る
結果
以下の部分がポイント。6や5あたりの設定の順番が何気に重要だった。
設定順を間違えると真っ黒画像になります。理由は知らない。逆順に設定した方が良い?
cap0.set(6,cv2.VideoWriter_fourcc(*'MJPG')) cap0.set(5,10) cap0.set(4,1944) cap0.set(3,2592)
コード
import numpy as np import cv2 cap0 = cv2.VideoCapture(0) cap0.set(6,cv2.VideoWriter_fourcc(*'MJPG')) cap0.set(5,10) cap0.set(4,1944) cap0.set(3,2592) for c,x in enumerate(range(37)): print("%4d:%s"%(c,cap0.get(x))) while(True): ret, frame0 = cap0.read(0) cv2.imshow('frame1',frame0) if cv2.waitKey(1) & 0xFF == ord('q'): break cap0.release() cv2.destroyAllWindows()
参考
OpenCV 3(core + contrib)をWindows & Python 3の環境にインストール&OpenCV 2とOpenCV 3の違い&簡単な動作チェック - Qiita
Capturing 1080p at 30fps from logitech c920 with openCV 2.4.3 - Stack Overflow