MacでOpenCVなど
なんとなくやってみた. はじめにとりあえずportからopencvをインストールする
sudo port install opencv
すると、/opt/local/includeに、opencv/* ヘッダーファイル, /opt/local/libにライブラリがインストールされる。
というわけで、とりあえずプログラムを書いてみる。。
/* * OpenCVTest.cpp */ #include <stdio.h> int main() { int key; CvCapture *capture; IplImage *frameImage; char windowName[] = "capture"; if ((capture = cvCreateCameraCapture(-1)) == NULL) { printf("camera not found\n"); return -1; } cvNamedWindow(windowName, CV_WINDOW_AUTOSIZE); while(1) { frameImage = cvQueryFrame(capture); cvShowImage(windowName, frameImage); key = cvWaitKey(1); if (key == 'q') break; } cvReleaseCapture(&capture); cvDestroyWindow(windowName); return 0; }
でもってこれをコンパイルしてみる。
g++ OpenCVTest.cpp -I/opt/local/include -L/opt/local/lib -lhighgui
てな感じでやる
でもって実行する
./a.out
すると
camera not found
という表示が出てくる。 う〜むw カメラデバイスの取得に失敗しとるっぽいですね。
まぁでも動画を必要としない画像処理はなんとかできるっぽいです。カメラに関する部分はMacだと問題があるのやも
画像処理の例としては以下のようなものをやってみました@Opencv プログラミングブックを参考に
/* * Threshold.cpp */ #include <stdio.h> #include <opencv/cv.h> #include <opencv/cxcore.h> #include <opencv/highgui.h> IplImage *sourceImage; IplImage *grayImage; IplImage *binaryImage; char windowName[] = "Threshold"; int levels = 128; void binarization(void) { cvCvtColor(sourceImage, grayImage, CV_BGR2GRAY); cvThreshold(grayImage, binaryImage, levels, 255, CV_THRESH_BINARY); cvShowImage(windowName, binaryImage); } void onChange(int pos) { binarization(); } int main(int argc, char **argv) { char trackbarName[] = "Threshold"; sourceImage = cvLoadImage("lena.bmp", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR); if (sourceImage == NULL) { printf("lena.bmp not found"); return -1; } grayImage = cvCreateImage(cvGetSize(sourceImage), IPL_DEPTH_8U, 1); binaryImage = cvCreateImage(cvGetSize(sourceImage), IPL_DEPTH_8U, 1); cvNamedWindow(windowName); cvCreateTrackbar(trackbarName, windowName, &levels, 255, onChange); binarization(); cvWaitKey(0); cvReleaseImage(&sourceImage); cvReleaseImage(&grayImage); cvReleaseImage(&binaryImage); cvDestroyWindow(windowName); return 0; }
これを以下のようにコンパイルする。
g++ threshold.cpp -I/opt/local/include -L/opt/local/lib -lhighgui -lcv -lcxcore -o threshold
で、実行すると
./threshold
てな感じでThresholdによる画像処理ができましたとさ。似たような手法を用いるコトによってその他様々な画像処理ができると思います
...にしても動画が表示されずに口惜しい。。。 どうすればいいのやら