2016-04-02 5 views
0

をOpenCVのためにアルファチャンネルを追加cv::imread Iは代わり読み出し使用してマット

Mat picture = imread(fileName, -1); 

(下記のように)、私は、次のコードを使用して、RGB画像を作成しようcv::MatにRGB画像を読み取るすることができた:

Mat arr1 = Mat(9, 9, CV_8UC1, &data1); 
Mat arr2 = Mat(9, 9, CV_8UC1, &data2); 
Mat arr3 = Mat(9, 9, CV_8UC1, &data3); 
Mat pic; 
vector<Mat> mk(3); 
mk.at(0)=(arr1); 
mk.at(1)=(arr2); 
mk.at(2)=(arr3); 
merge(mk,pic); 

Mat pictureMat picは等しくなりますか? cv::imreadは、フラグが「-1」であり、'Return the loaded image as is (with alpha channel)'を示します。私は理解できませんし、どうやって 'ピクチャ'と 'ピクチャ'をマッチングさせるのですか?(ピクチャには画像ではありません)

答えて

1

-1フラグはcv :: imreadでアルファチャンネルがある場合したがって、画像ファイルにアルファチャンネルがある場合、画像(Mat)はCV_8UC4タイプの画像になり、写真(Mat)は3チャンネル画像になります。したがって、場合によっては同じではありません。しかし、あなたの写真(マット)が3チャンネルしかなく、そのB、G、Rチャンネルがそれぞれdata1、data2、data3と同じデータを持っていれば、あなたの 'picture'と 'pic'は同じになります。

関連する問題