c++ opencv4.x转换png为jpg(有背景)

xingyun86 2021-1-30 1460

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);


×
打赏作者
最新回复 (0)
只看楼主
全部楼主
返回