はじめに
OpenCV2系と3系ではビデオキャプチャ周りのAPIが大きく変わったようです。3系にバージョンアップした際に、2系のコードが動作しなくなり手間取ったため簡単にまとめておきます。
環境
以下の環境で動作確認しています。
デバイス等 | バージョン |
---|---|
Raspberry Pi3 Model B | - |
RASPBIAN STRETCH WITH DESKTOP | November 2017 |
Python3 | 3.5.3 |
OpenCV3 | 3.3.1 |
Logicool HD Webcam C270 | - |
Python3系+OpenCV3系でUSBカメラを扱う
OpenCV3系を使ってUSBカメラの動画を表示する処理は以下のような感じになります。
import cv2
import time
capture = cv2.VideoCapture(0)
capture.set(3,320) # 幅
capture.set(4,240) # 高さ
capture.set(5,30) # FPS
while True:
ret, image = capture.read()
cv2.imshow("camera",image)
if cv2.waitKey(10) > 0:
break
capture.release()
cv2.destroyAllWindows()
Python3系+OpenCV2系でUSBカメラを扱う
ちなみにOpenCV2系では以下のようなコードを使用していました。
import cv2.cv as cv
import time
cv.NamedWindow("camera",1)
capture = cv.CaptureFromCAM(0)
cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH,320)
cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT,240)
while True:
img = cv.QueryFrame(capture)
cv.ShowImage("camera",img)
if cv.WaitKey(10) > 0:
break
cv.DestroyAllWindows()
参考
以下のサイトを参考にさせて頂きました。ありがとうございます。
OpenCV 2系からOpenCV 3系に乗り換えた時に引っかかる"CV_CAP_PROP_XXX(propId)"の対応表