雑記帳

ソフトを中心に雑記を書いてる割とすぐ転職したい人。コメント貰えると私が喜びます。

OpenCVでの画像キャプチャで少し困った

出来事

そんなに難しいことではないけど、半日くらい調べてたので雑記。
下のUSBカメラを使っていて、なぜか1280x1024以上の解像度の画像を取得出来ない問題を調べた話。

結果

以下の部分がポイント。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