gpt4 book ai didi

c++ - 使蒙版区域透明?

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

到目前为止,我已经设法使用蒙版并从第一张图片中获取第二张图片。但我想要的是第二张图片中的黑色区域是透明的(即我试图获得的输出是第三张图片)这是到目前为止的代码。请就此向我提出建议。

编辑:第三个来自 photoshop

    //imwrite parameters
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
compression_params.push_back(100);

//reading image to be masked
image = imread(main_img, -1);

//CV_LOAD_IMAGE_COLOR

namedWindow("output", WINDOW_NORMAL);
//imshow("output", image);

//Creating mask image with same size as original image
Mat mask(image.rows, image.cols, CV_8UC1, Scalar(0));


// Create Polygon from vertices
ROI_Vertices.push_back(Point2f(float(3112),float(58)));
ROI_Vertices.push_back(Point2f(float(3515),float(58)));
ROI_Vertices.push_back(Point2f(float(3515),float(1332)));
ROI_Vertices.push_back(Point2f(float(3112),float(958)));

approxPolyDP(ROI_Vertices, ROI_Poly, 1, true);

// Fill polygon white
fillConvexPoly(mask, &ROI_Poly[0] , ROI_Poly.size(), 255, 8, 0);

//imshow("output", mask);

// Create new image for result storage
imageDest = cvCreateMat(image.rows, image.cols, CV_8UC4);

// Cut out ROI and store it in imageDest
image.copyTo(imageDest, mask);

imwrite("masked.jpeg", imageDest, compression_params);
imshow("output", imageDest);

cvWaitKey(0);

enter image description here

enter image description here

enter image description here

最佳答案

这可以通过首先将要使其完全透明的区域的 alpha 值设置为 0(其他区域为 255),然后将其保存为 PNG 来完成。

要设置pixel-(x,y)的alpha值,可以这样做:

image.at<cv::Vec4b>(y, x)[3] = 0;

PS:如果当前没有图片,需要先转为4 channel 格式。例如:

cv::cvtColor(image, image, CV_BGR2BGRA);

更新:如果您已经计算出 ROI 区域的蒙版,这将更容易,您可以在其中简单地将其与原始图像(假设有 3 个 channel )合并以获得最终结果。喜欢:

cv::Mat mask; // 0 for transparent regions, 255 otherwise (serve as the alpha channel)

std::vector<cv::Mat> channels;
cv::split(image, channels);

channels.push_back(mask);
cv::Mat result;
cv::merge(channels, result);

关于c++ - 使蒙版区域透明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28426406/

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