西门子查找中心

2024-06-16 12:30:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须找到Siemens star的中心。(西门子star是摄像机校准中使用的标准图像。)

对人类来说非常简单,但我不知道该使用哪种(最好是OpenCV)方法。我用的是Python。在

enter image description here

我试过用边缘检测,我想我可以得到边缘轮廓,然后做一些直线方程,然后看看这些线在哪里相交。但是我得到一些凌乱的线条,边缘杂乱无章,而且轮廓线都是不相交的(或者我不理解它们……)。以下是使用此代码找到的轮廓:

from OpenCVX import cvx2

filepath = 'img.jpg'
img = cvx2.imread(filepath, 0)

ret, thresh = cvx2.threshold(img, 127, 255, 0)
im2, contours, hierarchy = cvx2.findContours(thresh, cvx2.RETR_TREE, cvx2.CHAIN_APPROX_SIMPLE)
cvx2.drawContours(img, contours, -1, (255,255,255), 3)

plt.imshow(img)
plt.show()

enter image description here

不管怎样,有什么诀窍来解决这个问题吗?假设我是n00b。。在


Tags: 图像img标准plt中心边缘摄像机轮廓
1条回答
网友
1楼 · 发布于 2024-06-16 12:30:15

这就是我最后要做的。它并不完全健壮,但现在可能已经足够好了。只需计算列数和行数之和,就可以得到峰值或下降值——在某个猜测位置附近找到最大值或最小值,即为中心。在

sum_cols, sum_rows = np.sum(img, axis=0), np.sum(img, axis=1)

enter image description here

不幸的是,有些少数人的情况下这样做行不通。当恒星旋转时,中心的最小值或最大值会从最小值疯狂地翻转到最大值。在这个翻转的中间,它既不是一个最小值,也不是一个最大值,因为它是围绕图像的猜测中心的有限距离。如果您有任何建议,请随时提供更好的建议。。。在

相关问题 更多 >