2016-04-02 48 views
0

使用cv::imread我能夠讀取RGB圖像cv::Mat(如下)添加alpha通道的OpenCV墊

Mat picture = imread(fileName, -1); 

代替讀,我嘗試使用以下代碼來創建的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中的標誌表示圖像將被加載,因爲它包括alpha頻道如果存在。所以,如果你的圖片文件有alpha通道,你的圖片(Mat)將是CV_8UC4類型的圖片,而你的圖片(Mat)是3通道圖片。因此,在某些情況下它們不會相同。但如果你的圖片(Mat)只有3個通道,並且它的B,G,R通道分別具有與data1,data2,data3相同的數據,那麼你的'圖片'和'圖片'將是相同的。