如何使用opencv使用点列表剪切图像
我有一个图像和一个由点列表(多边形)给出的选择。我的目标是获得另一个图像,其中除选择之外的所有内容都是透明的 这个问题分为两个部分: *如何从点列表创建遮罩?如何使用opencv使用点列表剪切图像,opencv,Opencv,我有一个图像和一个由点列表(多边形)给出的选择。我的目标是获得另一个图像,其中除选择之外的所有内容都是透明的 这个问题分为两个部分: *如何从点列表创建遮罩? *使用遮罩创建新图像的最佳方法是什么?我在考虑cvCopy,但如何处理alpha通道?我遇到了一个类似的问题,我用一种奇怪(不是很快)的方式解决了它: 提取图像的红色、绿色和蓝色通道(使用extractChannel) 在每个通道和poygon掩模图像之间执行逐位\u和操作 将它们合并回来(使用merge函数) 请注意,如果只有一个通道图
*使用遮罩创建新图像的最佳方法是什么?我在考虑cvCopy,但如何处理alpha通道?我遇到了一个类似的问题,我用一种奇怪(不是很快)的方式解决了它:
extractChannel
)逐位\u和操作
merge
函数)和
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);
}
Mat polyMat = Mat::zeros(size, CV_8UC1);
fillConvexPoly(polyMat, polygon, Scalar(255));