gpt4 book ai didi

c++ - 使用 C++ 和 OpenCV 从蒙版和输入图像创建透明 PNG 图像

转载 作者:太空宇宙 更新时间:2023-11-03 22:44:55 24 4
gpt4 key购买 nike

我正在尝试使用以下代码生成透明 PNG:我的原始图像是“框架”:

                        cv::Mat mask = cv::Mat::zeros(frame.size(), CV_8U);
cv::drawContours(mask, std::vector<std::vector<cv::Point>>{ maxAreaContour }, -1, cv::Scalar(255), CV_FILLED);
cv::Mat bframe = cv::Mat::zeros(frame.size(),CV_8UC4);
bframe=cv::Scalar(255,255,255,0);
frame.copyTo(bframe, mask);
cv::namedWindow("frg", 0);
cv::imshow("frg", bframe);
cv::namedWindow("mask", 0);
cv::imshow("mask", mask);

Original Image

mask

由于某些原因,我无法保存具有透明背景的原始图像,当显示为“bframe”图像输出时,我一直得到黑色背景有什么想法我在这里遗漏了什么吗?

最佳答案

cv::imshow 去除了 alpha channel ,因此您需要在显示之前混合图像。(即选择颜色或纹理来表示背景像素并将其与您的图像合并)

但如果只需要保存,就保存为.png即可;顺便说一句,您可以将 PNG 的压缩参数设置为:

    vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
compression_params.push_back(9); //Compression level

try {
imwrite("bframe.png", bframe, compression_params);
}
catch (runtime_error& ex) {
fprintf(stderr, "Exception converting image to PNG format: %s\n", ex.what());
return 1;
}

引用: https://docs.opencv.org/3.0-beta/modules/imgcodecs/doc/reading_and_writing_images.html

关于c++ - 使用 C++ 和 OpenCV 从蒙版和输入图像创建透明 PNG 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48927148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com