https://blog.csdn.net/litdaguang/article/details/45438297
在OpenCV里,正常是读取图像和写入图像默认都是忽略透明通道的,如果想要读取原图像中的透明通道,则在使用imread()
函数时,后面的参数要使用CV_LOAD_IMAGE_UNCHANGED
参数.
int main()
{
Mat src = imread("C:\\透明.png", CV_LOAD_IMAGE_UNCHANGED);
circle(src, Point(src.cols / 2, src.rows / 2), 100, Scalar(0, 255, 0));
vector<int>compression_params;
compression_params.push_back(IMWRITE_PNG_COMPRESSION);
compression_params.push_back(9); // 最佳质量
imshow("src", src);
imwrite("C:\\透明1.png", src, compression_params);
waitKey(0);
return 0;
}