zl程序教程

您现在的位置是:首页 >  其他

当前栏目

opencv之绘制透明图

2023-04-22 11:02:20 时间
void createAlpaMat(Mat &mat)
{
    for(int i=0;i<mat.rows;i++)
    {
        for(int j=0;j<mat.cols;j++)
        {
            Vec4b &rgba=mat.at<Vec4b>(i,j);
            rgba[0]=UCHAR_MAX;
            rgba[1]=saturate_cast<uchar>((float(mat.cols-1))/((float)mat.cols)*UCHAR_MAX);
            rgba[2]=saturate_cast<uchar>((float(mat.rows-1))/((float)mat.rows)*UCHAR_MAX);
            rgba[3]=saturate_cast<uchar>(0.5*(rgba[1]+rgba[2]));


        }
    }
}

Mat mat(480,640,CV_8UC4);
    createAlpaMat(mat);
    vector<int>compression_param;
    compression_param.push_back(IMWRITE_PNG_COMPRESSION);
    compression_param.push_back(9);
    try {
       imwrite("res.png",mat,compression_param);
    } catch (...) {
        cout<<"write error"<<endl;
    }