c++ opencv4.x转换png到有背景的jpg
cv::Mat im_src = cv::imread("test.png", cv::IMREAD_UNCHANGED);
cv::Mat img_tmp = cv::Mat(im_src.size(), im_src.type(), cv::Scalar(255, 255, 255));
{
//方法一
cv::Mat mask;
cv::inRange(im_src, cv::Scalar(0, 0, 0, 255), cv::Scalar(255, 255, 255, 255), mask);
im_src.copyTo(img_tmp, mask);
}
{
//方法二
std::vector<cv::Mat> chs_1;
split(im_src, chs_1);
im_src.copyTo(img_tmp, chs_1[3]);
}
cv::imwrite("tmp.jpg", img_tmp);
如果需要内存操作,可如下操作:
std::vector<uchar> out;
cv::Mat im_dst;
cv::imencode(".jpg", img_tmp, out);
cv::imdecode(out, cv::IMREAD_UNCHANGED, &im_dst);