Opencv3プログラミング入門のイメージの入力、表示、出力の部分を見たとき、imwrite関数を適用するときにプログラムを理解するのが困難になりました。情報を参考に収集・理解する。
void createAlphaMat(Mat&mat)
{
for(int i = 0; i <mat.rows; ++ i){ for(int j = 0; j <mat.cols; ++ j){ Vec4b&rgba = mat.at <Vec4b >(i、j); rgba [0] = UCHAR_MAX; rgba [1] = saturate_cast <uchar>((float(mat.cols-j))/((float)mat.cols)* UCHAR_MAX); rgba [2] = saturate_cast <uchar>((float(mat.rows-i))/((float)mat.rows)* UCHAR_MAX); rgba [3] = saturate_cast <uchar>(0.5 *(rgba [1] + rgba [2])); } } }
行の意味:行colsの意味:列
Vec4b&rgba = mat.at <Vec4b>(i、j); :
mat.at(i、j)、matからピクセルを取得、ピクセルタイプはVec4b、このタイプの意味は、UCHARタイプの4つの要素があり、
その中で、rgba [0]、rgba [1]、rgab [2]は、ピクセルの3つの原色BGR、つまり青(青)、緑(緑)、赤(赤)を表します。
rgba [3]はピクセルのアルファ値を表し、ピクセルの透明度を示します。その中で:.atはMatがピクセルにアクセスすることを意味します(at)1つのピンピクセルを読み取ります
saturate_cast <uchar>((float(mat.cols-j))/((float)mat.cols)* UCHAR_MAX); :
// -----------------------------------【ShowHelpText()関数】------- ---------------------------
//説明:ヘルプ情報を出力します
// ------------- -------------------------------------------------- -------------------------------
void ShowHelpText()
{
//ウェルカムメッセージとOpenCVバージョン
printf( "\ n \ n \ t \ t \ t「OpenCV3プログラミング入門」をご購入いただき、誠にありがとうございます!\ n ");
printf(" \ n \ n \ t \ t \ t \ tこれは、この本OpenCV3バージョンの15番目のサポート例プログラムですn ");
printf(" \ n \ n \ t \ t \ t現在使用されているOpenCVのバージョン: "CV_VERSION);
printf(" \ n \ n --------------- -------------------------------------------------- ----------- \ n ");
}
int main()
{
//アルファチャネル
(480、640、CV_8UC4);を
使用してマットMatマットを作成します; createAlphaMat(mat);
ShowHelpText();
ベクター<整数> compression_params;
// opencv2バージョンコード文は、次のとおり
//compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
// OpenCV3バージョンコード文は次のとおり
compression_params.push_back(IMWRITE_PNG_COMPRESSION);
compression_params.push_back(9)。
//画像を表示します
try {
imwrite( "Transparent Alpha value map.png"、mat、compression_params);
imshow( "Generated png image"、mat);
fprintf(stdout、 "PNG画像ファイルのアルファデータが保存されます〜\ nプロジェクトディレクトリのimwrite関数によって生成された画像を表示できます\ n ");
waitKey(0);
}
catch(runtime_error&ex){
fprintf(stderr、"画像をPNG形式に変換するときにエラーが発生しました:%s \ n "、ex。 what());
return 1;
}
0を返します。
}