OpenCV

★ この記事では、OpenCVについて分かりやすく説明することを目標
  としています。随時更新します。

◎ 単語

画素値

点につけた色を数字で表現したもの

輝度値

1画素の色のデータを0~255の数値で表したもの

◎ 基本事項

○ cv::Mat

確保された画像領域は、スコープから外れた時に自動的に解放されます。

◎ よく使用するクラス

○ 例外クラス

◎ よく使用する関数

○ cv::imread()

説明

「cv::imread」は、画像を読み込むための関数です。
ファイル名に基づいて、読み込むファイルのフォーマットを決定します。
読み込むことができるフォーマットは多岐にわたります。
また、シグナルチャンネルやマルチチャンネル、整数値、浮動小数点数など、
あらゆる画像を扱うことができます。

引数

戻り値

cv::Matを返します。

メモリ

画像データに必要なメモリを自動的に確保します。

○ cv::namedWindow()

説明

「cv::namedWindow()」は、画像を表示するためのウィンドウを作成する関数です。

引数

第1引数:ウィンドウに付ける名前を指定します。

第2引数:画像が表示された時の、ウィンドウのプロパティを設定します。

○ cv::imshow()

説明

「cv::imshow()」は、ウィンドウに表示する画像を設定する関数です。

引数

第1引数:画像を表示するウィンドウ名を指定します。

第2引数:表示する画像を指定します。

○ cv::destroyWindow()

説明

「cv::destroyWindow()」は、作成したウィンドウを破棄する関数です。
スコープから外れる前に、この関数でウィンドウを破棄しないとメモリリークの原因になります。

引数

第1引数:破棄するウィンドウ名を指定します。

double threshold(const Mat& src, Mat& dst, double thresh, double maxVal, int thresholdType);

この関数では、シングルチャンネルの配列に対して,ある定数での閾値処理を行います.これは,グレースケールからの2値画像生成に利用される場合が多いです

閾値タイプを変更することによって、閾値処理の方式を変更することができます。

thresholdType

THRESH_BINARY

この閾値タイプは、閾値(thresh)より大きい画素値を最大値(maxVal)、それ以外を0として2値化します。

THRESH_BINARY_INV

この閾値タイプは、閾値(thresh)より大きい画素値を0、それ以外を最大値(maxVal)として2値化します。

THRESH_TRUNC

この閾値タイプは、閾値(thresh)より大きい画素値を閾値(threshold)、それ以外をその画素値とします。

THRESH_TOZERO

この閾値タイプは、閾値(thresh)より大きい画素値をその画素値、それ以外を0とします。

THRESH_TOZERO_INV

この閾値タイプは、閾値(thresh)より大きい画素値を0、それ以外をその画素値とします。

THRESH_OTSU

この閾値タイプは、閾値(thresh)より大きい画素値を0、それ以外をその画素値とします。関数は大津のアルゴリズムを用いて最適な閾値を決定し,それを引数 thresh で指定された値の代わりに利用します.

○ 大津の2値化

☆大津の2値化とは、分離度が最大となる閾値を求め、自動で2値化をする手法のことです。

分離度を求めるために、クラス間分散とクラス内分散を求めます。求めたクラス間分散とクラス内分散の比から分離度を求めます。

○ 浅いコピー深いコピー

>画像という分野

画像という分野

画像に関連することを網羅していきます。

ぜひお時間がある方はのぞいてみてください。

CTR IMG