我目前正在尝试检索轮廓边界内存在的所有黑色像素.我对轮廓边界不感兴趣,而是对位于边界内的黑色像素构成实际图像.如果我能得到图像的实际坐标,那将是很棒的.
我已经尝试使用掩码使用copyTo方法,但我相信我没有设置正确的参数.虽然,我也尝试使用Core.fillPoly,它只是用命令中指定的颜色填充整个轮廓区域,并且获取像素信息没有帮助.有人可以指导我吗?我正在使用OpenCV 2.3.1开发Android 2.2.
解决方法:
有一组像素落在轮廓边界内.还有另一组黑色像素.您想要找到这两个集合的交集,即在边界内并且颜色为黑色的像素集合.
要做到这一点,我会:
>将轮廓绘制为填充形状,将白色绘制为黑色(在其自己的图像中),使其成为蒙版.
您可以使用cv :: drawContours或cv :: fillPoly.
>将图像中的黑色像素过滤为另一个蒙版.
您可以将cv :: threshold与THRESH_BINARY_INV一起使用,并将阈值设置为零.
>使用bitwise_and或简单地使用&来查找相交集.运算符如matResult = mat1& MAT2;
结果是与图像大小相同的矩阵,仅对于满足轮廓内的标准和图像中的黑色的像素具有非零值.您可以通过循环此矩阵并测试非零值来获取各个坐标.