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坐标并将其存储到不同的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50500429/