c++ - 将 alpha channel 添加到 opencv Mat

标签 c++ opencv image-processing

使用 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 pictureMat 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/

相关文章:

c++ - C++ 程序中的奇怪错误

c++ - ros 到 opencv 图像转换器中的 undefined reference 错误

image-processing - 将 STEM 数据立方体乘以图像

c++ - 在 Qt 中为 QOpenGLWidget 设置 OpenGL

c++ - 如何使 AddCallback() 更安全 - 对象中不同事件的函数

opencv - 是否可以在 Raspberry Pi Pico 上运行 OpenCV?

python - 如何调整tesseract以更准确地识别汽车的车牌?

matlab - 人体模特的服装剪裁

c - 如何使用 OpenMP 优化中值滤波器(C)?

具有 Fluent 界面的 C++ Builder 模式