在灰度图像中,我使用OpenCV中的这行代码获得了非零像素坐标:
cv::Mat nonZeroCoordinates;
cv::findNonZero(image, nonZeroCoordinates);
现在,我想计算image
中两个连续非零元素之间的零像素。但是我应该首先通过列或行吗?例如,如果我在40x40垫子中的点(30,20)和(30,23)处具有非零像素,并且在列中移动,则在它们之间给出2个零像素,并且通过行移动给出了我(39-30) )+ 40 + 40 + 29 = 118像素。我应该通过哪种方式正确计算这些像素?有没有更好的方法,然后只是嵌套循环为此目的?谢谢。
答案 0 :(得分:1)
我认为你应该在端点上放一条线并计算它下面的零像素。 OpenCV有一个LineIterator类,您可以从(30,20)到(30,23)建立一个8连接或4连接的线,并检查值。