cv2边缘检测 填充_JetBot AI计算机视觉自动驾驶机器人 -- 车道检测

2b3f0aa0b72c780839d8502f11d17e06.png

通常,汽车道路上都会有白色的分道线,汽车在路上行驶时,必须在车道内行驶,这样才能保持道路秩序;想要自动驾驶,也就需要车道识别,才能让汽车沿着车道行驶。传统的车道识别通过摄像头实时采集道路信息,通过计算机视觉处理,来识别出车道。

具体的做法是,摄像头读入一帧图像,对图像进行畸变校正,变成黑白图片,高斯降噪,然后用二值化边缘检测(canny)或 sobel,分析边缘信息,得到车道信息(角度、是否偏离车道等)。

下面描述 jetbot 下,使用Python 和 OpenCV 做车道检测的具体过程:

  1. 相机校准
  2. 图像采集
  3. 边缘检测
  4. 矩形二维映射
  5. 车道识别与拟合

相机校准

我们知道,摄像头特别是广角摄像头,拍摄的照片通常都会有畸变(桶形畸变、枕形畸变),这样在通过摄像头采集的图片就需要校正,以修正失真。通常的校准方法是通过采集摄像头的棋盘格拍摄图像,然后通过OpenCV进行计算校准。具体算法和原理,大家可以网上搜。

准备图片

258321a44ba308a0bf293e4abd3ad777.png

如上图所示的棋盘格图片,下载后打印到A4纸上,固定贴到墙上或者贴到硬板上,然后按下图的位置,拍摄20张图片,(不同角度、不同位置)

这里代码中提供了独立的摄像头采集图片代码:

python tegra_cam.py --width 320 --height 240 --path cap_imgs

每按一次's'键就会保存一张图片。

b6654dad2d59efd4ddd94c7c62bc843a.png

准备好图片后,就可以运行代码,进行校准了;

python calibrate_camera.py --imgpath cal_imgs --imgfile calibration.jpg

这里假设图片保存在运行代码的cal_imgs目录,图片以calibration1-20.jpg命名。运行后会保存校准参数文件到camera_cal320-240.p中,这里的320 240是之前采集的图片文件的分辨率。

车道检测

图像采集:

c7a97662b5979824d1f1a44ce39ce3cb.png

校正图片:

        image=cv2.imread(image_file)
	height = ima
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值