どーもこんにちはKeita_Nakamori(´・ω・`)です。
今日は、WindowsマシンからラズベリーパイにVNC接続してOpenCVで cv2.VideoCapture(0)に挑戦します。
まずはrealVNC viewerを起動してIPアドレスを打ってVNC接続します。
1回つなげたことのあるIPアドレスは保存され、アイコンみたいに表示されるので2回目からはアイコンをクリックするだけの簡単操作でした。
落とし穴
早速ハマりました。cap=cv2.VideoCapture(0)してもcapにはなにもデータが入ってきません。ふぁ~(*´Д`)
ret, img = cap.read() しても、当然imgはNoneです。
なぜだ!
思い出しました
そう、かつてハマりまくった、あのときを・・・
ラズパイ専用カメラをしようしているので、一般的なwebカメラとして認識できるように下記のコードを実行することが必要でした。
注意点としては 最後の部分は 「ぶい よん える に」 です。
「ぶい よん いち に」 だと思って奮闘してしまいました。
sudo modprobe bcm2835-v4l2
ということで、shellでsudo modprobe bcm2835-v4l2と打ってカメラを認識させます。
テストコードを実行すると・・・
はい、隣の部屋のソファーが写っています。
弱点
ラズパイはwifi接続、Windowsマシンは有線ですが、VNC解像度をミディアムにしても、カメラのキャプチャー映像はガックガク!!です。
低解像度だと色がキッタナイ!
どうにもなりません。
念の為、試運転のコードを貼っておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# -*- coding: utf-8 -*- import numpy as np import cv2 cap = cv2.VideoCapture(0) while(True): # Capture frame-by-frame ret, frame = cap.read() # Our operations on the frame come here gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Display the resulting frame cv2.imshow('frame',frame) if cv2.waitKey(1) & 0xFF == ord('q'): break # When everything done, release the capture cap.release() cv2.destroyAllWindows() |