如何以灰度格式保存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通道?
答案 0 :(得分:4)
要将图像设置为灰度,请在将图像blob写入cv之前简单调用Magick::Image.type( Magick::ImageType )
。
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;