LoginSignup
7
7

More than 5 years have passed since last update.

OpenCVでWebカメラのモードを選択できるようにする(Windows限定).

Posted at

概要

Webカメラのモード(解像度やfps)を選択し,OpenCVのcv::Matで画像をキャプチャする.

モチベーション

OpenCVでWebカメラを使うとき,デフォルトのカメラモードが選択されており,モードを変更する際にはいちいちset関数を使ってモードを設定するのが面倒.
また,使っているWebカメラがどんな解像度,fpsで画像を取得できるのかわからない.
なんとか工夫して,プログラム側からWebカメラのモード(解像度やfpsなど)を簡単に選択したい.

ソースコード

ソースコードはここにあります.

使い方

main.cpp
#include <opencv2/opencv.hpp>

#include "web_camera.h"

int main()
{
    WebCamera webcam(0);      //使うwebカメラの番号を入力
                              //プログラムを起動後モード選択をする

    //WebCamera webcam(0, 0); //使うwebカメラの番号を入力
                              //二つ目の引数はモード選択                  

    while(1){
        cv::Mat frame;
        webcam.GetImage(&frame); //画像の読み込み
        if (frame.empty()){
            break;
        }
        cv::imshow("web camera", frame);
        int k = cv::waitKey(1);
        if (k == 'q') {
            break;
        }
    }
    return EXIT_SUCCESS;
}

実行

実行環境

  • Windows10
  • Visual C++ 12.0
  • Visual C++ 14.0

上記の環境で試しました.

実行例

DirectShow VideoCapture  cameraID 0
------------------------
0 : 640 x 480, 30 fps RGB24
1 : 160 x 90, 15 fps RGB24
2 : 160 x 100, 15 fps RGB24
3 : 160 x 120, 15 fps RGB24
4 : 176 x 144, 15 fps RGB24
5 : 320 x 180, 15 fps RGB24
6 : 320 x 200, 15 fps RGB24
7 : 320 x 240, 15 fps RGB24
8 : 352 x 288, 15 fps RGB24
9 : 640 x 360, 15 fps RGB24
10 : 640 x 400, 15 fps RGB24
11 : 864 x 480, 15 fps RGB24
12 : 768 x 480, 15 fps RGB24
13 : 800 x 450, 15 fps RGB24
14 : 800 x 500, 15 fps RGB24
15 : 800 x 600, 15 fps RGB24
16 : 960 x 720, 15 fps RGB24
17 : 1280 x 720, 5 fps RGB24
18 : 1280 x 800, 5 fps RGB24
19 : 1280 x 1024, 5 fps RGB24
------------------------

Input format No. ->

使いたいWebカメラのモードを選択します.

まとめと注意点

OpenCVでWebカメラを使う際,容易にカメラの解像度とfpsを選択できるようになりました.
windowsのみで実行できます.Ubuntuなど,Linux環境では実行できません.

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7