OpenCV_ Mat の基本操作

Mat 続き。

画像情報の取得

画像の行、列を取り扱うことが出来る。

rows:画像の高さ ( 行数に対応 )
cols:画像の ( 列数に対応 )

ex ) cv::Mat hoga( cv::Size(200, 100),  CV_8UC3,  cv::Scalar(0, 0, 255) );
hoga.clos で 200。

 

channels チャンネル数を取得できる。

hoga.channels( ) なら 3。

 

depth で画像のビット深度を取得出来る。

hoge.depth( ) なら 0  ( 多分。違うかも )

 

画素値の取得と設定

.at<cv::Vec3b>(y, x)  を用いる。
vec3b:uchar型3要素のベクター

ex )
hoga.at<cv::Vec3b>(2, 5);
で 5 列目の 2 行目 画素にアクセスできる。

 

取得する場合は
cv::vec3b p = hoga.at<cv::Vec3b>(2, 5);

 

画素の変更
hoga.at<cv::Vec3b>(y, x)[0] = xx; //青
hoga.at<cv::Vec3b>(y, x)[1] = xx; //緑
hoga.at<cv::Vec3b>(y, x)[2] = xx; //赤

 

位置が( y, x ) にある画素値を
10
20
30
各チャネルで設定したい時は、以下の様に行う。

cv::vec3b p = cv::Vec3b(30, 20, 10);
hoga.at<cv::Vec3b>(y, x) = p;
または
hoga.at<cv::Vec3b>(y, x) = cv::Vec3b(30, 20, 10);

 

画像ファイルの読込み

画像ファイルを Mat 型に変換
戻り値 cv::Mat imread ( "画像ファイルパス", 読出し方を指定する定数 )
ex)
cv::Mat hoga = cv::imread("./hoga.jpg", XXXXX);

 

第二引数

CV_LOAD_IMAGE_UNCHANGED
濃淡画像( モノクロ ) を濃淡とし、
カラー画像をカラー画像として読み込みたい時。

CV_LOAD_IMAGE_GRAYSCALE
どんな場合でも濃淡画像として読み込みたい時。

CV_LOAD_IMAGE_COLOR
どんな場合でもカラー画像として読み込みたい時。

画像読出しの失敗判定は画像データが 0 か否かで判断できる。

if( hoga.data == 0 )
{
    std::count << "NG" << std::endl;
}

 

Mat データを 画像ファイルとして保存

cv::imwrite( "画像ファイル名", cv::Mat 型データ );
ex)
cv::imwrite( "./img.jpg", hoga );

 

 

こちらから。
http://www.buildinsider.net/small/opencv/005
http://www.wakayama-u.ac.jp/~chen/cmake/LearningOpenCV.html
http://www.wakayama-u.ac.jp/~chen/opencv/opencv2.html
http://gori-naru.blogspot.jp/2012/11/blog-post_789.html

 

以上。