Welcome to the website of CVLab!

Computer Vision Laboratory (CVLAB) of the Graduate school of Systems and Information Engineering at the University of Tsukuba by Professor Kazuhiro Fukui.
Cvlab’s Datasets and Source Code

In CVLAb we study the field of Computer Vision.
In this section you will be able to find the latest Datasets, Source Codes and Papers developed in our laboratory, and download them for Educational purposes under the license of creative commons.

Lectures and Publications

Find a list of our publications in International Conferences, Domestic Conferences and Journal Papers, as well as detailed information about aur lectures at University of Tsukuba.

Become a part of Cvlab

In CVLAB we are always looking for motivated students to help us with our efforts.

If you would like to join our lab, please get in touch with us through the contact section or contact a member of our staff.

News

In this section you can find all the news related with our Lab's activities:

07 December, 2007

2011年度主専攻実験 OpenCVを用いたプログラミング

2011年度主専攻実験
OpenCVを用いたプログラミング


目標

  1. USBカメラから取り込んだ画像に対して、『濃淡化』、『二値化』、 『拡大縮小』、『画像の切り取り』を行い、それぞれ別のウィンドウに表示する。 filesample.cppを参考にする。
  2. 画像ファイルを入力し、適当な画像処理を行ってファイルの出力を行う。

使用する主な関数

    • USBカメラへのアクセス
      • cvCaptureFromCAM
      • cvQueryFrame?
      • cvReleaseCapture?
        CvCapture *cap;
        IplImage *cam_img;
        
        // USBカメラをcapに設定
        cap = cvCaptureFromCAM(0);
        // capから画像を1枚取得
        cam_img = cvQueryFrame(cap);
        
        //++ 適当な画像処理
        
        // capを解放
        cvReleaseCapture(&cap);


    • 画像の作成・解放
      • cvCreateImage?
      • cvCopyImage?
      • cvCloneImage?
      • cvReleaseImage?
        IplImage *img1, *img2;
        
        //++ cam_imgにカメラ画像が入っているとする
        
        // cam_imgと同じサイズのメモリを確保する
        img1 = cvCreateImage(cvGetSize(cam_img), IPL_DEPTH_8U, cam_img->nChannels);
        // cam_imgの画像をコピー
        cvCopyImage(cam_img, img1);
        // 確保とコピーを同時に行う
        img2 = cvCloneImage(cam_img);
        
        //++ 適当な画像処理
        
        // 解放(cam_imgは解放しない)
        cvReleaseImage(&img1);
        cvReleaseImage(&img2);


    • 画像の表示
      • cvNamedWindow?
      • cvShowImage?
      • cvDestroyWindow?
        // "window name"を作成
        cvNamedWindow("window name");
        // image1を"window name"に表示
        cvShowImage("window name", image1);
        // "window name"を破棄
        cvDestroyWindow("window name");


    • 色変換
      • cvCvtColor?
        IplImage *img1, *img2;
        
        //++ cam_imgにカラーのカメラ画像が入っているとする
        
        // カラーのメモリ確保
        img1 = cvCreateImage(cvGetSize(cam_img), IPL_DEPTH_8U, 3);
        // グレイスケールのメモリ確保
        img2 = cvCreateImage(cvGetSize(cam_img), IPL_DEPTH_8U, 1);
        
        // cam_imgをimg1にコピー
        cvCopyImage(cam_img, img1);
        // カラーをグレイに変換
        cvCvtColor(img1, img2, CV_RGB2GRAY);
        
        // 解放
        cvReleaseImage(&img1);
        cvReleaseImage(&img2);






    • 画像の切り取り
      • cvSetImageROI
      • cvResetImageROI
      • img1の(x, y) = (100, 150)から(20, 30)だけ切り出したい場合
        // 切り出すサイズのメモリを確保
        IplImage img2 = cvCreateImage(cvSize(20, 30), IPL_DEPTH_8U, img1->nChannels);
        
        // img1に領域を指定後、コピーして領域をリセット
        cvSetImageROI(img1, cvRect(100, 150, 20, 30));
        cvCopyImage(img1, img2);
        cvResetImageROI(img1);




    注意事項

    • cvQueryFrame?で取得した画像に対して、編集やcvReleaseImage?をしてはいけない。必要に応じてcvCopyImage?やcvCloneを使用する。
      • cvQueryFrame?で取得した画像は、画像の原点が左下にあることがある。IplImage?のメンバoriginが1の時はcvFlipを使って解決する。
        if(src->origin == 1)
         cvFlip(src, dst);
        else
         cvCopyImage(src, dst);
        参考: opencv.jp-IplImage