OpenCV入門【3.0対応】(6)

OpenCV入門【3.0対応】(6)

初めてのOpenCV開発 ― highgui/imgcodecs/videoioモジュール【OpenCV 3.1.0】

2016年10月18日 改訂 (初版:2014/10/16)

OpenCVのhighgui、imgcodecs、videoioという3つのモジュールの概要を解説。GUI機能、画像ファイル/動画ファイルの入出力機能、カメラキャプチャ機能などのAPIと、その基本的な使い方を説明する。

@dandelion1124(http://atinfinity.github.io/
  • このエントリーをはてなブックマークに追加

1. はじめに

 前回、OpenCVのcoreモジュールについて解説を行いました。今回はOpenCVのhighgui/imgcodecs/videoioモジュールについて順に解説します。

 また、今回筆者が動作確認した環境は以下の通りです。

項目 内容
OpenCVバージョン OpenCV 3.1.0
Visual Studio Visual Studio 2013 Update 5
ビルド構成 x64Release
OS Windows 10 Pro(64bit)
筆者が確認した環境

1.1 highguiモジュールとは

 OpenCVのhighguiモジュールは、Windows/Linux/macOS(Mac)といったプラットフォームの違いを吸収した、GUI機能を提供しています。以下の表に、highguiモジュールが提供する機能で内部的に使われるフレームワーク、OSS(オープンソース・ソフトウェア)をまとめました。

機能 内部的に使われるフレームワーク、OSS
GUI機能 Win32 API(Windowsのみ)、Cocoa(macOSのみ)、GTK+、Qt
highguiモジュールが提供する機能で内部的に使われるフレームワークやOSS

内部的に使われるフレームワーク、OSSは、プラットフォームやOpenCVのビルド設定によって異なります。

 また、CMakeのビルド設定で「ウィンドウ描画のバックエンドとしてQtを利用する」ようにした場合、独自の拡張機能が使えるようになりますが、その内容については今後の連載の中で紹介することとします。

1.2 imgcodecsモジュールとは

 OpenCVのimgcodecsモジュールは、Windows/Linux/macOSといったプラットフォームの違いを吸収した画像ファイルの入出力機能を提供しています。OpenCVがサポートしている画像フォーマットについては後述します。

1.3 videoioモジュールとは

 OpenCVのvideoioモジュールは、Windows/Linux/macOSといったプラットフォームの違いを吸収した、動画ファイルの入出力機能、カメラキャプチャ機能を提供しています。以下の表に、videoioモジュールが提供する機能で内部的に使われるフレームワーク、OSS(オープンソース・ソフトウェア)をまとめました。

機能 内部的に使われるフレームワーク、OSS
動画ファイルの入出力機能、カメラキャプチャ機能 Video for Windows(Windowsのみ)、DirectShow(Windowsのみ)、Media Foundation(Windowsのみ)、AVFoundation(macOSのみ)、QTKit(macOSのみ)、Video4Linux(Linuxのみ)、FFmpegOpenNI
videoioモジュールが提供する機能で内部的に使われるフレームワークやOSS

内部的に使われるフレームワーク、OSSは、プラットフォームやOpenCVのビルド設定によって異なります。

2. highguiモジュール

 ここでは、highguiモジュールでよく用いられる以下の主な機能について紹介します。

  • 画像データのウィンドウ表示

 以降、これらの機能と使い方について紹介します。

2.1 画像データのウィンドウ表示

 highguiモジュールで提供されている、画像データのウィンドウ表示を行うために用いる主要なAPIと機能の概要は以下の通りです。

関数名 機能
namedWindow ウィンドウを生成する
imshow ウィンドウに画像データを表示する
waitKey キー入力を待機する
destroyAllWindows ウィンドウを破棄する
画像データのウィンドウ表示のための主要なAPIと機能の概要
2.1.1 API紹介

 ここでは、主要なAPIの機能と引数の説明を行います。

【namedWindow関数】ウィンドウを生成する

void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE);
引数 引数の説明
winname ウィンドウのキャプション名
flags ウィンドウを制御するフラグ(以下のフラグはORで複数同時に指定することもできる)。
WINDOW_NORMAL: ユーザーがウィンドウサイズをリサイズできるようにする
WINDOW_AUTOSIZE: 画像サイズに合わせてウィンドウサイズを自動調整する
WINDOW_FREERATIO: 画像のアスペクト比を維持せず調整する
WINDOW_KEEPRATIO: 画像のアスペクト比を維持する

 上記以外のフラグについては、公式ドキュメント(英語)を参照してください。

【imshow関数】ウィンドウに画像データを表示する

void imshow(const string& winname, InputArray mat);
引数 引数の説明
winname 画像データの表示に用いるウィンドウ名
mat ウィンドウに表示するMatクラスのインスタンス名

【waitKey関数】キー入力を待機する

int waitKey(int delay=0);
引数 引数の説明
delay 指定した時間(ミリ秒単位)の間、キー入力を待機する。
「0」が指定された場合は、キー入力を無限に待ち続ける

【destroyAllWindows関数】OpenCVを使って生成した全てのウィンドウを破棄する

void destroyAllWindows();
2.1.2 サンプルプログラム

 ウィンドウに画像データを表示するサンプルコードを、以下に示します。

C++
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp> // highguiのヘッダーをインクルード
#include <iostream>

int main(int argc, const char* argv[])
{
  // 幅320px、高さ240px、3チャンネルのインスタンスを生成する
  cv::Mat img(cv::Size(320, 240), CV_8UC3, cv::Scalar(0, 0, 255));

  // (1)ウィンドウを生成する
  cv::namedWindow("red image", cv::WINDOW_AUTOSIZE);

  // (2)ウィンドウに画像データを表示する
  cv::imshow("red image", img);

  // (3)キー入力を待機する
  cv::waitKey(0);

  // (4)ウィンドウを破棄する
  cv::destroyAllWindows();

  return 0;
}
ウィンドウに画像データを表示するサンプルコード

 上記のサンプルコードを実行すると、図1のようなウィンドウが表示されます。(1)cv::namedWindow関数の第1引数の指定によってウィンドウのキャプション名が「red image」になっていること、また、(2)cv::imshow関数の第2引数であるimg(=赤色の画像データ)がウィンドウに表示されていることが分かります。

図1 ウィンドウに画像データを表示
図1 ウィンドウに画像データを表示

3. imgcodecsモジュール

 ここでは、imgcodecsモジュールでよく用いる以下の機能について紹介します。

  • 静止画入出力

3.1 静止画入出力

 imgcodecsモジュールで提供されている、静止画入出力を行うために用いる主要なAPIと機能の概要は以下の通りです。

関数名 機能
imread 画像データをファイルから読み込む
imwrite 画像データをファイルに書き出す
静止画入出力のための主要なAPIと機能の概要
3.1.1 API紹介

 ここでは、主要なAPIの機能と引数の説明を行います。

【imread関数】画像データをファイルから読み込む

Mat imread(const string& filename, int flags=1 )

引数 引数の説明
filename 読み込むファイル名(指定した拡張子に応じて画像フォーマットが自動的に選択される)
flags 画像データの読み込みを指定するためのフラグ。
cv::IMREAD_UNCHANGED: 画像データの情報を変更せずに読み込む
cv::IMREAD_GRAYSCALE: グレースケース化して読み込む
cv::IMREAD_COLOR: カラー画像として読み込む

 上記以外のフラグについては、公式ドキュメント(英語)を参照してください。

【imwrite関数】画像データをファイルに書き出す

bool imwrite(const string& filename, InputArray img, const vector<int>& params=vector<int>() )

引数 引数の説明
filename 書き出すファイル名(指定した拡張子に応じて画像フォーマットが自動的に選択される)

 また、OpenCV 3.1.0は以下の画像フォーマットの入出力をサポートしています。詳細は「公式ドキュメント(英語)」を参照してください。

画像フォーマット 拡張子
Windows bitmap .bmp、.dib
JPEG .jpeg、.jpg、.jpe
JPEG 2000 .jp2
Portable Network Graphics .png
WebP .webp
Portable image format .pbm、.pgm、.ppm
Sun rasters .sr、.ras
TIFF .tiff、.tif
OpenEXR Image .exr
Radiance HDR .hdr、.pic
GDAL RasterVectorに列挙されるフォーマット
注:WITH_GDALをONにしてOpenCVをビルドする必要あり
OpenCV 3.1.0がサポートする画像フォーマット
3.1.2 サンプルプログラム

 画像データをファイルから読み込んで、ファイルに書き出すサンプルコードを、以下に示します。

C++
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp> // imgcodecsのヘッダーをインクルード
#include <iostream>


int main(int argc, const char* argv[])
{
  // (1)画像データをファイル(この例では「lena.jpg」)から読み込む
  cv::Mat img = cv::imread("lena.jpg", cv::IMREAD_COLOR);

  // 画像の読み込みに失敗したらエラー終了する
  if(img.empty()) return -1; 

  // (2)画像データをファイルに書き出す
  cv::imwrite("lena.png", img);

  return 0;
}
画像データをファイルから読み込んでファイルに書き出すサンプルコード

4. videoioモジュール

 ここでは、videoioモジュールでよく用いる以下の機能について紹介します(動画像=動画)。

  • 動画像入力
  • 動画像出力
  • カメラキャプチャ

4.1 動画像入力

 videoioモジュールには、動画像入力を行うVideoCaptureクラスが提供されています。VideoCaptureクラスのメソッドと機能の概要は以下の通りです。

関数名 機能
isOpened 動画ファイルが正しく開けているかをチェックする
get 各種プロパティを取得する
set 各種プロパティを設定する
VideoCaptureクラスのメソッドと機能の概要
4.1.1 メソッド紹介

 ここでは、VideoCaptureクラスのコンストラクターおよびメソッドの機能と引数の説明を行います。

【VideoCaptureクラスのコンストラクター】動画ファイルを開くための準備を行う

VideoCapture::VideoCapture(const string& filename)

引数 引数の説明
filename 読み込む動画ファイル名

【VideoCaptureクラスのOpenedメソッド】動画ファイルが正常に開けているかをチェックする

bool VideoCapture::isOpened()

  • 戻り値: 動画ファイルが正常に開けていればtrue、正常に開けていなければfalseを返す

【VideoCaptureクラスのgetメソッド】各種プロパティを取得する

double VideoCapture::get(int propId)

引数 引数の説明
propId プロパティを識別するための定数(詳細はこちらを参照)

【VideoCaptureクラスのsetメソッド】各種プロパティを設定する

bool VideoCapture::set(int propId, double value)

引数 引数の説明
propId プロパティを識別するための定数(詳細はこちらを参照)
value 設定するプロパティ値
4.1.2 サンプルプログラム(動画像入力)

 動画ファイルから取得した画像データをウィンドウ表示するサンプルコードを、以下に示します。

C++
#include <opencv2/core.hpp>
#include <opencv2/videoio.hpp> // videoioのヘッダーをインクルード
#include <opencv2/highgui.hpp> // highguiのヘッダーをインクルード
#include <iostream>

int main(int argc, const char* argv[])
{
  // (1)動画ファイルを開くための準備を行う
  cv::VideoCapture cap("videofile.avi");

  // (2)動画ファイルが正しく開けているかをチェックする(正しく開けていなければエラー終了する)
  if (!cap.isOpened())
    return -1;

  // 画像表示用のウィンドウを生成する
  cv::namedWindow("image", cv::WINDOW_AUTOSIZE);

  // 画像データを格納するための変数を宣言する
  cv::Mat frame;

  for (;;)
  {
    // (3)動画ファイルから1フレーム分の画像データを取得して、変数frameに格納する
    cap >> frame;

    // 画像データ取得に失敗したらループを抜ける
    if (frame.empty()) break;

    // 取得した画像データをウィンドウ表示する
    cv::imshow("image", frame);
    if (cv::waitKey(30) >= 0) break;
  }

  return 0;
}
動画ファイルから取得した画像データをウィンドウ表示するサンプルコード

4.2 動画像出力

 videoioモジュールには動画像出力を行うVideoWriterクラスが提供されています。

4.2.1 コンストラクター紹介

 ここでは、VideoWriterクラスのコンストラクターで指定できるパラメーターとその内容について説明を行います。

【VideoWriterクラスのコンストラクター】画像データを動画像ファイルに書き出す

VideoWriter::VideoWriter(const string& filename, int fourcc, double fps, Size frameSize, bool isColor=true)

引数 引数の説明
filename 書き出すファイル名
fourcc コーデックを指定する4文字のキャラクター。
例えば、cv::VideoWriter::fourcc('P','I','M','1')で「MPEG-1」であることを表す。
その他のリストは「Video Codecs by FOURCC」で参照できる
fps 動画像のフレームレート(=1秒あたりのフレーム数)
frameSize 動画像のフレームサイズ(前回紹介したcv::Sizeを使って指定する)
isColor カラーの動画像ファイルとして書き出すかを指定する
4.2.2 サンプルプログラム(動画像出力)

 画像データを動画ファイルに書き出すサンプルコードを、以下に示します。

C++
#include <opencv2/core.hpp>
#include <opencv2/videoio.hpp> // videoioのヘッダーをインクルード
#include <iostream>

int main(int argc, const char* argv[])
{
  // 幅320px、高さ240px、3チャンネルのインスタンスを生成する
  cv::Mat img(cv::Size(320, 240), CV_8UC3, cv::Scalar(0, 0, 255));

  int fourcc   = cv::VideoWriter::fourcc('X', 'V', 'I', 'D');
  double fps   = 30.0;
  bool isColor = true;

  // (1)動画ファイルを書き出す準備を行う
  cv::VideoWriter writer("videofile.avi", fourcc, fps, img.size(), isColor);

  // (2)動画ファイル書き出しの準備に成功したかチェックする(失敗していればエラー終了する)
  if (!writer.isOpened())
    return -1;

  for (int i = 0; i < 300; i++)
  {
    // (3)画像データを動画ファイルに書き出す
    writer << img;
  }

  return 0;
}
画像データを動画ファイルに書き出すサンプルコード
4.2.3 動画ファイル再生可否状況(参考情報)

 ここでは、参考情報としてVideoWriterクラスで生成した動画ファイルの再生可否についてコーデック名ごとにまとめたものを紹介します。は再生できたこと、は画像サイズによっては再生できたこと、×は再生できなかったことを表します。

コーデック名 cv::VideoWriter::fourccの引数 拡張子 Windows 10 Pro(64bit)
MP4S ('M', 'P', '4', 'S') .mp4
MP4V ('M', 'P', '4', 'V') .mp4
DIV3 ('D', 'I', 'V', '3') .avi
DIVX ('D', 'I', 'V', 'X') .avi
I420 ('I', '4', '2', '0') .avi
IYUV ('I', 'Y', 'U', 'V') .avi
MJPG ('M', 'J', 'P', 'G') .avi
PIM1 ('P', 'I', 'M', '1') .avi
XVID ('X', 'V', 'I', 'D') .avi
dv25 ('d', 'v', '2', '5') .wmv
dv50 ('d', 'v', '5', '0') .wmv
dvc ('d', 'v', 'c', ' ') .wmv
dvh1 ('d', 'v', 'h', '1') .wmv
dvhd ('d', 'v', 'h', 'd') .wmv
dvsd ('d', 'v', 's', 'd') .wmv
dvsl ('d', 'v', 's', 'l') .wmv
H263 ('H', '2', '6', '3') .wmv
M4S2 ('M', '4', 'S', '2') .wmv
MP43 ('M', 'P', '4', '3') .wmv
MPG1 ('M', 'P', 'G', '1') .wmv
MSS1 ('M', 'S', 'S', '1') .wmv ×
MSS2 ('M', 'S', 'S', '2') .wmv ×
WMV1 ('W', 'M', 'V', '1') .wmv
WMV2 ('W', 'M', 'V', '2') .wmv
WMV3 ('W', 'M', 'V', '3') .wmv ×
WVC1 ('W', 'V', 'C', '1') .wmv ×
mp4v ('m', 'p', '4', 'v') .mov
動画ファイル再生可否状況(CMakeによる設定で「WITH_FFMPEG」をオンにしてOpenCVをビルド)
コーデック名 cv::VideoWriter::fourccの引数 拡張子 Windows 10 Pro(64bit)
MP4S ('M', 'P', '4', 'S') .mp4 ×
MP4V ('M', 'P', '4', 'V') .mp4 ×
DIV3 ('D', 'I', 'V', '3') .avi ×
DIVX ('D', 'I', 'V', 'X') .avi ×
I420 ('I', '4', '2', '0') .avi ×
IYUV ('I', 'Y', 'U', 'V') .avi ×
MJPG ('M', 'J', 'P', 'G') .avi ×
PIM1 ('P', 'I', 'M', '1') .avi
XVID ('X', 'V', 'I', 'D') .avi ×
dv25 ('d', 'v', '2', '5') .wmv ×
dv50 ('d', 'v', '5', '0') .wmv ×
dvc ('d', 'v', 'c', ' ') .wmv ×
dvh1 ('d', 'v', 'h', '1') .wmv ×
dvhd ('d', 'v', 'h', 'd') .wmv ×
dvsd ('d', 'v', 's', 'd') .wmv ×
dvsl ('d', 'v', 's', 'l') .wmv ×
H263 ('H', '2', '6', '3') .wmv ×
M4S2 ('M', '4', 'S', '2') .wmv ×
MP43 ('M', 'P', '4', '3') .wmv ×
MPG1 ('M', 'P', 'G', '1') .wmv ×
MSS1 ('M', 'S', 'S', '1') .wmv ×
MSS2 ('M', 'S', 'S', '2') .wmv ×
WMV1 ('W', 'M', 'V', '1') .wmv
WMV2 ('W', 'M', 'V', '2') .wmv
WMV3 ('W', 'M', 'V', '3') .wmv
WVC1 ('W', 'V', 'C', '1') .wmv
mp4v ('m', 'p', '4', 'v') .mov
動画ファイル再生可否状況(CMakeによる設定で「WITH_MSMF」をオンにしてOpenCVをビルド)
コーデック名 cv::VideoWriter::fourccの引数 拡張子 Windows 10 Pro(64bit)
MP4S ('M', 'P', '4', 'S') .mp4
MP4V ('M', 'P', '4', 'V') .mp4
DIV3 ('D', 'I', 'V', '3') .avi
DIVX ('D', 'I', 'V', 'X') .avi
I420 ('I', '4', '2', '0') .avi
IYUV ('I', 'Y', 'U', 'V') .avi
MJPG ('M', 'J', 'P', 'G') .avi
PIM1 ('P', 'I', 'M', '1') .avi
XVID ('X', 'V', 'I', 'D') .avi
dv25 ('d', 'v', '2', '5') .wmv
dv50 ('d', 'v', '5', '0') .wmv
dvc ('d', 'v', 'c', ' ') .wmv
dvh1 ('d', 'v', 'h', '1') .wmv
dvhd ('d', 'v', 'h', 'd') .wmv
dvsd ('d', 'v', 's', 'd') .wmv
dvsl ('d', 'v', 's', 'l') .wmv
H263 ('H', '2', '6', '3') .wmv
M4S2 ('M', '4', 'S', '2') .wmv
MP43 ('M', 'P', '4', '3') .wmv
MPG1 ('M', 'P', 'G', '1') .wmv
MSS1 ('M', 'S', 'S', '1') .wmv ×
MSS2 ('M', 'S', 'S', '2') .wmv ×
WMV1 ('W', 'M', 'V', '1') .wmv
WMV2 ('W', 'M', 'V', '2') .wmv
WMV3 ('W', 'M', 'V', '3') .wmv
WVC1 ('W', 'V', 'C', '1') .wmv
mp4v ('m', 'p', '4', 'v') .mov
動画ファイル再生可否状況(CMakeによる設定で「WITH_FFMPEG」、「WITH_MSMF」をオンにしてOpenCVをビルド)

 OpenCVのVideoWriterクラスにおける動画像ファイル出力処理は、「WITH_FFMPEG」、「WITH_MSMF」がともにONになっている場合、まずFFMPEGで生成を試みて、失敗するとMedia Foundationで生成を試みる仕組みになっています。そのため、今回試した組み合わせの中では、「WITH_FFMPEG」、「WITH_MSMF」がオンになっているケースが最も多くのコーデックを処理できていることが分かります。

4.3 カメラキャプチャ

 videoioモジュールには、カメラキャプチャを行うVideoCaptureクラスが提供されています。VideoCaptureクラスのメソッドと機能の概要は以下の通りです。

関数名 機能
isOpened カメラが正しくオープンできているかをチェックする
get カメラキャプチャの各種プロパティを取得する
set カメラキャプチャの各種プロパティを設定する
VideoCaptureクラスのメソッドと機能の概要
4.3.1 メソッド紹介

 ここでは、VideoCaptureクラスのメソッドの機能と引数の説明を行います。

【VideoCaptureクラスのisOpenedメソッド】カメラが正常にオープンできているかをチェックする

bool VideoCapture::isOpened()

  • 戻り値: 正常にオープンできていればtrue、正常にオープンできていなければfalseを返す

【VideoCaptureクラスのgetメソッド】各種プロパティを取得する

double VideoCapture::get(int propId)

引数 引数の説明
propId プロパティを識別するための定数(詳細はこちらを参照)

【VideoCaptureクラスのsetメソッド】各種プロパティを設定する

bool VideoCapture::set(int propId, double value)

引数 引数の説明
propId プロパティを識別するための定数(詳細はこちらを参照)
value 設定するプロパティ値
4.3.2 サンプルプログラム

 カメラキャプチャを行い、取得した画像データをウィンドウ表示するサンプルコードを、以下に示します。

C++
#include <opencv2/core.hpp>
#include <opencv2/videoio.hpp> // videoioのヘッダーをインクルード
#include <opencv2/highgui.hpp> // highguiのヘッダーをインクルード
#include <iostream>

int main(int argc, const char* argv[])
{
  // (1)DirectShowを使ってカメラキャプチャを行う。
  // また、カメラIDが0番のカメラについてキャプチャの準備を行う
  int camera_id = 0;
  cv::VideoCapture cap(cv::CAP_DSHOW + camera_id);

  // (2)カメラIDが0番のカメラが正しくオープンできているかをチェックする(正しくオープンできていなければエラー終了する)
  if (!cap.isOpened())
    return -1;

  // (3)カメラキャプチャのフレームレートを30.0に指定する
  cap.set(cv::CAP_PROP_FPS, 30.0);

  // 画像表示用のウィンドウを生成する
  cv::namedWindow("image", cv::WINDOW_AUTOSIZE);

  // 画像データを格納するための変数を宣言する
  cv::Mat frame;

  for (;;)
  {
    // (4)カメラから1フレーム分の画像データを取得して、変数frameに格納する
    cap >> frame;

    // 画像データ取得に失敗したらループを抜ける
    if (frame.empty()) break;

    // 取得した画像データをウィンドウ表示する
    cv::imshow("image", frame);

    if (cv::waitKey(30) >= 0) break;
  }
  return 0;
}
カメラキャプチャを行い、取得した画像データをウィンドウ表示するサンプルコード
4.3.3 サンプルプログラムの補足

 サンプルコードでは、VideoCaptureクラスのインスタンス生成でcv::CAP_DSHOWを指定することで、“DirectShow”を使ったキャプチャを行うようにしています。

 このように明示的な指定を行わない場合、Windowsではデフォルトで“Video for Windows”を使ったキャプチャが行われます。しかし、Video for Windowsは、レガシーなAPIかつ利用できる機能も少ないため、Windows環境で利用する場合にはcv::CAP_DSHOW(DirectShowを使ったキャプチャ)か、cv::CAP_MSMF(Media Foundationを使ったキャプチャ)を指定することをお勧めします。

5. おわりに

 今回は、highgui/imgcodecs/videoioモジュールを紹介しました。次回は、OpenCVアプリケーション開発におけるデバッグ補助ツールを紹介します。

※以下では、本稿の前後を合わせて5回分(第4回~第8回)のみ表示しています。
 連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。

4. 初めてのOpenCV開発 ― Visual Studio/CMake/NuGetでプロジェクト作成【OpenCV 3.0/3.1】

OpenCVを使ったアプリケーションのプロジェクト作成方法として、「Visual Studio」「CMake」「NuGet」の3つの方法を解説する。

5. 初めてのOpenCV開発 ― coreモジュール【OpenCV 3.1.0】

OpenCVのcoreモジュールの概要を解説。そのMatクラスを使って画像データを扱う方法や、ユーティリティ関数、OpenCV 3.0より導入されたUMatクラスを紹介する。

6. 【現在、表示中】≫ 初めてのOpenCV開発 ― highgui/imgcodecs/videoioモジュール【OpenCV 3.1.0】

OpenCVのhighgui、imgcodecs、videoioという3つのモジュールの概要を解説。GUI機能、画像ファイル/動画ファイルの入出力機能、カメラキャプチャ機能などのAPIと、その基本的な使い方を説明する。

7. 初めてのOpenCV開発 ― デバッグ機能およびデバッグ支援プラグイン【OpenCV 3.1.0】

OpenCVを用いたアプリケーションの開発で役立つにデバッグ機能やデバッグ支援プラグインを紹介する。また、問題が生じた場合の対処法について説明する。

8. 初めてのOpenCV開発 ― CMakeを使ったOpenCVのカスタマイズ【OpenCV 3.1.0】

CMakeを使ったOpenCVのカスタマイズ方法として、CMakeの導入方法やCMakeの各種オプションについて紹介する。

Twitterでつぶやこう!


Build Insider賛同企業・団体

Build Insiderは、以下の企業・団体の支援を受けて活動しています(募集概要)。

ゴールドレベル

  • 日本マイクロソフト株式会社
  • グレープシティ株式会社