Introduction

WebCamをVirtualBox上のゲストOS Debian with Raspberry Pi Desktop に接続してキャプチャをしても動かない件。
具体的には、

1
select timeout 

と表示され何も動作しない。

Resolution

下記のページが参考になりました。

I have change the usb setting in VM ware settings and make it to support USB 3.0. On the other hand I attached the camera to a USB 2.0 port and that works both of them

要するに、

  • USB 3.0をサポートするように仮想マシンの設定を変更
  • カメラをUSB 2.0ポートに接続

ということ。
仮想マシン設定のUSBから USB 3.0 (xHCI) コントローラーに変更すればOKです。

これでうまく動きます。
コードは下記です。

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import cv2

c = cv2.VideoCapture(0)
c.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 1200)
c.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 800)
r, img = c.read()
cv2.imwrite('./capture.jpg', img)
c.release()

ただ、上のコードだと保存される画像が、960x544になっていました。

これは、指定したサイズがカメラでサポートしているサイズではなかったためです。
恐らく指定したサイズに何かしらのルールで近しいサイズに強制的に変更していると思われます。
テストしたカメラには、確かに960x544というサイズがありました。