"Diary" インターネットさんへの恩返し

いつもソースコードコピペばかりなので,みなさまへ少しばかりの恩返しを

SimpleCV on raspberry piがwebカメラを認識しない(悲)



スポンサーリンク


↑↑↑↑こんな顔認識で、人の動きに合わえて、ちょうちょ飛ばしたり、なんかインタラクティブに遊べるおもちゃを作りたくて、ラズパイ☓simpleCVにチャレンジした。

結果。。。WebカメラELECOM WEBカメラ 130万画素 1/4インチCMOSセンサ ガラスレンズ・LEDライト搭載 マイク内蔵 イヤホンマイク付 ホワイト UCAM-DLK130TWH
)接続して、raspberry piで顔認識をトライしたくいろいろやってみたが上手くいかず。以下に記録を残す。

参考にした手順はこちら

気になる手順はこちら

あとバイブルのこちら

必要なモノのインストール

ライブラリ関係のインストール。

$ sudo apt-get install python-pygame python-scipy python-numpy

インストールツールpipのインストール

$ sudo apt-get install python-pip

SimpleCVのインストール

$ git clone git://github.com/sightmachine/SimpleCV.git
$ cd SimpleCV
$ sudo python setup.py install

svgwriteのインストール

$ sudo pip install svgwrite

カメラテスト(luvciew)

まずは、luvcviewでカメラテストをしようとしたが以下のエラーでテスト表示もできない。他のRaspberry pi機ではうまく行ったのになんでだろう。

SLD information:
  Video driver:X11
  A windows manager is available
Device information:
  Device path: /dev/video0
Stream settings:
  Frame format: YUYV
libv4l2:error setting pixformat: Device or resource busy
Unable to set format: Device or resource busy
 Init v4lL2 failed!! exit fatal

原因がよくわからないので dmseg コマンドを実行してみる。

[ 1445.835810] usb 1-1.2: USB disconnect, device number 4
[ 1452.476167] usb 1-1.2: new high-speed USB device number 6 using dwc_otg
[ 1452.607264] usb 1-1.2: New USB device found, idVendor=056e, idProduct=700f
[ 1452.607295] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1452.607312] usb 1-1.2: Product: ELECOM UCAM-DLK130T
[ 1452.607328] usb 1-1.2: Manufacturer: ELECOM
[ 1452.612035] uvcvideo: Found UVC 1.00 device ELECOM UCAM-DLK130T (056e:700f)
[ 1452.615521] input: ELECOM UCAM-DLK130T as /devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/input/input1
[ 1462.916953] uvcvideo: Failed to set UVC probe control : -32 (exp. 26).

う~ん、最後の行が怪しい。

uvcvideo: Failed to set UVC probe control : -32 (exp. 26)

カメラテスト(guvcview)

guvcview でテストしてみよう。表示できた。

sudo apt-get install guvcview

プログラム実行

好きなファイル名で以下のプログラムを保存。(test.pyで保存した)

import time
from SimpleCV import *

camera = Camera(0)

while True:
        img = camera.getImage()
        img.show()
        time.sleep(1)

test.pyを実行。

sudo python test.py

VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
libv4l2: error setting pixformat: Device or resource busy
HIGHGUI ERROR: libv4l unable to ioctl S_FMT
libv4l2: error setting pixformat: Device or resource busy
libv4l1: error setting pixformat: Device or resource busy
HIGHGUI ERROR: libv4l unable to ioctl VIDIOCSPICT

WARNING: caught exception: SystemError('ioctl(VIDIOC_S_FMT) failure: no support$
WARNING: SimpleCV can't seem to find a camera on your system, or the drivers do$
ERROR:
Traceback (most recent call last):
  File "test.py", line 7, in <module>
    img = camera.getImage()
  File "/usr/local/lib/python2.7/dist-packages/SimpleCV-1.3-py2.7.egg/SimpleCV/$
    cv.GrabFrame(self.capture)
TypeError: Expected CvCapture for argument 'capture'


続いて、「Raspberry Piをはじめよう (Make: PROJECTS)」の138pにあるpythonスクリプトを実行して SimpleCV でカメラを操作するを試みるも、上記同様のエラーで上手くいかず。

#pygame install on linux mint(http://inventwithpython.com/pygame/chapter1.html)