OpenCV インストール
なにやら OpenCV を使うと OpenGL の動画をファイルとして出力できるらしい!
こんな楽しいものをインストールしない手は無い!!
MacPorts にパッケージがあるみたいだったので、早速インストール。
$ sudo port install opencv
(Mac が生まれ変わったのを機に、fink から MacPorts へ宗旨替えしてみました。
fink より比較的新しいバージョンを扱ってくれてるみたいです。)
う〜ん、でもヘッダファイルの cv.h と highgui.h が locate で見付からない……。
$ locate cv.h
いやいや、最近のファイルだから locatedb が更新されてないだけでしょ、ってことで
$ /usr/libexec/locate.updatedb
っと。無事、/opt/local/include/opencv/ に cv.h と highgui.h が見付かりました。
早速以下の簡単なサンプルプログラムをコンパイル。
(コピー元: http://opencv.jp/sample/basic_structures.html)
#include <cv.h> #include <highgui.h> int main (int argc, char **argv) { int x, y; uchar p[3]; IplImage *img; if (argc != 2 || (img = cvLoadImage (argv[1], CV_LOAD_IMAGE_COLOR)) == 0) return -1; // (1)ピクセルデータ(R,G,B)を順次取得し,変更する for (y = 0; y < img->height; y++) { for (x = 0; x < img->width; x++) { p[0] = img->imageData[img->widthStep * y + x * 3]; // B p[1] = img->imageData[img->widthStep * y + x * 3 + 1]; // G p[2] = img->imageData[img->widthStep * y + x * 3 + 2]; // R img->imageData[img->widthStep * y + x * 3] = cvRound (p[0] * 0.7 + 10); img->imageData[img->widthStep * y + x * 3 + 1] = cvRound (p[1] * 1.0); img->imageData[img->widthStep * y + x * 3 + 2] = cvRound (p[2] * 0.0); } } cvNamedWindow ("Image", CV_WINDOW_AUTOSIZE); cvShowImage ("Image", img); cvWaitKey (0); cvDestroyWindow ("Image"); cvReleaseImage (&img); return 0; }
gcc test.c -o test -I/opt/local/include/opencv -L/opt/local/lib/ -lcv -lhighgui
しかし、ローダが以下のようなエラーを吐く。
/usr/libexec/gcc/i686-apple-darwin8/4.0.1/ld: Undefined symbols: _cvAddS _cvAlloc _cvAvg _cvAvgSdv _cvBoundingRect _cvBoxPoints _cvCalcArrHist _cvCalcEMD2 _cvCalibrateCamera2 _cvCartToPolar _cvCircle _cvColorToScalar _cvConvexHull2 _cvCreateGraphScanner _cvCreateMat _cvCreateSubdiv2D _cvDestroyWindow _cvEllipse _cvError _cvExp _cvFindChessboardCorners _cvFindExtrinsicCameraParams2 _cvFindFundamentalMat _cvFitEllipse2 _cvFitLine _cvFree_ _cvGetCols _cvGetElemType _cvGetFileNodeByName _cvGetRawData _cvGetRows _cvGetSeqElem _cvHoughLines2 _cvInitFont _cvInitSubdivDelaunay2D _cvInvert _cvKMeans2 _cvLine _cvLoadImage _cvLog _cvMinAreaRect2 _cvNamedWindow _cvPerspectiveTransform _cvPolyLine _cvPow _cvProjectPoints2 _cvRandArr _cvRead _cvReleaseGraphScanner _cvReleaseImage _cvReleaseMat _cvReshape _cvRodrigues2 _cvSeqSlice _cvSet _cvSetAdd _cvShowImage _cvSum _cvTransform _cvUndistort2 _cvWaitKey collect2: ld returned 1 exit status
調べてみると、/opt/local/lib/ 以下には libcv.a と libhighgui.a は無い。そりゃあエラー吐くわ。
今日のところはここまでで、また明日からコンパイルできるよう頑張ります。
# 結局、手動で OpenCV をインストールする羽目になったりして((((;゜Д゜)))