概要
- らずぱいのCSIでつながってるカメラは、MMAL(Multi-Media Abstraction Layer)というAPIで使うらしい。
- OpenCVと一緒に組み合わせると、なかなか、いいフレームレートでなんかできそう?
- とりあえず、詳しいことはいいから、↓のサンプルを試す。
-
https://github.com/sodnpoo/rpi-mmal-opencv-modetect
OpenCVの動体検出と組み合わせてる。
環境
- Raspberry Pi 3
- らずぱい Camera V1 (OmniVision CMOS 5MP OV5647)
- らずぱい Camera V2 (Sony CMOS 8MP IMX219)
2016-05-27-raspbian-jessie.img
-
sudo raspi-config
でカメラ使えるようにしとく
手順
-
sudo raspi-config
でカメラ使えるようにしとく.GPU_MEMも多めにしとく? -
sudo apt-get install cmake libopencv-dev git
-
READMEに沿って。そのままだとエラー出るので、ちょいとパッチを当てる。
mkdir -p /home/pi/src/raspberrypi
cd /home/pi/src/raspberrypi
git clone --depth 1 https://github.com/raspberrypi/userland.git
make -C /opt/vc/src/hello_pi/libs/vgfont
git clone https://github.com/sodnpoo/rpi-mmal-opencv-modetect
cd rpi-mmal-opencv-modetect
3. vi ./opencv_modect.c
パッチ
```c:opencv_modect.c
...
# include <opencv2/core/core_c.h>
//コメントアウト-#include <opencv2/objdetect/objdetect.hpp>
# include <opencv2/highgui/highgui_c.h>
//コメントアウト-#include <opencv2/imgproc/imgproc.hpp>
//コメントアウト-#include <opencv2/video/video.hpp>
# include <opencv2/imgproc/imgproc_c.h> //追加.
...
-
ビルド
mkdir build
cd build
cmake ../
make
5. `./mmal_opencv_modect > video.h264`<br>実行。<br>物体の動きを検出すると、標準出力に h264のストリームを出力、メッセージは標準エラー出力.
`video.h264`は、VLCとかで再生できる
```shell-session:実行例
pi@raspberrypi:~/src/raspberrypi/rpi-mmal-opencv-modetect/build$ ./mmal_opencv_modect > video.h264
VIDEO_WIDTH : 1280
VIDEO_HEIGHT: 720
VIDEO_FPS : 30
camera video buffer_size = 2764800
camera video buffer_num = 2
camera created
encoder input buffer_size = 1382400
encoder input buffer_num = 2
encoder output buffer_size = 65536
encoder output buffer_num = 1
encoder input pool has been created
encoder output pool has been created
encoder has been created
FPS: OpenCV = 26.93, Video = 30.56
MOTION DETECTED (28)
MOTION DETECTED (712)
KEYFRAME (1467786643:1)
MOTION DETECTED (1530)
MOTION DETECTED (1578)
MOTION DETECTED (2419)
MOTION DETECTED (2361)
MOTION DETECTED (2976)
MOTION DETECTED (1767)
MOTION DETECTED (2269)
MOTION DETECTED (1598)
MOTION DETECTED (987)
MOTION DETECTED (536)
MOTION DETECTED (367)
MOTION DETECTED (458)
MOTION DETECTED (422)
MOTION DETECTED (350)
MOTION DETECTED (1063)
FPS: OpenCV = 28.38, Video = 30.28
FPS: OpenCV = 28.90, Video = 30.19
FPS: OpenCV = 29.17, Video = 30.14
FPS: OpenCV = 29.34, Video = 30.11
^C
130 pi@raspberrypi:~/src/raspberrypi/rpi-mmal-opencv-modetect/build$
=> いい感じのフレームレート
その他
オプション
-
-r
: rotation(0, 90, 180, 270) -
-w
: width (default 1280) -
-h
: height (default 720) -
-f
: fps (default 30) -
-s
: still filename --//every 60 seconds
というのがあるので、60秒毎??
vlcで rtspできるんじゃね?(>>[メモ] らずぱいカメラ VLCでストリーミング)
- らずぱい
./mmal_opencv_modect | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264
- Windowsで、VLC立ち上げて、Media>OpenNetworkStream>
rtsp://らずぱいIP:8554
で[Play]
- カメラを動かして、h264を吐き出させると、画像が出る。
- 前と同様、3秒ぐらいの遅延