我必须找到Siemens 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..
发布于 2016-06-11 03:54:34
这就是我最终要做的事情。它不是非常健壮,但现在可能已经足够好了。只要取列和列的总和,就会给出一个峰值或一个谷值--在某个猜测位置附近找到最大值或最小值,就会得到中心。
sum_cols, sum_rows = np.sum(img, axis=0), np.sum(img, axis=1)

不幸的是,在一些少数情况下,这是不起作用的。当恒星旋转时,中心的最小或最大值从最小值疯狂地翻转到最大值。在翻转的中间,围绕图像猜测中心的有限距离内,它既不是最小值,也不是最大值。如果你有更好的建议,请随时提出来。
https://stackoverflow.com/questions/37742508
复制相似问题