无人机实验笔记(识别交点 / 巡线)
由于我们的实验场地并不是一根纯黑线,中间的交线会对识别造成一定的影响,从而导致无人机在交线处飞偏,所以就想识别交点坐标,保证无人机始终在直线上飞行,最后的实验结果也很理想。 识别交线代码是在网上看到的一段代码,后来发现它的算法思路很新奇,且应用过程中发现它的用武之地还蛮多的。 算法思路: 这是一张二值化后的图,对应像素值:白色:255,黑色:0。 我用数值表示为: 这是一张5*7大小的二值图,白色像素值为255,黑色像素值为0,我的目的是要求得(3,4)这个交点坐标。以求X坐标为例,先将每一列的值相加存入数组得到 [255, 255, 1785, 255, 255] ,可以看到出现了一个最大值1785,然后将相邻的列相减(从第二列开始,后一列减去前一列)的值存入另一个数组得到 [0,1530,-1530,0] ,可以看到出现了一个极大值和极小值,而这两个值对应的索引(列号)就是我们需要的值。取得极大值的索引:2; 极小值的索引: 3 。对应二值图可以看到,2就是我们需要求的X坐标的左邻列,3+1 就是X坐标的右邻列。最后求的 X = (2+4)/2 = 3 。同理,Y= (3 +5 )/2 = 4 。 代码: import cv2 import numpy as np import imutils frame = cv2.imread("Cross 2.jpg") frame =