opencv/詳解OpenCVを勉強
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
[[FrontPage]]
#contents
2013/01/06からのアクセス回数 &counter;
正月休みに詳解OpenCVを読みました。機械学習とステレオグラ...
** OpenCVのインストール [#w2719efb]
MacOSの場合、MacPortsを使って以下のように簡単にインストー...
#pre{{
$ sudo port install opencv +python27
}}
*** 詳解OpenCVのサンプルプログラムをコンパイル [#w3b9ae31]
以下のサイトから詳解OpenCVのサンプルプログラムをダウンロ...
http://examples.oreilly.com/9780596516130/LearningOpenCV_...
*** サンプルプログラムのMakefileを修正 [#yb1e848d]
サンプルに含まれているMakefile.txtではMacOSではコンパイル...
#pre{{
CXX = g++
LDFLAGS = -lopencv_legacy -lopencv_highgui -lopencv_core ...
CPPFLAGS = -I/opt/local/include/ -I/opt/local/include/ope...
#ch5_ex5_1 \
#ch9_backgroundAVG \
#ch9_backgroundDiff \
#ch10_ex10_1b_Horn_Schunck \
all: ch2_ex2_1 ch2_ex2_2 ch2_ex2_3 ch2_ex2_4 ch2_ex2...
ch2_ex2_8 ch2_ex2_9 ch2_ex2_10 ch3_ex3_3 ch3_ex3_4 c...
ch3_ex3_11 ch3_ex3_12 ch3_ex3_13 ch3_ex3_14 ch3_ex3_15 c...
ch3_ex3_20 ch4_ex4_1 ch4_ex4_2 ch4_ex4_3 ch5_ex5_2 c...
ch6_ex6_1 ch6_ex6_2 ch6_ex6_3 ch6_ex6_4 ch6_ex6_5 \
ch7_ex7_1 ch7_ex7_3_expanded ch7_ex7_5_HistBackProj ch7...
ch8_ex8_2 ch8_ex8_3 ch9_ex9_1 ch9_watershed \
ch10_ex10_1 ch10_motempl ch10_ex10_2 ch11_ex11_1 ch11_...
ch12_ex12_1 ch12_ex12_2 ch12_ex12_3 ch12_ex12_4 ch1...
ch13_ex13_2 ch13_ex13_3 ch13_ex13_4
}}
** お決まりの顔認識を試す [#n45c02ef]
OpenCVと言えば、顔認識とイメージがあるので、以下のような...
認識させてみました。lena.jpgはネットからダウンロードした...
/opt/local/share/OpenCV/haarcascades/からコピーしてきまし...
#pre{{
// http://www.aianet.ne.jp/~asada/prog_doc/opencv/opencv_...
#include "cv.h"
#include "highgui.h"
// 顔検出(静止画)
int main(int argc, char* argv[]) {
// 顔検出対象の画像データ用
IplImage* tarImg;
// 検出対象の画像ファイルパス
char tarFilePath[] = "lena.jpg";
// 画像データの読み込み
tarImg = cvLoadImage(tarFilePath, CV_LOAD_IMAGE_ANYDEPTH...
// 正面顔検出器の読み込み
CvHaarClassifierCascade* cvHCC = (CvHaarClassifierCascad...
// 検出に必要なメモリストレージを用意する
CvMemStorage* cvMStr = cvCreateMemStorage(0);
// 検出情報を受け取るためのシーケンスを用意する
CvSeq* face;
// 画像中から検出対象の情報を取得する
face = cvHaarDetectObjects(tarImg, cvHCC, cvMStr);
for (int i = 0; i < face->total; i++) {
// 検出情報から顔の位置情報を取得
CvRect* faceRect = (CvRect*)cvGetSeqElem(face, i);
// 取得した顔の位置情報に基づき、矩形描画を行う
cvRectangle(tarImg,
cvPoint(faceRect->x, faceRect->y),
cvPoint(faceRect->x + faceRect->width, faceRect->y + f...
CV_RGB(255, 0 ,0),
3, CV_AA);
}
// 顔位置に矩形描画を施した画像を表示
cvNamedWindow("face_detect");
cvShowImage("face_detect", tarImg);
// キー入力待ち
cvWaitKey(0);
// ウィンドウの破棄
cvDestroyWindow("face_detect");
// 用意したメモリストレージを解放
cvReleaseMemStorage(&cvMStr);
// カスケード識別器の解放
cvReleaseHaarClassifierCascade(&cvHCC);
// イメージの解放
cvReleaseImage(&tarImg);
return 0;
}
}}
実行すると、以下のようにlenaの顔が認識されます。
&ref(lena_face.png);
** JavaCVに挑戦 [#u7243dc4]
OpenCVで顔認識ができたので、今度はJavaからOpenCVを使って...
JavaからOpenCVを利用するためのwrapperがJavaCVです。
以下のサイトからjavacv-0.3-bin.zipをダウンロードします。
http://code.google.com/p/javacv/
zipファイルを解凍し、
- javacpp.jar
- javacv.jar
- javacv-macosx-x86_64.jar (環境合わせてください)
をEclipseのプロジェクトのBuildPathに追加します。
JavaCVの例として先ほどと同じ顔認識をEclipseで実行してみま...
FaceDetect.javaを以下のように作成します。JavaCVは、かなり...
ほとんどC++のソースをコピー&ペーストで作成することができ...
#pre{{
import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_highgui.*;
import static com.googlecode.javacv.cpp.opencv_objdetect.*;
import javax.swing.JFrame;
import com.googlecode.javacv.CanvasFrame;
public class FaceDetect {
public static void main(String[] args) {
new FaceDetect().loop();
}
private void loop() {
CanvasFrame canvas = new CanvasFrame("FaceDetect");
canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CL...
// 顔検出対象の画像データ用
IplImage tarImg = null;
// 検出対象の画像ファイルパス
String tarFilePath = "lena.jpg";
// 画像データの読み込み
tarImg = cvLoadImage(tarFilePath, CV_LOAD_IMAGE_A...
// 正面顔検出器の読み込み
CvHaarClassifierCascade cvHCC = new CvHaarClassif...
// 検出に必要なメモリストレージを用意する
CvMemStorage cvMStr = cvCreateMemStorage(0);
// 検出情報を受け取るためのシーケンスを用意する
CvSeq face = null;
// 高速に検出できるように引数を調整
face = cvHaarDetectObjects(tarImg, cvHCC, cvMStr,...
for (int i = 0; i < face.total(); i++) {
// 検出情報から顔の位置情報を取得
CvRect faceRect = new CvRect(cvGetSeqElem(face, ...
// 取得した顔の位置情報に基づき、矩形描画を行う
cvRectangle(tarImg,
cvPoint(faceRect.x(), faceRect.y()),
cvPoint(faceRect.x() + faceRect.width(), faceR...
CV_RGB(255, 0 ,0),
2, CV_AA, 0);
}
canvas.showImage(tarImg);
}
}
}}
*** 環境変数のセット [#g3d223fd]
JavaCVを実行するには、opencvのダイナミックライブラリの場...
ターミナルでは、以下のように環境変数をセットします。
#pre{{
export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib/
}}
Eclipseでは、実行の環境設定のタブで以下のようにセットしま...
&ref(ENV_setting.jpg);
*** 実行結果 [#pc6798c6]
また、javaのBufferedImageからIplImageを作成するIplImage#c...
結果は、同じですがJavaのCavasFrameの方がお利口でした。
&ref(java_lena_face.png);
*** デモのソース [#r01e22d0]
デモとJavaCVのカメラからのキャプチャーのソースを以下に入...
- &ref(MyJob.zip);
- &ref(OpenCVFaceDetectDemo.zip); JavaCVのライブラリは各...
- &ref(OpenCVCaptureImageDemo.zip); JavaCVのライブラリは...
** SageでOpenCVを使う [#be8176df]
上記のデモと同じ例題をSageを使って試してみました。
[[sage/SageでOpenCVを使ってみよう]]
** コメント [#b4e2bddc]
#vote(おもしろかった[10],そうでもない[0],わかりずらい[2])
皆様のご意見、ご希望をお待ちしております。
- Makefileのタイプミス修正とopencv_objdetectを追加しまし...
#comment_kcaptcha
終了行:
[[FrontPage]]
[[FrontPage]]
#contents
2013/01/06からのアクセス回数 &counter;
正月休みに詳解OpenCVを読みました。機械学習とステレオグラ...
** OpenCVのインストール [#w2719efb]
MacOSの場合、MacPortsを使って以下のように簡単にインストー...
#pre{{
$ sudo port install opencv +python27
}}
*** 詳解OpenCVのサンプルプログラムをコンパイル [#w3b9ae31]
以下のサイトから詳解OpenCVのサンプルプログラムをダウンロ...
http://examples.oreilly.com/9780596516130/LearningOpenCV_...
*** サンプルプログラムのMakefileを修正 [#yb1e848d]
サンプルに含まれているMakefile.txtではMacOSではコンパイル...
#pre{{
CXX = g++
LDFLAGS = -lopencv_legacy -lopencv_highgui -lopencv_core ...
CPPFLAGS = -I/opt/local/include/ -I/opt/local/include/ope...
#ch5_ex5_1 \
#ch9_backgroundAVG \
#ch9_backgroundDiff \
#ch10_ex10_1b_Horn_Schunck \
all: ch2_ex2_1 ch2_ex2_2 ch2_ex2_3 ch2_ex2_4 ch2_ex2...
ch2_ex2_8 ch2_ex2_9 ch2_ex2_10 ch3_ex3_3 ch3_ex3_4 c...
ch3_ex3_11 ch3_ex3_12 ch3_ex3_13 ch3_ex3_14 ch3_ex3_15 c...
ch3_ex3_20 ch4_ex4_1 ch4_ex4_2 ch4_ex4_3 ch5_ex5_2 c...
ch6_ex6_1 ch6_ex6_2 ch6_ex6_3 ch6_ex6_4 ch6_ex6_5 \
ch7_ex7_1 ch7_ex7_3_expanded ch7_ex7_5_HistBackProj ch7...
ch8_ex8_2 ch8_ex8_3 ch9_ex9_1 ch9_watershed \
ch10_ex10_1 ch10_motempl ch10_ex10_2 ch11_ex11_1 ch11_...
ch12_ex12_1 ch12_ex12_2 ch12_ex12_3 ch12_ex12_4 ch1...
ch13_ex13_2 ch13_ex13_3 ch13_ex13_4
}}
** お決まりの顔認識を試す [#n45c02ef]
OpenCVと言えば、顔認識とイメージがあるので、以下のような...
認識させてみました。lena.jpgはネットからダウンロードした...
/opt/local/share/OpenCV/haarcascades/からコピーしてきまし...
#pre{{
// http://www.aianet.ne.jp/~asada/prog_doc/opencv/opencv_...
#include "cv.h"
#include "highgui.h"
// 顔検出(静止画)
int main(int argc, char* argv[]) {
// 顔検出対象の画像データ用
IplImage* tarImg;
// 検出対象の画像ファイルパス
char tarFilePath[] = "lena.jpg";
// 画像データの読み込み
tarImg = cvLoadImage(tarFilePath, CV_LOAD_IMAGE_ANYDEPTH...
// 正面顔検出器の読み込み
CvHaarClassifierCascade* cvHCC = (CvHaarClassifierCascad...
// 検出に必要なメモリストレージを用意する
CvMemStorage* cvMStr = cvCreateMemStorage(0);
// 検出情報を受け取るためのシーケンスを用意する
CvSeq* face;
// 画像中から検出対象の情報を取得する
face = cvHaarDetectObjects(tarImg, cvHCC, cvMStr);
for (int i = 0; i < face->total; i++) {
// 検出情報から顔の位置情報を取得
CvRect* faceRect = (CvRect*)cvGetSeqElem(face, i);
// 取得した顔の位置情報に基づき、矩形描画を行う
cvRectangle(tarImg,
cvPoint(faceRect->x, faceRect->y),
cvPoint(faceRect->x + faceRect->width, faceRect->y + f...
CV_RGB(255, 0 ,0),
3, CV_AA);
}
// 顔位置に矩形描画を施した画像を表示
cvNamedWindow("face_detect");
cvShowImage("face_detect", tarImg);
// キー入力待ち
cvWaitKey(0);
// ウィンドウの破棄
cvDestroyWindow("face_detect");
// 用意したメモリストレージを解放
cvReleaseMemStorage(&cvMStr);
// カスケード識別器の解放
cvReleaseHaarClassifierCascade(&cvHCC);
// イメージの解放
cvReleaseImage(&tarImg);
return 0;
}
}}
実行すると、以下のようにlenaの顔が認識されます。
&ref(lena_face.png);
** JavaCVに挑戦 [#u7243dc4]
OpenCVで顔認識ができたので、今度はJavaからOpenCVを使って...
JavaからOpenCVを利用するためのwrapperがJavaCVです。
以下のサイトからjavacv-0.3-bin.zipをダウンロードします。
http://code.google.com/p/javacv/
zipファイルを解凍し、
- javacpp.jar
- javacv.jar
- javacv-macosx-x86_64.jar (環境合わせてください)
をEclipseのプロジェクトのBuildPathに追加します。
JavaCVの例として先ほどと同じ顔認識をEclipseで実行してみま...
FaceDetect.javaを以下のように作成します。JavaCVは、かなり...
ほとんどC++のソースをコピー&ペーストで作成することができ...
#pre{{
import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_highgui.*;
import static com.googlecode.javacv.cpp.opencv_objdetect.*;
import javax.swing.JFrame;
import com.googlecode.javacv.CanvasFrame;
public class FaceDetect {
public static void main(String[] args) {
new FaceDetect().loop();
}
private void loop() {
CanvasFrame canvas = new CanvasFrame("FaceDetect");
canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CL...
// 顔検出対象の画像データ用
IplImage tarImg = null;
// 検出対象の画像ファイルパス
String tarFilePath = "lena.jpg";
// 画像データの読み込み
tarImg = cvLoadImage(tarFilePath, CV_LOAD_IMAGE_A...
// 正面顔検出器の読み込み
CvHaarClassifierCascade cvHCC = new CvHaarClassif...
// 検出に必要なメモリストレージを用意する
CvMemStorage cvMStr = cvCreateMemStorage(0);
// 検出情報を受け取るためのシーケンスを用意する
CvSeq face = null;
// 高速に検出できるように引数を調整
face = cvHaarDetectObjects(tarImg, cvHCC, cvMStr,...
for (int i = 0; i < face.total(); i++) {
// 検出情報から顔の位置情報を取得
CvRect faceRect = new CvRect(cvGetSeqElem(face, ...
// 取得した顔の位置情報に基づき、矩形描画を行う
cvRectangle(tarImg,
cvPoint(faceRect.x(), faceRect.y()),
cvPoint(faceRect.x() + faceRect.width(), faceR...
CV_RGB(255, 0 ,0),
2, CV_AA, 0);
}
canvas.showImage(tarImg);
}
}
}}
*** 環境変数のセット [#g3d223fd]
JavaCVを実行するには、opencvのダイナミックライブラリの場...
ターミナルでは、以下のように環境変数をセットします。
#pre{{
export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib/
}}
Eclipseでは、実行の環境設定のタブで以下のようにセットしま...
&ref(ENV_setting.jpg);
*** 実行結果 [#pc6798c6]
また、javaのBufferedImageからIplImageを作成するIplImage#c...
結果は、同じですがJavaのCavasFrameの方がお利口でした。
&ref(java_lena_face.png);
*** デモのソース [#r01e22d0]
デモとJavaCVのカメラからのキャプチャーのソースを以下に入...
- &ref(MyJob.zip);
- &ref(OpenCVFaceDetectDemo.zip); JavaCVのライブラリは各...
- &ref(OpenCVCaptureImageDemo.zip); JavaCVのライブラリは...
** SageでOpenCVを使う [#be8176df]
上記のデモと同じ例題をSageを使って試してみました。
[[sage/SageでOpenCVを使ってみよう]]
** コメント [#b4e2bddc]
#vote(おもしろかった[10],そうでもない[0],わかりずらい[2])
皆様のご意見、ご希望をお待ちしております。
- Makefileのタイプミス修正とopencv_objdetectを追加しまし...
#comment_kcaptcha
ページ名:
SmartDoc