HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
English Translate 中文翻訳
LINK
BACK
 

[NEW] 2018/09/01

OpenCVから Raspberry Pi専用のカメラモジュール RaspiCamを使える様にする方法 OpenCVから Raspberry Pi専用のカメラモジュール RaspiCamを使える様にする方法

(ラズパイの専用カメラモジュール RaspiCamを OpenCVで使う方法、picamera、raspicam_cv)

Tags: [Raspberry Pi], [電子工作]





● OpenCVから Raspberry Pi専用のカメラモジュール RaspiCamを使える様にする方法

 画像処理ライブラリの定番の OpenCVはカメラデバイスからの画像入力にも対応していますが、そのままでは Raspberry Pi専用のカメラモジュール RaspiCamに対応していません。

 ラズパイの専用カメラモジュール RaspiCamを OpenCVで使う方法を説明します。


●ラズパイの専用カメラモジュール RaspiCamを OpenCVで使う方法

 下記の 2つの方法が有ります。
・ picamera - OpenCVを Python言語で使う場合
・ raspicam_cv - OpenCVを C言語、C++言語で使う場合


●ラズパイ専用カメラのインストール方法(カメラモジュールの接続方法)

 下記にまとめました。

2016/05/14
Raspberry Pi 3 Model Bに専用カメラモジュール RaspiCamを接続する方法
Raspberry Pi 3 Model Bに専用カメラモジュール RaspiCamを接続する方法

  ラズパイに専用カメラモジュールを接続して Raspbianで写真の静止画撮影や動画を録画する方法

2017/03/23
Raspberry Pi Zeroに専用カメラモジュール RaspiCam Zeroを接続する方法
Raspberry Pi Zeroに専用カメラモジュール RaspiCam Zeroを接続する方法

  ラズパイゼロに専用カメラモジュール を接続して Raspbianで写真の静止画撮影や動画を録画する方法

# コマンドラインでラズパイのカメラを有効にする方法(最後の数字は 0でカメラ有効、1でカメラ無効)
sudo raspi-config nonint do_camera 0

# カメラを有効にすると自動的に gpu_memが 128になります
cat /boot/config.txt | grep gpu_mem
# gpu_mem=128


● picamera - OpenCVを Python言語で使う場合

 Python言語の OpenCVで ラズパイの専用カメラモジュール RaspiCamを使う場合。

waveform80/picamera

picamera
 This package provides a pure Python interface to the Raspberry Pi camera module for Python 2.7 (or above) or Python 3.2 (or above).

● picameraのインストール方法

Raspbian installation

 コマンドラインで下記を実行して、ImportError: No module named picameraのエラーが出なければ OK。
 ※ Raspbian OS Debian Stretch 2018-06-27版では最初から入っていました。
# Python 2.7
python -c "import picamera"

# Python 3
python3 -c "import picamera"

# お決まりの sudo apt-get updateで最新状態に更新する
sudo apt-get update

# picameraを apt-get installでインストールする
# Raspbian installation
sudo apt-get -y install python-picamera python3-picamera

● picameraの動作確認

picamera - Basic Recipes

● Capturing to a file
capture.py
from time import sleep
from picamera import PiCamera

camera = PiCamera()
camera.resolution = (1024, 768)
camera.start_preview()
# Camera warm-up time
sleep(2)
camera.capture('capture.jpg')

●Capturing to a stream
stream.py
from io import BytesIO
from time import sleep
from picamera import PiCamera

# Create an in-memory stream
my_stream = BytesIO()
camera = PiCamera()
camera.start_preview()
# Camera warm-up time
sleep(2)
camera.capture(my_stream, 'jpeg')

capture2.py
from time import sleep
from picamera import PiCamera

# Explicitly open a new file called my_image.jpg
my_file = open('capture2.jpg', 'wb')
camera = PiCamera()
camera.start_preview()
sleep(2)
camera.capture(my_file)
# At this point my_file.flush() has been called, but the file has
# not yet been closed
my_file.close()

● Capturing to a PIL Image

 PIL = Python Imaging Library
# Pillowで必要なのでインストールする
sudo apt-get install libjpeg-dev

# Python 2.7
sudo pip install Pillow

# Python 3
sudo pip3 install Pillow

pil.py
from io import BytesIO
from time import sleep
from picamera import PiCamera
from PIL import Image

# Create the in-memory stream
stream = BytesIO()
camera = PiCamera()
camera.start_preview()
sleep(2)
camera.capture(stream, format='jpeg')
# "Rewind" the stream to the beginning so we can read its content
stream.seek(0)
image = Image.open(stream)

● picameraの pull request

picameraの pull request

 下記の内容はマージして取り込んでも良いのでは?>本家
Update mmalobj.py
#501 opened Aug 31, 2018 by wilcovantoorn

Remove unused io import
#482 opened Apr 13, 2018 by bennuttall

enable MMALPythonSource to send MJPEG and H264 streams
#460 opened Jan 16, 2018 by barney-NG

Automatic MP4 muxing without external tools
#441 opened Sep 12, 2017 by LizardM4

Update api_mmalobj.rst
#394 opened Mar 27, 2017 by MoiCJarod

Corrected 4x4 binning for v1 camera to 2x2
#388 opened Mar 13, 2017 by kozuch


● raspicam_cv - OpenCVを C言語、C++言語で使う場合

 C言語、C++言語の OpenCVで ラズパイの専用カメラモジュール RaspiCamを使う場合。

robidouille/raspicam_cv

robidouille/robidouille/pulls
・ Add rotate-option and flip-option.
・ Changed some headers in raspicam_cv for OpenCV v3.0.0

 以下のブランチに取り込みました。

● master
 Add rotate-option and flip-option
FREEWING-JP/robidouille/raspicam_cv/

● feature/support_OpenCV_v3
 Changed some headers in raspicam_cv for OpenCV v3.0.0
feature/support_OpenCV_v3/raspicam_cv/


● raspicam_cvのインストール方法

 下記手順で raspicam_cvをビルドします。
# お決まりの sudo apt-get updateで最新状態に更新する
sudo apt-get update

###Prerequisites### First make sure you have cmake and git installed:
sudo apt-get -y install cmake git

# You might also need gcc/g++ in case it's not already installed, along with some other libraries:
sudo apt-get -y install gcc g++ libx11-dev libxt-dev libxext-dev libgraphicsmagick1-dev libcv-dev libhighgui-dev

# You need the raspberry pi userland libraries:
mkdir -p ~/git/raspberrypi
cd ~/git/raspberrypi
git clone https://github.com/raspberrypi/userland.git
cd userland
./buildme
# 5分程度で完了

# Build the raspicam library
# Download Source code
mkdir -p ~/git
cd ~/git
# git clone https://github.com/robidouille/robidouille.git
# OpenCV v2 - master
git clone https://github.com/FREEWING-JP/robidouille.git -b master
# OpenCV v3 - feature/support_OpenCV_v3
# git clone https://github.com/FREEWING-JP/robidouille.git -b feature/support_OpenCV_v3
cd robidouille/raspicam_cv
mkdir objs
make
# 10秒程度で完了

ls -l
# pi@raspberrypi:~/git/robidouille/raspicam_cv $ ls -l
# -rw-r--r-- 1 pi pi 141012 Sep  2 19:20 libraspicamcv.a
# -rwxr-xr-x 1 pi pi 117264 Sep  2 19:20 libraspicamcv.so
# -rwxr-xr-x 1 pi pi 137868 Sep  2 19:20 raspicamtest


# This will create:
libraspicamcv.a: A static raspberry cam library which provides an opencv like interface
libraspicamcv.so: A shared library of the above
raspicamtest: A small test app which uses the static library. Execute with ./raspicamtest. Press Esc to exit.

./raspicamtest
 を X Windowから実行します。

# X Windowを起動
sudo systemctl start lightdm

 SSHのターミナルからは cannot open display X Windowが無え!と怒られます。
pi@raspberrypi:~/git/robidouille/raspicam_cv $ ./raspicamtest
(RaspiCamTest:17278): Gtk-WARNING **: cannot open display:

● OpenCV - Open Source Computer Vision

OpenCV - Transition guide

 Changes overview
 This document is intended to software developers who want to migrate their code to OpenCV 3.0.

 OpenCV 3.0 introduced many new algorithms and features comparing to version 2.4.
 Some modules have been rewritten, some have been reorganized.
 Although most of the algorithms from 2.4 are still present, the interfaces can differ.



● imutilsでラズパイ専用カメラモジュールを使用する方法

imutils 0.5.1
jrosebr1/imutils
imutils/demos/picamera_fps_demo.py

# ImportError: No module named imutils.video
# imutils.video

pip install imutils
# Successfully installed imutils-0.5.1
from imutils.video import VideoStream

# vs = VideoStream(src=0).start()
vs = VideoStream(usePiCamera=True).start()



Tags: [Raspberry Pi], [電子工作]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

Raspberry Pi 3系のトラブルであるある第一位の電源トラブル、低電圧警報に関する情報のまとめ
Raspberry Pi 3系のトラブルであるある第一位の電源トラブル、低電圧警報に関する情報のまとめ

  ラズパイ3B系での低電圧警報に関する情報まとめ、コマンドラインやログファイルから低電圧を検知する方法

Raspberry Piで CPUの脆弱性 Spectreと Meltdownの脆弱性をチェックする方法
Raspberry Piで CPUの脆弱性 Spectreと Meltdownの脆弱性をチェックする方法

  ラズパイで 2018年初頭に大騒ぎになったスペクターとメルトダウンの CPUの脆弱性をチェックする方法

Raspberry Pi Zero Wを海外通販の Pimoroni等での購入方法、購入出来る通販ショップ一覧まとめ
Raspberry Pi Zero Wを海外通販の Pimoroni等での購入方法、購入出来る通販ショップ一覧まとめ

  ラズパイゼロW ワイヤレスモデルを海外通販でサクッと簡単に個人輸入で入手。技適通過でも国内販売は常に品切れ

Raspberry Pi 3で安定して使える相性の無い最適な microSDカードの種類のまとめ
Raspberry Pi 3で安定して使える相性の無い最適な microSDカードの種類のまとめ

  ラズパイ3で安定して使える microSDカードを購入する Teamと SanDiskは絶対に買わない

Raspberry Pi 3 Model Bに専用カメラモジュール RaspiCamを接続する方法
Raspberry Pi 3 Model Bに専用カメラモジュール RaspiCamを接続する方法

  ラズパイに専用カメラモジュールを接続して Raspbianで写真の静止画撮影や動画を録画する方法

Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ
Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ

  ラズパイの Raspbian OSのコマンドラインで使用する便利コマンド、負荷試験や CPUシリアル番号の確認方法等も

Raspberry Pi 3公式フォーラムの FAQの内容の日本語訳
Raspberry Pi 3公式フォーラムの FAQの内容の日本語訳

  ラズパイ公式フォーラムの「The Raspberry Pi 3 Model B Q&A thread」の日本語訳

Raspberry Pi 3で GPIO端子の I2C機能を有効化する方法
Raspberry Pi 3で GPIO端子の I2C機能を有効化する方法

  ラズパイ3の GPIO端子の I2C機能を有効にして各種センサーを繋げる方法まとめ

大人気の CPUボード、Raspberry Pi 3 Model Bで作ってみよう
大人気の CPUボード、Raspberry Pi 3 Model Bで作ってみよう

  Raspberry Piの開発環境の構築やタッチパネル付き液晶ディスプレイや各種センサーの使い方まとめ


Raspberry Pi 3、シングルボードコンピュータ ラズパイ3 Raspberry Pi関連はこちらへまとめました
 下記以外にも多数のラズパイ関係の記事が有ります。
 (I2C制御、GPIO制御、1-Wire制御、シリアル通信、日本語音声合成、日本語音声認識、中国語音声合成、MeCab 形態素解析エンジン、赤外線リモコン制御、秋月 I2C液晶モジュール、KeDei 3.5インチ液晶、HDMI 5インチ液晶、NFCカードリーダ、コマンドライン操作方法等)
Raspberry Pi 3に HDMI接続の 800x480 5インチ TFT液晶を接続して使用する方法
Raspberry Pi Raspbian Jessie 2017-07最終版で LIRCを使って学習リモコン、赤外線リモコンを送受信する方法
Raspberry Pi 3の WiFiを広告ブロック機能付きの無線LANアクセスポイント化 hostapd + dnsmasq編
Raspberry Pi 3の Bluetoothで ブルテザで通信する方法(Bluetooth編)
Raspberry Pi 3で日本語音声を合成して喋らせる方法(OpenJTalk編)
Raspberry Pi 3に USB Micを接続して日本語の音声認識をする方法(Julius編)
Raspberry Pi 3の GPIOに LEDとスイッチを接続して Lチカする方法
Raspberry Pi 3の GPIOに LEDとスイッチを接続してシャットダウンボタンを実装する方法
Raspberry Pi 3で GPIO端子の I2C機能を有効化する方法
Raspberry Pi 3の GPIOに I2C通信方式の気圧計 BMP280を接続する方法
Raspberry Pi 3に I2C通信方式の NFCリーダライタ PN532を接続して NFC FeliCaカードを読む方法
Raspberry Pi 3でネットワーク ライブカメラを構築する方法 Motion編
Raspberry Pi 3でネットワーク ライブカメラを構築する方法 MJPG-streamer編
Raspberry Pi 3 Model Bで動画処理アプリ FFmpegをコンパイルする方法
Raspberry Pi3の X-Window Systemに Windowsのリモートデスクトップから接続する方法
Raspberry Pi3に WebRTCの STUN/TRUNサーバと PeerJSサーバをインストールする方法
【成功版】Raspberry Piで NNPACK対応版の Darknet Neural Network Frameworkをビルドする方法


Espressif ESP8266 Arduino互換でスケッチが使える ESP-12Eモジュール基板
Espressif ESP8266 Arduino互換でスケッチが使える ESP-12Eモジュール基板

  Espressif ESP8266 ESP-12-E NodeMCU V1 ESP12 CP2102

BangGood通販はドローン以外にも面白い商品がまだまだ有った(電子工作編)
BangGood通販はドローン以外にも面白い商品がまだまだ有った(電子工作編)

  レーザー彫刻機、カラー液晶の DIYオシロ、Arduinoや Raspberry Pi用の小型カラー液晶



[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外はweb構成の変更で移動する場合があります)
Copyright (c) 2018 FREE WING, Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_opencv_raspicam_camera/