如何计算OpenCV中连续非零值之间的零像素?

时间:2015-02-09 09:00:53

标签: c++ image opencv image-processing

在灰度图像中,我使用OpenCV中的这行代码获得了非零像素坐标:

cv::Mat nonZeroCoordinates;
cv::findNonZero(image, nonZeroCoordinates);

现在,我想计算image中两个连续非零元素之间的零像素。但是我应该首先通过列或行吗?例如,如果我在40x40垫子中的点(30,20)和(30,23)处具有非零像素,并且在列中移动,则在它们之间给出2个零像素,并且通过行移动给出了我(39-30) )+ 40 + 40 + 29 = 118像素。我应该通过哪种方式正确计算这些像素?有没有更好的方法,然后只是嵌套循环为此目的?谢谢。

1 个答案:

答案 0 :(得分:1)

我认为你应该在端点上放一条线并计算它下面的零像素。 OpenCV有一个LineIterator类,您可以从(30,20)到(30,23)建立一个8连接或4连接的线,并检查值。