巡线代码网络上都有。
下面是计算所取区域的质心与整个图像的中心进行比对 ,然后进行巡线代码,一般来说是通过erro来进行转角,所以考虑到当你左边沿着线走的时候可以把erro修改一个 变成
erro = cx(cx是取的图像的质心) - w/2(w是整个图的中心) - x(x就需要不断调试,可以让小车沿着线段跑/_)个人理解
if ['m00'] > 0:
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])
cv2.circle(image_np, (cx, cy), 10, (0, 0, 255), -1)
print('chencxcy')
print(cx)
print(cy)
# cv2.circle(image, (cx, cy), 10, (255, 0, 255), -1)
#cv2.circle(image, (cx-75, cy), 10, (0, 0, 255), -1)
#cv2.circle(image, (w/2, h), 10, (0, 255, 255), -1)
if cv2.circle:
# 计算图像中心线和目标指示线中心的距离
erro = cx - w/2-15
d_erro=erro-last_erro
self.twist.linear.x = 0.18
if erro!=0:
self.twist.angular.z = -float(erro)*0.005-float(d_erro)*0.000
else :
self.twist.angular.z = 0
last_erro=erro