1
我有一张图片和一列点(聚合物)给出的选择。我的目标是获得另一个图像,除了选择之外的所有内容都是透明的。如何使用opencv使用点列表来剪切图片
这个问题有两个部分: *如何从点列表中创建掩码? *使用遮罩创建新图像的最佳方式是什么?我正在考虑cvCopy,但我如何处理alpha通道?
我有一张图片和一列点(聚合物)给出的选择。我的目标是获得另一个图像,除了选择之外的所有内容都是透明的。如何使用opencv使用点列表来剪切图片
这个问题有两个部分: *如何从点列表中创建掩码? *使用遮罩创建新图像的最佳方式是什么?我正在考虑cvCopy,但我如何处理alpha通道?
我有一个呈三角问题,我解决它在一个陌生的(不是非常快)的方式:(使用extractChannel
)图像的
bitwise_and
操作之间的每个渠道和poygon蒙版图像。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);
}
您可以使用/fillConvexPoly
功能polyMat
面膜(取决于你的多边形)。例如:
Mat polyMat = Mat::zeros(size, CV_8UC1);
fillConvexPoly(polyMat, polygon, Scalar(255));