我有两个 UIImageViews。第一个在背景中并包含图像。第二个是在前景中,它被使用以便用户可以追踪他在背景中看到的一部分。
在用户跟踪该区域后,我希望程序能够用我选择的稍微透明的颜色填充该多边形,以便您可以看到多边形下方的图像。
到目前为止,我已经完成的是显示图像并让用户进行跟踪的能力。我可以使用填充将多边形填充为黑色,但外面的区域是白色的,而不是透明的。这是我所做的:
cv::Mat input = [traceImageView.image CVMat];
cv::Mat output, finalOutput, mask;
cv::Rect rect;
cv::cvtColor(input, output, cv::COLOR_RGB2GRAY);
cv::floodFill(output, cv::Point(0, 0), cv::Scalar(255,0,0,0), &rect, cv::Scalar(0,0,0), cv::Scalar(0,0,0));
traceImageView.image = [UIImage imageWithCVMat:output];
这是输出的样子:
(来源:mulvaandgipple.com)
结果是前面的图像完全覆盖了它后面的图像。我希望多边形外部的白色是透明的。关于如何做到这一点的任何想法?