| A | B | C | D | |
|---|---|---|---|---|
| module | function | link | ||
| c | apps | apps provides various nodes that run internally OpenCV's functionalities | ||
| c | calib3d | The functions in this section use a so-called pinhole camera model. In this model, a scene view is formed by projecting 3D points into the image plane using a perspective transformation. カメラキャリブレーション、ステレオ対応点探索 | calib3d | |
| c | core | 画像・行列データ構造の提供、配列操作、基本図形描画、XMLおよびYAML入出力、コマンドラインパーサー、ユーティリティ機能など | core | |
| c | features2d | 特徴点抽出(ORB、BRISK、FREAKなど) | features2d | |
| c | flann | 多次元空間のクラスタリングやサーチ問題 | flann | |
| c | highgui | GUI(ウィンドウ表示など) | highgui | |
| c | imgcodecs | 画像ファイル入出力 | imgcodecs | |
| c | imgproc | フィルター処理、アフィン変換、エッジ検出、ハフ検出、色変換、ヒストグラム計算、ラベリングなど | imgproc | |
| c | java | java | ||
| c | ml | SVM、決定木、ブースティング、ニューラルネットワークなど | ml | |
| c | objdetect | オブジェクト検出(顔検出、人体検出など) | objdetect | |
| c | photo | 画像修復、ノイズ除去処理、HDR(High Dynamic Range)合成、画像合成など | photo | |
| c | python2 | python | ||
| c | shape | 形状マッチング | shape | |
| c | stitching | パノラマ合成 | stitching | |
| c | superres | 超解像処理 | superres | |
| c | ts | テスト用モジュール | ts | |
| c | video | オプティカルフロー、カルマンフィルター、背景差分など | video | |
| c | videoio | 動画ファイルの入出力、カメラキャプチャなど | videoio | |
| c | videostab | 手ブレ補正(Video Stabilization) | videostab | |
| c | viz | 3Dデータの可視化(内部的にVTKを使用) | viz | |
| c | world | OpenCV を利用するときには複数のライブラリをリンクする必要があり、world は、その手間を軽減するために作られた、複数のモジュールをまとめた一つのライブラリ。つまりwrapper | world | |
| e | aruco | This module is dedicated to square fiducial markers (also known as Augmented Reality Markers) These markers are useful for easy, fast and robust camera pose estimation.ARマーカー | aruco | |
| e | bgsegm | This algorithm combines statistical background image estimation and per-pixel Bayesian segmentation.背景セグメンテーションn | bgsegm | |
| e | bioinspired | This class provides the main controls of the Gipsa/Listic labs human retina model. This is a non separable spatio-temporal filter modelling the two main retina information channels.視覚モデルに従う処理 | bioinspired | |
| e | ccalib | Custom Calibration Pattern for 3D reconstruction キャリブレーションパターンのカスタム | ccalib | |
| e | contrib_world | The world module is actually a wrapper module that builds the complete openCV module interface, so basically all modules available. | contrib_world | |
| e | datasets | Interface forinterfacing With existing Computervision databases. 様々なデータセットをダウンロード | datasets | |
| e | dnn | Functionality of this module is designed only for forward pass computations (i. e. network testing). A network training is in principle not supported. ディープラーニング | dnn | |
| e | dnn_modern | The module is wrapper to tiny-dnn, a header only, dependency-free deep learning framework in C++11. | dnn_modern | |
| e | dpm | This is a C++ abstract class, it provides external user API to work with DPM. デフォマブル パートモデル | dpm | |
| e | face | 顔認識 | face | |
| e | freetype | matにtextをマージする | freetype | |
| e | fuzzy | ファジー | fuzzy | |
| e | img_hash | 画像の各種ハッシュ処理 | img_hash | |
| e | line_descriptor | 線記述子 | line_descriptor | |
| e | optflow | オプティカルフロー推定 | optflow | |
| e |
phase_unwrapping
| 位相アンラッピング | phase_unwrapping | |
| e | plot | グラププロット | plot | |
| e | reg | 画像のレジストレーション | reg | |
| e | rgbd | RGB+デプス処理 | rgbd | |
| e | saliency | 顕著性マップ | saliency | |
| e | stereo | ステレオマッチング | stereo | |
| e | structured_light | カメラープロジェクション用パターン投影 | structured_light | |
| e |
surface_matching
| 3次元点マッチング | surface_matching | |
| e | text | 文字認識 | text | |
| e | tracking | トラッキング | tracking | |
| e | xfreatures2d | 拡張特徴量計算モジュール | xfeatures2d | |
| e | ximgproc | 拡張画像処理モジュール | ximgproc | |
| e | xobjdetect | 拡張物体検出モジュール | xobjdetect | |
| e | xphoto | 拡張コンピュテーショナルフォトグラフィモジュール | xphoto | |
| cnn_3dobj | ||||
| cvv | ||||
| dnns_easily_fooled | ||||
| hdf | ||||
| matlab | ||||
| sfm | ||||
| CUDA |
ロボット使ってトマト作れば楽だなぁ...やってみっか!
農業ロボット開発記録
日本中で100台以上動かしちゃった(^^)/
I'm developing robots that do tomato harvesting, settled planting ,,,,and many tasks.
The goal of production cost of robot is $2,000 per unit.
Because it is necessary a lot of robots, in order to innovate the farming.
I use Raspberry Pi as robot controller to develop low cost robots.
TOMATO FARM website -> CLICK!
2017年8月7日月曜日
OpenCV 3.2 Module List (自分用)
An installation of OpenCV 3.3.0 on Raspberry Pi ZERO
先の投稿は、Raspberry Pi2上での、OpenCV3.3.0でした。
今回は、ZEROです。
エラーで止まった事もあり、ちゃんと設定してbuild & install しました。
時間は、約7時間かかります。
手順は、先の投稿を見てください。
今回の投稿では、cmake-guiの設定値と、make からの install の画面の説明
比較的単純な画像処理を行いたいので、次の設定をしています。
もちろん、NEONなどはdisableです。
途中で、終わっている?
でも、libraryはできているので、install してみると!
sudo make install
sudo ldconfig
cd ~/opencv-3.3.0/samples/cpp
g++ `pkg-config opencv --cflags --libs` facedetect.cpp -o facedetect
./facedetect --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 ../data/lena.jpg
で、Lenaさん(^^)/
Peace!!
今回は、ZEROです。
エラーで止まった事もあり、ちゃんと設定してbuild & install しました。
時間は、約7時間かかります。
手順は、先の投稿を見てください。
今回の投稿では、cmake-guiの設定値と、make からの install の画面の説明
1.cmake-gui
シングルコアのZEROなので、必要最小限のインストールにしました。比較的単純な画像処理を行いたいので、次の設定をしています。
もちろん、NEONなどはdisableです。
2.cmake-gui
make からの install の画面、14%という数字に戸惑いました。途中で、終わっている?
でも、libraryはできているので、install してみると!
sudo make install
sudo ldconfig
cd ~/opencv-3.3.0/samples/cpp
g++ `pkg-config opencv --cflags --libs` facedetect.cpp -o facedetect
./facedetect --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 ../data/lena.jpg
で、Lenaさん(^^)/
Peace!!
2017年8月5日土曜日
An installation of OpenCV 3.3.0 on raspberry Pi 2
当初の投稿は、Raspberry Pi 3としていましたが、
Raspberry Pi 2の間違いです。<(_ _)>
8月3日に、OpenCV3.3.0がリリースされたので、、、
Raspberry Pi 3で、opencv 3.3 を build & install した忘備録
2.ソースをopencv.orgからダウンロードし、解凍、および作業dir作成
3.cmake
4.make
5.opencv インストール
6.確認
7.ZEROの場合
では、記録の始まり
sudo cp plantuml.jar /usr/share/java
sudo /sbin/ldconfig
sudo apt-get install -y build-essential git cmake pkg-config cmake-qt-gui mesa-utils libgl1-mesa-dri libjpeg-dev libtiff5-dev libpng12-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libgtk2.0-dev libprotobuf-dev protobuf-compiler libvtk5-dev libvtk5-qt4-dev python-vtk tcl-vtk libatlas-base-dev gfortran libeigen3-dev libv4l-dev libqt4-core libqtgui4 libqt4-test libqt4-opengl-dev sphinx-common doxygen
wget https://github.com/opencv/opencv/archive/3.3.0.zip
wget https://github.com/opencv/opencv_contrib/archive/3.3.0.tar.gz
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.3.0.zip
unzip 3.3.0.zip
tar xvf 3.3.0.tar.gz
cd opencv-3.3.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D PLANTUML_JAR=/usr/share/java/plantuml.jar \
-D ENABLE_NEON=ON \
-D WITH_TBB=OFF -D BUILD_TBB=OFF \
-D WITH_QT=ON -D WITH_OPENGL=OFF \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.3.0/modules \
-D BUILD_opencv_freetype=OFF \
-D BUILD_EXAMPLES=OFF ..
上記のcmakeは、サンプルプログラムのbuildがOFF
もし、buildするならONにする。
make -j4
sudo ldconfig
g++ `pkg-config opencv --cflags --libs` facedetect.cpp -o facedetect
./facedetect --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 ../data/lena.jpg
約5時間作業
Peace!!
Raspberry Pi 2の間違いです。<(_ _)>
8月3日に、OpenCV3.3.0がリリースされたので、、、
Raspberry Pi 3で、opencv 3.3 を build & install した忘備録
大まかな手順は、
1.依存するソフトのインストール2.ソースをopencv.orgからダウンロードし、解凍、および作業dir作成
3.cmake
4.make
5.opencv インストール
6.確認
7.ZEROの場合
では、記録の始まり
1.依存するソフトのインストール
http://plantuml.com/download から、plantumljarをダウンロードするsudo cp plantuml.jar /usr/share/java
sudo /sbin/ldconfig
sudo apt-get install -y build-essential git cmake pkg-config cmake-qt-gui mesa-utils libgl1-mesa-dri libjpeg-dev libtiff5-dev libpng12-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libgtk2.0-dev libprotobuf-dev protobuf-compiler libvtk5-dev libvtk5-qt4-dev python-vtk tcl-vtk libatlas-base-dev gfortran libeigen3-dev libv4l-dev libqt4-core libqtgui4 libqt4-test libqt4-opengl-dev sphinx-common doxygen
python3の開発環境があれば、下はいらない。30分位かかるかも
sudo apt-get install python3-dev python3-pip
2.ソースをopencv.orgからダウンロードし、解凍、および作業dir作成
ダウンロード後に、~/で解凍すると次のディレクトリーができるので、その中に入って、作業ディレクトリーを作成wget https://github.com/opencv/opencv/archive/3.3.0.zip
wget https://github.com/opencv/opencv_contrib/archive/3.3.0.tar.gz
unzip 3.3.0.zip
tar xvf 3.3.0.tar.gz
cd opencv-3.3.0
mkdir build
cd build
3.cmake
cmake -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D PLANTUML_JAR=/usr/share/java/plantuml.jar \
-D ENABLE_NEON=ON \
-D WITH_TBB=OFF -D BUILD_TBB=OFF \
-D WITH_QT=ON -D WITH_OPENGL=OFF \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.3.0/modules \
-D BUILD_opencv_freetype=OFF \
-D BUILD_EXAMPLES=OFF ..
上記のcmakeは、サンプルプログラムのbuildがOFF
もし、buildするならONにする。
4.make
make -j45.opencv インストール
sudo make installsudo ldconfig
6.確認
samples/cppに移動してお決まりのlenaさんg++ `pkg-config opencv --cflags --libs` facedetect.cpp -o facedetect
./facedetect --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 ../data/lena.jpg
約5時間作業
Peace!!
7.ZERO
CPUが、シングルコアのARM1176JZF-SなのでNEONはOFF。
ただ、上記のcmakeのパラメータで実行しても、エラーがでる。
従って、cmake-guiを立ち上げてエラーを取りながらgenerationする。
その後、makeする。
そして、じーっと待つ。。。。。
2017年7月8日土曜日
windows10でgcc環境構築、そしてeclipseでOpenCV
windows10の環境を作り直したので、再度gcc環境の構築
Cygwinもあるけど、msys2で構築。
以前は、MinGWのインストールをすすめていたけど、
今はmsys2のインストール。
あと、msys2 をインストールするけど、Cドライブはmsys64
ちなみに、OpenCV3.2.0はbuild済みです。
E:\opencv320\buildに入っています。
僕は、64bit版
http://www.msys2.org/
インストール後に、msys2のターミナルを開いて、
以下の操作をする。
vtkを入れているのは、OepnCVの画面表示系が依存しているため
pacman -Syu
pacman -S base-devel
pacman -S msys2-devel mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-vtk
C:\msys64\mingw64\bin\libwebp-6.lib を新たに作る
これは、OpenCVのモジュールが、libwebp-6.libを探すための処置
C:\msys64\mingw64\bin
E:\opencv320\build\x86\mingw\bin
下のOpenCVの設定は、各環境毎に異なる
・E:\opencv\build\include/*
→C:\msys64\mingw64\include
・E:\opencv\build\x86\mingw\lib/*
→C:\msys64\mingw64\lib
(2) 上記のプログラムをコマンドプロンプトで実行
ほーら同じ \(^o^)/
Peace!!
Cygwinもあるけど、msys2で構築。
以前は、MinGWのインストールをすすめていたけど、
今はmsys2のインストール。
あと、msys2 をインストールするけど、Cドライブはmsys64
ちなみに、OpenCV3.2.0はbuild済みです。
E:\opencv320\buildに入っています。
1. msys2インストール
msys2のインストーラーをダウンロードして、インストール僕は、64bit版
http://www.msys2.org/
インストール後に、msys2のターミナルを開いて、
以下の操作をする。
vtkを入れているのは、OepnCVの画面表示系が依存しているため
pacman -Syu
pacman -S base-devel
pacman -S msys2-devel mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-vtk
2. おまじない
C:\msys64\mingw64\bin\libwebp-7.lib をコピー&名称変更してC:\msys64\mingw64\bin\libwebp-6.lib を新たに作る
これは、OpenCVのモジュールが、libwebp-6.libを探すための処置
3.Window環境設定
PATHを設定するC:\msys64\mingw64\bin
E:\opencv320\build\x86\mingw\bin
下のOpenCVの設定は、各環境毎に異なる
4.OpenCVのincludeとlibをコピーする
これは、・E:\opencv\build\include/*
→C:\msys64\mingw64\include
・E:\opencv\build\x86\mingw\lib/*
→C:\msys64\mingw64\lib
5.実行
(1) eclipseでサンプルプログラムを作ってbuild&実行(2) 上記のプログラムをコマンドプロンプトで実行
ほーら同じ \(^o^)/
Peace!!
2017年7月4日火曜日
windows.oldを削除する
昨日、Windows updateをしたら、windows.oldというフォルダーができて、
なんと、17GB占有している。
windows10のディスククリーンアップで削除できなったかったので、
コマンドプロンプトを管理者モードで開き、
takeown /f C:Windows.old /r
icacls C:Windows.old /grant Users:F /t
で、エクスプローラーから、削除。
この方法を見つけて、処理を完了するまで、なんと3時間かかった。
並列して仕事してたけど、、、
無駄な労力。。。
Peace!!
なんと、17GB占有している。
windows10のディスククリーンアップで削除できなったかったので、
コマンドプロンプトを管理者モードで開き、
takeown /f C:Windows.old /r
icacls C:Windows.old /grant Users:F /t
で、エクスプローラーから、削除。
この方法を見つけて、処理を完了するまで、なんと3時間かかった。
並列して仕事してたけど、、、
無駄な労力。。。
Peace!!
2017年6月22日木曜日
How to update Google spreadsheet from Raspberry Pi using Google API.
僕は、ロボットに関するデータは www.workrobot.co.jpのロボットクラウドを使って処理をしている。
ただ、デバック時のちょっとしたデータ処理は、Raspberry PiからGoogle spreadsheetに登録して、グラフ化などしたくなる。
で、そのメモ(^^)
Raspberry Piのpythonスクリプトから、共有設定されたspreadsheetにデータを登録・更新・削除などする。今回は、追加(append)処理サンプル。
・Google API Consoleでプロジェクト(test)を作成し、Sheets APIを有効化
ここ!!→ click
以下、Google API Consoleは、「コンソール」表記
(2) 認証情報設定
・有効化した後、認証情報追加画面だけどcancelしてコンソールに戻る
・コンソールで認証情報選択する
・「サービスアカウントキー」を選択する
Raspberry Piから、処理をしたいのでこの項目を設定
・サービスアカウント名を入力し、役割をprojectの編集者で設定する
サービスアカウントIDは、次の(3)で入力するので記録する
・作成ボタンを押下すると、Raspberry Pi側に置く認証ファイルのダウンロード処理になる。保存してRaspberry Piに転送する
(3) 処理対象となるspreadsheetを準備・設定
・spreadsheetを作成する。
本説明では
spreadsheet名「test01」
sheet名「data01」
sheetID「49ga0igsia79w5u4igtaoeay75489hfadha」
sheetIDは、シートのURLの...../d/から/edit/....の間の文字列
・共有設定をする
(2)処理のサービスアカウントをユーザー欄に美優力する
役割は、「project > 編集者」で設定する
以上で、Google APIの設定、情報交換をする際の認証情報設定取得、スプレッドシートの設定が終了。
(1) pythonのクライアントモジュールインストール
python2.7環境
$ sudo pip install --upgrade google-api-python-client
おしまい(^^)
その前に、、、
Google Sheets APIの説明は→click
サンプルプログラムの使い方の詳しい説明→click
スプレッドシートのA1:C1に、データを登録するスクリプトはドーン!
import httplib2
import numpy as np
from apiclient import discovery
from oauth2client.service_account import ServiceAccountCredentials
SCOPES = 'https://www.googleapis.com/auth/spreadsheets'
APPEND_RANGE = 'data01!A1:C1' ←シート名とセル位置
class GoogleSS(object):
def __init__(self, sheet_id):
self.sheetId = sheet_id
credentials = ServiceAccountCredentials.from_json_keyfile_name('./test-xxjjdfksgj.json', scopes=SCOPES) ←認証用のjsonファイル指定
http_auth = credentials.authorize(httplib2.Http())
discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?''version=v4')
self.service = discovery.build('sheets', 'v4', http=http_auth, discoveryServiceUrl=discoveryUrl)
def append(self, values): ←今回は追加モード
assert np.array(values).shape==(3,) , "The shape of value %s must be 3" % (np.array(values).shape)
value_range_body = {'values':[values]}
result = self.service.spreadsheets().values().append(spreadsheetId=self.sheetId, range=APPEND_RANGE, valueInputOption='USER_ENTERED', body=value_range_body).execute()
if __name__ == '__main__':
sheet = GoogleSS('49ga0igsia79w5u4igtaoeay75489hfadha') ←sheetID
sheet.append(["Kayak", "Love", 3]) ←追加するデータ
結果は、、、
ちなみに、3つ書くと、、、(他にもやり方ありますが、、、)
sheet.append(["Kayak", "Love", 1])
sheet.append(["PiroettoSS", "perception", 1])
sheet.append(["Antix", "Jackson", 1])
Peace!!
ただ、デバック時のちょっとしたデータ処理は、Raspberry PiからGoogle spreadsheetに登録して、グラフ化などしたくなる。
で、そのメモ(^^)
1.処理内容
Raspberry Piのpythonスクリプトから、共有設定されたspreadsheetにデータを登録・更新・削除などする。今回は、追加(append)処理サンプル。
2. 作業の順番
2.1 Google 側の設定と準備
(1) Google API 有効化・Google API Consoleでプロジェクト(test)を作成し、Sheets APIを有効化
ここ!!→ click
以下、Google API Consoleは、「コンソール」表記
![]() |
| test プロジェクトで有効化します。 |
(2) 認証情報設定
・有効化した後、認証情報追加画面だけどcancelしてコンソールに戻る
・コンソールで認証情報選択する
・「サービスアカウントキー」を選択する
Raspberry Piから、処理をしたいのでこの項目を設定
サービスアカウントIDは、次の(3)で入力するので記録する
・作成ボタンを押下すると、Raspberry Pi側に置く認証ファイルのダウンロード処理になる。保存してRaspberry Piに転送する
(3) 処理対象となるspreadsheetを準備・設定
・spreadsheetを作成する。
本説明では
spreadsheet名「test01」
sheet名「data01」
sheetIDは、シートのURLの...../d/から/edit/....の間の文字列
・共有設定をする
(2)処理のサービスアカウントをユーザー欄に美優力する
役割は、「project > 編集者」で設定する
以上で、Google APIの設定、情報交換をする際の認証情報設定取得、スプレッドシートの設定が終了。
2.2 Raspberry Piの準備
Raspberry Pi側の準備。(1) pythonのクライアントモジュールインストール
python2.7環境
$ sudo pip install --upgrade google-api-python-client
おしまい(^^)
2.3 スクリプトを動かす
その前に、、、Google Sheets APIの説明は→click
サンプルプログラムの使い方の詳しい説明→click
スプレッドシートのA1:C1に、データを登録するスクリプトはドーン!
import httplib2
import numpy as np
from apiclient import discovery
from oauth2client.service_account import ServiceAccountCredentials
SCOPES = 'https://www.googleapis.com/auth/spreadsheets'
APPEND_RANGE = 'data01!A1:C1' ←シート名とセル位置
class GoogleSS(object):
def __init__(self, sheet_id):
self.sheetId = sheet_id
credentials = ServiceAccountCredentials.from_json_keyfile_name('./test-xxjjdfksgj.json', scopes=SCOPES) ←認証用のjsonファイル指定
http_auth = credentials.authorize(httplib2.Http())
discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?''version=v4')
self.service = discovery.build('sheets', 'v4', http=http_auth, discoveryServiceUrl=discoveryUrl)
def append(self, values): ←今回は追加モード
assert np.array(values).shape==(3,) , "The shape of value %s must be 3" % (np.array(values).shape)
value_range_body = {'values':[values]}
result = self.service.spreadsheets().values().append(spreadsheetId=self.sheetId, range=APPEND_RANGE, valueInputOption='USER_ENTERED', body=value_range_body).execute()
if __name__ == '__main__':
sheet = GoogleSS('49ga0igsia79w5u4igtaoeay75489hfadha') ←sheetID
sheet.append(["Kayak", "Love", 3]) ←追加するデータ
結果は、、、
ちなみに、3つ書くと、、、(他にもやり方ありますが、、、)
sheet.append(["Kayak", "Love", 1])
sheet.append(["PiroettoSS", "perception", 1])
sheet.append(["Antix", "Jackson", 1])
2017年6月21日水曜日
登録:
投稿 (Atom)

















