OpenCV Python激光点跟踪提取x和y坐标并将其存储到不同的变量

时间:2018-05-24 03:22:02

标签: python opencv opencv3.0

enter image description here我这里有一个跟踪激光点的代码。我想要的是获取激光点的x和y坐标并将其存储到单独的变量中。这是代码:

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

while (1):

    # Take each frame
    ret, frame = cap.read()
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    lower_red = np.array([0, 0, 255])
    upper_red = np.array([255, 255, 255])
    mask = cv2.inRange(hsv, lower_red, upper_red)
    cv2.imshow('mask', mask)
    cv2.imshow('Track Laser', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

1 个答案:

答案 0 :(得分:0)

对于多点或噪声较大的数据,您可能需要考虑聚类算法。

但是,您附加的图像非常清晰。您需要做的就是找到它的中心。这对应于第一个几何矩(aka mean):

moments = cv2.moments(hsv[:, :, 2])
x = int(moments['m10'] / moments['m00'])
y = int(moments['m01'] / moments['m00'])

如果没有影响分布的异常值(例如噪音或其他圆圈),我们可以相当准确地找到中心。

enter image description here

也许更强大的方法(噪音和圈数)会使用Hough圈。