使用 cv::imread
我能够将 RGB 图像读取到 cv::Mat
(如下所示)
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 picture
和 Mat pic
是否相等?
因为 cv::imread
有一个 '-1' 标志,表示 'Return the loaded image as is (with alpha channel)' .我无法理解的内容以及如何将“图片”与“图片”匹配?(不是图片到图片)
最佳答案
-1 cv::imread 中的标志表示图像将被加载,因为它包括 alpha channel (如果存在)。所以,如果你的图像文件有 alpha channel ,你的 picture(Mat) 将是一个 CV_8UC4 类型的图像,而你的 pic(Mat) 是一个 3 channel 图像。因此,在某些情况下它们不会相同。但是如果你的图片(垫子)只有 3 个 channel ,并且它的 B、G、R channel 分别与 data1、data2、data3 具有相同的数据,那么你的 'picture' 和 'pic' 将是相同的。
关于c++ - 将 alpha channel 添加到 opencv Mat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36370998/