トップページ -> 実践知識 -> OpenCV の使用法 -> OpenCV を用いた USB カメラの画像表示
[サイトマップへ]  

OpenCV を用いた USB カメラの画像表示

サイト構成 連絡先,業績など 実践知識 データの扱い コンピュータ 教材 サポートページ

OpenCV を用いて、USB カメラの画像をそのまま表示したり、グレースケール化して表示するプログラムの例

◆プログラムの例 (USB カメラの画像をそのまま表示)

#include <cv.h>
#include <highgui.h>

using namespace cv;

int main (int argc, char **argv)
{
  const double WIDTH = 640;  // 幅
  const double HEIGHT = 480; // 高さ
  const int CAMERANUM = 0; // カメラ番号

  CvCapture *capture = NULL;
  IplImage *frame = 0;
  int ch;

  // カメラ接続、幅と高さの設定
  capture = cvCreateCameraCapture(CAMERANUM);
  cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH, WIDTH);
  cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT, HEIGHT);

  namedWindow ("Capture", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);

  while (1) {
    frame = cvQueryFrame (capture);
    cvShowImage ("Capture", frame);
    ch = cvWaitKey ( 1 ); // 0 はディレイ時間 (ミリ秒単位)
    if (ch == '\x1b') {
      // ESC キー
      break;
    }
  }

  cvReleaseCapture (&capture);
  cvDestroyWindow ("Capture");

  return 0;
}

◆プログラムの例 (元画像とグレースケール化した画像を並べて表示)

#include <cv.h>
#include <highgui.h>

using namespace cv;

int main (int argc, char **argv)
{
  const double WIDTH = 640;  // 幅
  const double HEIGHT = 480; // 高さ
  const int CAMERANUM = 0; // カメラ番号

  CvCapture *capture = NULL;
  IplImage *frame = 0;
  IplImage *gray = cvCreateImage( cvSize(WIDTH, HEIGHT), IPL_DEPTH_8U, 1 );
  int ch;

  // カメラ接続、幅と高さの設定
  capture = cvCreateCameraCapture(CAMERANUM);
  cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH, WIDTH);
  cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT, HEIGHT);

  namedWindow ("Capture", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
  namedWindow ("GrayScale", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);

  while (1) {
    frame = cvQueryFrame (capture);
    cvShowImage ("Capture", frame);
    cvCvtColor(frame, gray, CV_BGR2GRAY);
    cvShowImage ("GrayScale", gray);
    ch = cvWaitKey ( 1 ); // 0 はディレイ時間 (ミリ秒単位)
    if (ch == '\x1b') {
      // ESC キー
      break;
    }
  }

  cvReleaseCapture (&capture);
  cvDestroyWindow ("Capture");

  return 0;
}

◆ Linux でのビルド手順例

g++ -o a.out hoge.cc -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_photo -lopencv_imgproc -lopencv_highgui -lopencv_core