この連休中にちょっとOpenCV 2.0で遊んでいました。
ライブラリの規模がかなり大きくなったのでソースを読むのも大変です;
IplImage や CvMat は 新しいC++インタフェースでは cv::Mat に取って代わります。
(1.1preで追加されたWImageクラスの立場は? 関連:cv::WImage ? OpenCV 1.1)
また、メモリ管理が賢くなっているので、後始末は各クラスのデストラクタに任せておきましょう。
boostのshared_ptrと同様のスマートポインタ(cv::Ptr)も用意されていて、いろいろ便利になっているようです。
C++インタフェースを中心にこれから少しずつ調べていこうと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// カメラから画像をキャプチャ #include <cv.h> #include <highgui.h> int main(int argc, char **argv) { using namespace cv; VideoCapture cap(0); // VideoCapture(int device) if(!cap.isOpened()) return -1; Mat edges; char code; namedWindow("OpenCV 2.0 Capture Test", CV_WINDOW_AUTOSIZE); for(;;) { Mat frame; cap >> frame; // virtual VideoCapture& operator >> (Mat& image) cvtColor(frame ,edges, CV_BGR2GRAY); GaussianBlur(edges, edges, Size(7, 7), 1.5, 1.5); Canny(edges, edges, 0, 30, 3); imshow("OpenCV 2.0 Capture Test", edges); code = waitKey(30); if(code == 'q') break; if(code == 's') imwrite("test.jpg", edges); } return 0; } |