我必须找到Siemens star的中心。(西门子star是摄像机校准中使用的标准图像。)
对人类来说非常简单,但我不知道该使用哪种(最好是OpenCV)方法。我用的是Python。在
我试过用边缘检测,我想我可以得到边缘轮廓,然后做一些直线方程,然后看看这些线在哪里相交。但是我得到一些凌乱的线条,边缘杂乱无章,而且轮廓线都是不相交的(或者我不理解它们……)。以下是使用此代码找到的轮廓:
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()
不管怎样,有什么诀窍来解决这个问题吗?假设我是n00b。。在
这就是我最后要做的。它并不完全健壮,但现在可能已经足够好了。只需计算列数和行数之和,就可以得到峰值或下降值——在某个猜测位置附近找到最大值或最小值,即为中心。在
不幸的是,有些少数人的情况下这样做行不通。当恒星旋转时,中心的最小值或最大值会从最小值疯狂地翻转到最大值。在这个翻转的中间,它既不是一个最小值,也不是一个最大值,因为它是围绕图像的猜测中心的有限距离。如果您有任何建议,请随时提供更好的建议。。。在
相关问题 更多 >
编程相关推荐