gpt4 book ai didi

python - 使用 OpenCV (Python) 查找曲线坐标

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

我正在尝试在 Python 中使用 OpenCV 提取图像中曲线的坐标。但是,我需要在列表中对这些坐标进行排序,以便该列表的第一个元素是曲线的一个末端,第二个是该末端旁边的点,等等,直到最后一个元素是另一个末端。

假设我有一张字母“C”的图像,用 openCV 作为以下 numpy 数组导入:

 arr=
[0,0,0,0,0,0,0
0,0,1,1,1,0,0
0,0,1,0,0,0,0
0,0,1,0,0,0,0
0,0,1,1,1,0,0
0,0,0,0,0,0,0]

然后我想要一个按以下顺序返回像素坐标的列表:

 arr=
[0,0,0,0,0,0,0
0,0,3,2,1,0,0
0,0,4,0,0,0,0
0,0,5,0,0,0,0
0,0,6,7,8,0,0
0,0,0,0,0,0,0]

即一个列表(数组中像素“1”的坐标,像素“2”的坐标等)。

这种“连续性”的想法在 findContours() 中有点存在,但它对于找到这样一个 1 像素宽的对象的轮廓效果不是很好。许多像素在生成的轮廓中出现两次(问题不大),但它也可能不会从一个末端开始,并按如下顺序产生点坐标

 arr=
[0,0,0,0,0,0,0
0,0,1,7,8,0,0
0,0,2,0,0,0,0
0,0,3,0,0,0,0
0,0,4,5,6,0,0
0,0,0,0,0,0,0]

这是因为算法基本上是从 1 到 6 而不是回到 1,继续到 8 然后回到 1 以产生“轮廓”。我还尝试了简单的阈值处理+ numpy.nonzero,它当然不会按照我的意愿对它们进行排序,它会按顺序产生

 arr=
[0,0,0,0,0,0,0
0,0,1,2,3,0,0
0,0,4,0,0,0,0
0,0,5,0,0,0,0
0,0,6,7,8,0,0
0,0,0,0,0,0,0]

我错过了什么大事吗?我不是 Python 或图像处理的新手,但我刚刚开始使用 OpenCV。

最佳答案

我不知道一个好的 opencv 实现,但你可以使用 Moore-Neighbor Tracing并将其修改为这样我们将把您在边界中找到的点的值设置为增量值。

关于python - 使用 OpenCV (Python) 查找曲线坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40511746/

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