1

如何保存为Magick::Image灰度格式?我ImageMagick用来解码图像并将结果写入OpenCV矩阵。我现在正在做的是读取彩色图像,然后通过以下方式将其转换为灰度OpenCV

Magick::Image image("test.png");
cv::Mat mat(image.rows(), image.columns(), CV_8UC3);
image.write(0, 0, image.columns(), image.rows(), "BGR", Magick::CharPixel, mat.data);
cv::cvtColor(mat, mat, CV_BGR2GRAY);

我想将图像写入cv::Mat已经是灰度的图像,而不是中间彩色图像。这应该很简单,但无法从文档中找到它,希望能提供任何帮助。

另外我想知道如何检测图像是否包含 alpha 通道?

4

1 回答 1

4

要将图像设置为灰度,Magick::Image.type( Magick::ImageType )在将图像 blob 写入 cv 之前进行简单调用。

Magick::Image image("test.png");
image.type( Magick::GrayscaleType );
image.write(0, 0, image.columns(), image.rows(), "BGR", Magick::CharPixel, mat.data);

要检测图像是否透明,只需检查是否Magick::Image.matte()返回 true。

Magick::Image image("test.png");
std::cout << "transparent = " << ( image.matte() ? "true" : "false") << std::endl;
于 2014-04-30T13:25:23.450 回答