OpenCV を用いた USB カメラの画像表示
【概要】
OpenCV を用いて、USB カメラの映像をそのまま表示するプログラムと、グレースケール化して表示するプログラムの例を示す。コードは C++ で記述し、現在広く使われている OpenCV 4 系の C++ API(cv::VideoCapture などを用いる API)に基づく。
【目次】
【関連する外部ページ】
- OpenCV の公式ページ: https://opencv.org
- GitHub の OpenCV のページ: https://github.com/opencv/opencv/releases
【サイト内の関連情報】
- OpenCV について [PDF] , [パワーポイント]
- OpenCV のインストール、画像表示を行う C++ プログラムの実行手順: 別ページ »で説明
- OpenCV と Python を活用した画像・ビデオ処理プログラム: 別ページ »にまとめ
- OpenCV 4 の C/C++ プログラム: 別ページ »にまとめている。
USB カメラの映像をそのまま表示する
USB カメラから映像を取り込み、ウィンドウにそのまま表示する C++ プログラムの例を示す。ESC キーを押すと終了する。
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char **argv)
{
const double WIDTH = 640; // 幅
const double HEIGHT = 480; // 高さ
const int CAMERANUM = 0; // カメラ番号
// カメラ接続、幅と高さの設定
VideoCapture capture(CAMERANUM);
capture.set(CAP_PROP_FRAME_WIDTH, WIDTH);
capture.set(CAP_PROP_FRAME_HEIGHT, HEIGHT);
Mat frame;
namedWindow("Capture", WINDOW_AUTOSIZE);
while (1) {
capture.read(frame);
imshow("Capture", frame);
if (waitKey(1) == 27) { // 27 は ESC キーのコード
break;
}
}
capture.release();
destroyWindow("Capture");
return 0;
}
元画像とグレースケール化した画像を並べて表示する
USB カメラの映像(元画像)と、それをグレースケール化した画像を、別々のウィンドウに並べて表示する C++ プログラムの例を示す。ESC キーを押すと終了する。
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char **argv)
{
const double WIDTH = 640; // 幅
const double HEIGHT = 480; // 高さ
const int CAMERANUM = 0; // カメラ番号
// カメラ接続、幅と高さの設定
VideoCapture capture(CAMERANUM);
capture.set(CAP_PROP_FRAME_WIDTH, WIDTH);
capture.set(CAP_PROP_FRAME_HEIGHT, HEIGHT);
Mat frame;
Mat gray;
namedWindow("Capture", WINDOW_AUTOSIZE);
namedWindow("GrayScale", WINDOW_AUTOSIZE);
while (1) {
capture.read(frame);
imshow("Capture", frame);
cvtColor(frame, gray, COLOR_BGR2GRAY);
imshow("GrayScale", gray);
if (waitKey(1) == 27) { // 27 は ESC キーのコード
break;
}
}
capture.release();
destroyWindow("Capture");
destroyWindow("GrayScale");
return 0;
}
Linux でのビルド手順例
Linux 上で、ソースファイル hoge.cc をコンパイルして実行ファイル a.out を作る例を示す。OpenCV 4 系では、コンパイルに必要なヘッダとライブラリの指定を pkg-config(インストール済みライブラリのコンパイル設定を取得するツール)で得て、g++ に渡す。
g++ -o a.out hoge.cc $(pkg-config --cflags --libs opencv4)