【发布时间】:2015-02-09 17:25:40
【问题描述】:
从灰度图像中,我在 OpenCV 中使用这行代码获得了它的非零像素坐标:
cv::Mat nonZeroCoordinates;
cv::findNonZero(image, nonZeroCoordinates);
现在,我想计算image 中两个连续非零元素之间的零像素。但是我应该先通过列还是行?例如,如果我在 40x40 的垫子中的点 (30, 20) 和 (30, 23) 处有非零像素,并且在列之间移动给我 2 个零像素,在行中移动给我 (39-30 ) + 40 + 40 + 29 = 118 像素。我应该通过哪种方式正确计算这些像素?有没有更好的方法,然后只是为此目的的嵌套循环?谢谢你。
【问题讨论】:
-
我不确定你的意思是第二点是 (30,23) 我可能是错的
-
取决于您对“连续非零像素之间的像素数”的定义...您想对该值做什么,或者该值的含义是什么?...更高效的是先在单行内计数(因为 Mat 内存布局的缓存)
标签: c++ image opencv image-processing