- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
是否有一个选项可以在我想用函数 cv2.HoughCircles
找到一个圆的地方划定 x、y 坐标?
我想在我点击的地方找到圆圈;使用 cv2.setMouseCallback
我保存了鼠标位置,但我不知道我必须将什么传递给 cv2.HoughCircles
。
cv2.HoughCircles
返回具有 [Xposition, Yposition, radius] 的数组。
我想也许我可以使用第一个和第二个参数,但我不知道如何访问它们,因为当我编写 print(circles[0])
时会出现三个值。
当我编写 print(x)
时,返回错误消息 “局部变量 'x' 在赋值之前被引用”。
有什么想法吗?
谢谢!
最佳答案
无法提供坐标作为 cv2.HoughCircles
的输入找到以该位置为中心的圆圈。您可以做的是处理返回的数组并提取包含坐标的圆。
如您所见,circles[0]
的结果给出 x 坐标、y 坐标和半径的所有三个参数。要提取单个参数,您只需指定:
circles[0][0]
将返回 x 坐标;
circles[0][1]
将返回 y 坐标;和
circles[0][2]
将返回半径。
您可以将所有这些存储在 Python 中的一行中:
x, y, r = circles[0]
这实际上与写作相同
x = circles[0][0]
y = circles[0][1]
r = circles[0][2]
然后使用来自 cv2.HoughCircles
的 x 和 y 坐标通过鼠标点击,您可以检查哪些圆圈与想要的结果相匹配。
您可以使用圆的一般中心-半径方程来计算
(x – h)^2 + (y – k)^2 = r^2
中心位于点 (h, k)。
因此如果(x – h)^2 + (y – k)^2 - r^2 > 0
那么点在圆外,如果(x – h)^2 + (y – k)^2 - r^2 < 0
则该点在圆内(如果 (x – h)^2 + (y – k)^2 - r^2 = 0
则该点在圆上)。
关于python - 划定cv2.houghCircles的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52039683/
我是一名优秀的程序员,十分优秀!