しおたに・ドット・チャイナ 本文へジャンプ
top >OpenCVによるUSBビデオカメラから動画の読み込みから表示まで

OpenCVによるUSBビデオカメラから動画の読み込みから表示まで


 CV(コンピュータ・ビジョン)のフリーライブラリOpenCVで、USB接続したビデオカメラ(Webカメラ)から動画をリアルタイムに読み込み、Windowに表示する方法を紹介します。




OpenCVによるUSBビデオカメラから動画の読み込みから表示まで

 動画をC++で扱う場合、従来はとてつもなく大変なプログラミングをする必要がありましたが、OpenCVを利用すると

簡単にプログラミングして読み込むことができます。

 まずは基本の動画の読み込みと画像表示のプログラムを下記に記します。

 プログラムの説明は、プログラム中に説明していますので、参考にしてください。


douga1.cpp
//
// 1.動画の読み込みと表示
//
// Copyright(c) 2011 shiotani.cn All Rights Reserved.
//

#include "stdio.h"
#include "opencv2/opencv.hpp"

#pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_core231d.lib")
#pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_imgproc231d.lib")
#pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_highgui231d.lib")
#pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_calib3d231d.lib")
#pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_contrib231d.lib")
#pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_features2d231d.lib")
#pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_flann231d.lib")
#pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_gpu231d.lib")
#pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_legacy231d.lib")
#pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_ml231d.lib")
#pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_objdetect231d.lib")
#pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_ts231d.lib")
#pragma comment(lib,"C:\\OpenCV2.3\\lib\\opencv_video231d.lib")


int main(void)
{
char* ucvWndName="USB Camera Video"; // 表示Window名の宣言
CvCapture* capture; // ビデオキャプチャの宣言
IplImage* img; // 画像構造体の宣言

capture=cvCaptureFromCAM(0); // ビデオカメラ画像の取得
if(capture==NULL) // ビデオカメラが取得できない時
{
fprintf(stderr, "There is not the camera.\n");
return -1;
}

cvNamedWindow(ucvWndName); // 表示Windowの作成(ucvWndName:表示Window名)

while(1)
{
img=cvQueryFrame(capture); // ビデオ動画の1フレーム取得
cvShowImage(ucvWndName, img); // ビデオ動画の1フレーム表示

if(cvWaitKey(1)>=0) // キーを押したら動画表示の終了
break;
}

cvDestroyWindow(ucvWndName); // 表示Windowを破棄
cvReleaseCapture(&capture); // ビデオキャプチャの解放

return 0;
}

 上のプログラムを基本にして、少しずつOpenCVを理解していき、いずれ高度なプログラミングをしていきたいと思います。

 しかし、簡単になったとはいえ、関数や引数などが、ちんぷんかんぷんですが、なんか良く分からないけど

 便利な呪文程度に進めていくことにします。

 (なお、冗長なプログラム&プログラムミスは、おおめに見てください。)


当環境では、.VC++ 2010 Expressで、プログラミング前に、毎回以下の3点は忘れずにしています。

 ・空のオブジェクト作成後、「プロジェクト>新しい項目の追加>Visual C++ C++ファイル作成」

 ・「プロジェクト>プロパティ>構成プロパティ>全般>文字セット>設定なし」

 ・「プロジェクト>プロパティ>構成プロパティ>C/C++>全般>追加のインクルードディレクトリ>
   C:\OpenCV2.3\include」





 紹介した事項により生じた不都合などには責任は負えませんので、くれぐれも自己責任でお願いします。




Copyright (C) 2008, しおたに・ドット・チャイナ, All Rights Reserved.