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()

最佳答案

对于多点或嘈杂的数据,您可能需要考虑聚类算法。

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

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

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

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

也许更健壮的方法(去噪和圈数)将使用霍夫圆。

关于python - OpenCV Python激光点跟踪提取x和y坐标并将其存储到不同的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50500429/

10-10 02:17