这是我发表的第一篇文章,在学习前人和师兄的基础上完成的。
硬件:双目相机
因为是水下机器人拍的,借用了树莓派作为图像处理的平台
效果图:
实现思路:视差-距离-长度
图像前期处理:HSV阈值切割进行边缘检测,然后通过视差获取图像形心到机器人的距离,再根据三角形相似比得到最终鱼长。
1、图像前期处理:
# 图像前期处理
def color_filter(img, Lower, Upper, k_e, k_d): # k_e为腐蚀处理的卷积核,k_d为膨胀处理的卷积核
HSV_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
if Lower[0] > Upper[0]:
mask1 = cv2.inRange(HSV_img, Lower, 180)
mask2 = cv2.inRange(HSV_img, 0, Upper)
mask = cv2.bitwise_and(mask1, mask2)
else:
mask = cv2.inRange(HSV_img, Lower, Upper)
kernel_e = np.ones((k_e, k_e), np.uint8) # 卷积核设置
erosion = cv2.erode(mask, kernel_e, iterations=3) # 腐蚀处理
kernel_d = np.ones((k_d, k_d),