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