gpt4 book ai didi

opencv - JavaCV:如何在二值图像中找到重要点

转载 作者:太空宇宙 更新时间:2023-11-03 22:34:46 25 4
gpt4 key购买 nike

我在使用 JavaCV 实现的这个项目中遇到了问题。我想至少找到二值图像中最顶部、最底部、最左侧和最右侧的点:

Happy Mouth Binary image

我这里指的点是 (x,y) 坐标。我已经尝试实现 HoughLines(它只检测直线而不检测曲线)和 cvFindContours,但我无法正确提取坐标。我还是个新手,如果我知道白线和背景的值(value)是多少,也许我可以绕着图像转一圈。

有没有更简单的出路?非常感谢您的帮助。

最佳答案

您可以在此处使用循环来查找最左、最右、最上和最下点。但是,您需要考虑如何制作智能循环。您可以循环遍历所有像素,但您也可以使用更智能的方法。例如,最左边的点可能在左边的某个地方。所以如果你使用从左到右的扫描线,你可能比只扫描顶部->底部更有可能找到这个像素。也就是说,从图像中获取值非常容易。

假设我们有一张图片 binaryImgn 个 channel 。在灰度图像的情况下 n 应该是 1,但在彩色图像的情况下 n 应该是 3。假设我们有索引 0 <= y < height , 0 <= x < width0 <= k < n .我们可以得到一个pixel(x, y)的值如下:

((uchar *)(binaryImg->imageData + y*binaryImg->widthStep))[x*binaryImg->nChannels + k]

由于灰度图像只有一个 channel ,我们可以使用以下方法检查像素是否为白色:

((uchar *)(binaryImg->imageData + y*binaryImg->widthStep))[x] == 255

就速度而言,此解决方案的最坏情况时间为 O(n),但实际上您不必查看所有像素。

关于opencv - JavaCV:如何在二值图像中找到重要点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10202094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com