我有一个图像,以及一个点列表(一个多边形)给出的选择。我的目标是获得另一个图像,其中除选择之外的所有内容都是透明的。
这个问题分为两部分: *如何从点列表中创建蒙版? *使用蒙版创建新图像的最佳方法是什么?我在考虑使用cvCopy但是如何处理alpha通道?
答案 0 :(得分:2)
我有一个类似的问题,我以一种奇怪的(不是很快)的方式解决了它:
extractChannel
)。bitwise_and
操作。merge
函数)。请注意,如果您有单通道图片,则需要执行bitwise_and
。
C ++ 代码:
void createPOI(const Mat& src, const Mat& polyMat, Mat& dst)
{
vector<Mat> array(3);
for (int i=0; i<3; i++)
{
extractChannel(src, array[i], i);
bitwise_and(array[i], polyMat, array[i]);
}
merge(array, dst);
}
您可以使用polyMat
/ fillPoly
函数创建fillConvexPoly
蒙版(取决于您的多边形)。例如:
Mat polyMat = Mat::zeros(size, CV_8UC1);
fillConvexPoly(polyMat, polygon, Scalar(255));