2016-04-02 18 views
0

opencv için alfa kanalı ekleyin cv::imread Ben Yerine okumakullanma Mat

Mat picture = imread(fileName, -1); 

(aşağıda), aşağıdaki kodu kullanarak bir RGB görüntüyü oluşturmaya çalıştık cv::Mat RGB görüntüyü okuyarak başardı:

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 picture ve Mat pic eşit mi olacak? cv::imread'un 'Return the loaded image as is (with alpha channel)' olduğunu belirten '-1' bayrağı vardır. Hangi anlayamıyorum ve 'resim' için 'resim' ile eşleştirmeyi nasıl yaparım? (Resim değil resim) (Resim değil resim)

cevap

1

-1 cv biçiminde etiket = imread, görüntünün alfa dahil olduğu gibi yükleneceğini gösterir Varsa kanal. Dolayısıyla, resim dosyanızın alfa kanalı varsa, resminiz (Mat) bir CV_8UC4 tipi olurken, resminiz (Mat) 3 kanallı bir görüntüdür. Bu nedenle, bazı durumlarda aynı olmayacaklar. Ancak resminiz (Mat) sadece 3 kanala sahipse ve B, G, R kanalları sırasıyla data1, data2, data3 ile aynı verilere sahipse, o zaman 'resminiz' ve 'pic'ınız aynı olacaktır.