To set an image to grayscale, simple call Magick::Image.type( Magick::ImageType )
before writing the image blob to cv.
Magick::Image image("test.png");
image.type( Magick::GrayscaleType );
image.write(0, 0, image.columns(), image.rows(), "BGR", Magick::CharPixel, mat.data);
For detecting if an image has transparent, simply check if Magick::Image.matte()
returns true.
Magick::Image image("test.png");
std::cout << "transparent = " << ( image.matte() ? "true" : "false") << std::endl;