前言
以前制作智能车都是在STM32上制作的,学习了一点OpenCV想要实践一下,一下就想到了买来一直在吃灰的树莓派,做一个智能小车吧!
黑线识别
我们先在Windows上写出基本能跑的检测代码:
首先我先用画图绘制了一张理想的跑道图片
在读取并且进行二值化后:
img = cv2.imread('sd0.png')#读取图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#转为灰度图
retval, dst = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)# 大津法二值化
理想情况真的很理想~(笑哭哈哈)
我们先检测一条线上的情况,为了小车能够更早的检测到偏移并且做出反应,我们选择靠近图像顶部1/5处的直线作为检测对象(如图黑线):
我们将中心初始化为图像的中心
rows,cols,channels = img.shape#获取图像尺寸
center = int(cols/2)#初始位置中心点处
然后我们在中心的附近进行黑线的寻找,在找到中心黑线后中心黑线的中心点即为新的中心位置!
总体代码如下:
import cv2
impo