Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Magick中以灰度格式写入图像++_C++_Image Processing_Imagemagick_Magick++ - Fatal编程技术网

C++ 如何在Magick中以灰度格式写入图像++

C++ 如何在Magick中以灰度格式写入图像++,c++,image-processing,imagemagick,magick++,C++,Image Processing,Imagemagick,Magick++,如何以灰度格式保存Magick::图像?我正在使用ImageMagick对图像进行解码,并将结果写入OpenCV矩阵。我现在做的是读取彩色图像,然后通过OpenCV将其转换为灰度: 我想在cv::Mat中写入灰度图像,而不使用中间色图像。这应该是非常简单的,但无法从文档中找到它,并将感谢任何帮助 另外,我想知道如何检测图像是否包含alpha通道?要将图像设置为灰度,只需在将图像块写入cv之前调用Magick::image.type Magick::ImageType Magick::Image

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

我想在cv::Mat中写入灰度图像,而不使用中间色图像。这应该是非常简单的,但无法从文档中找到它,并将感谢任何帮助


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

要将图像设置为灰度,只需在将图像块写入cv之前调用Magick::image.type Magick::ImageType

Magick::Image imagetest.png; image.type Magick::GrayscaleType; image.write0,0,image.columns,image.rows,BGR,Magick::CharPixel,mat.data; 要检测图像是否透明,只需检查Magick::image.matte是否返回true

Magick::Image imagetest.png;
std::cout要将图像设置为灰度,只需在将图像blob写入cv之前调用Magick::image.type Magick::ImageType

Magick::Image imagetest.png; image.type Magick::GrayscaleType; image.write0,0,image.columns,image.rows,BGR,Magick::CharPixel,mat.data; 要检测图像是否透明,只需检查Magick::image.matte是否返回true

Magick::Image imagetest.png;
std::难道你还在以BGR格式写入3通道矩阵吗。我的目标是获得单通道灰度矩阵。可能吗?您应该使用cv::Mat matimage.rows、image.columns、cv_8UC1;并指定R而不是BGR。@dlemstra是正确的。只需在切换到GrayscaleType后删除BG即可。你可以通过将图像分离到CMYK,只写入K通道来进行更精细的处理,但这太过分了。你仍然在以BGR格式写入3通道矩阵。我的目标是获得单通道灰度矩阵。可能吗?您应该使用cv::Mat matimage.rows、image.columns、cv_8UC1;并指定R而不是BGR。@dlemstra是正确的。只需在切换到GrayscaleType后删除BG即可。您可以通过将图像分离到CMYK并只写入K通道来进行更精细的处理,但这太过分了。
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);