0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于树莓派设计的道路车道检测系统

科技观察员 来源:abhinav 作者:abhinav 2022-03-31 10:41 次阅读

道路车道检测系统:
自动驾驶汽车是现代世界的新趋势之一。他们使用非常复杂的控制系统和工程技术来操纵车辆。道路车道检测是车辆导航中的重要内容之一。在这里,我描述了一个使用 Raspberry pi 3 和计算机视觉技术的简单快速的车道检测。为了快速计算,我只是避免使用线性回归方法。这种方法在低噪声环境下效果很好,但对于复杂的场景,需要先进的统计和图像处理技术。

硬件设置:
将相机与您的 Pi 连接

pYYBAGJFFK6AZgaxAAIqyqFmCEc342.png

摄像头配置:

按照此链接进行相机设置https://www.raspberrypi.org/documentation/configuration/camera.md

软件设置:

python 安装 OpenCV。按照这些说明安装 OpenCV。这些说明是从https://raspberrypi.stackexchange.com复制的。

通用:

sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
sudo reboot
sudo apt-get install build-essential git cmake pkg-config
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install libatlas-base-dev gfortran
cd ~
git clone
cd opencv
git checkout 3.1.0
cd ~
git clone
cd opencv_contrib
git checkout 3.1.0

如果您想将 OpenCV 与 python 2.7 一起使用:

sudo apt-get install python2.7-dev
wget
sudo python
pip install numpy
cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..
make -j4
sudo make install
sudo ldconfig

如果您想在 Python 3 中使用 OpenCV:

sudo apt-get install python3-dev
wget
sudo python3
pip install numpy
cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..
make -j4
sudo make install
sudo ldconfig

将以上配置完成大约需要 2 个小时。在此期间,我们可以了解一下 Hough-Transform,这项技术是大多数实用车道检测算法背后的关键。

Python代码:

from picamera.array import PiRGBArray
import RPi.GPIO as GPIO
from picamera import PiCamera
import time
import cv2
import numpy as np
import math
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
GPIO.setup(8, GPIO.OUT)
theta=0
minLineLength = 5
maxLineGap = 10
camera = PiCamera()
camera.resolution = (640, 480)
camera.framerate = 30
rawCapture = PiRGBArray(camera, size=(640, 480))
time.sleep(0.1)
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
image = frame.array
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
edged = cv2.Canny(blurred, 85, 85)
lines = cv2.HoughLinesP(edged,1,np.pi/180,10,minLineLength,maxLineGap)
if(lines !=None):
for x in range(0, len(lines)):
for x1,y1,x2,y2 in lines[x]:
cv2.line(image,(x1,y1),(x2,y2),(0,255,0),2)
theta=theta+math.atan2((y2-y1),(x2-x1))
#print(theta)GPIO pins were connected to arduino for servo steering control
threshold=6
if(theta>threshold):
GPIO.output(7,True)
GPIO.output(8,False)
print("left")
if(theta<-threshold):
GPIO.output(8,True)
GPIO.output(7,False)
print("right")
if(abs(theta) GPIO.output(8,False)
GPIO.output(7,False)
print "straight"
theta=0
cv2.imshow("Frame",image)
key = cv2.waitKey(1) & 0xFF
rawCapture.truncate(0)
if key == ord("q"):
break):

示例输出结果:

poYBAGJFFLaAXmKnAALa_TuPj7M511.pngpoYBAGJFFLyAJXS9AALQwXurhb8734.pngpoYBAGJFFMOAD4NpAAKGtHhLwCA958.pngpYYBAGJFFMmAS10bAASw9v_kubM454.png

GPIO 引脚连接到 Arduino mega 用于伺服电机控制。

#include
Servo myservo;
void setup() {
myservo.attach(10);//attach servo motor PWM(orange) wire to pin 10
pinMode(0, INPUT);//attach GPIO 7&8 pins to arduino pin 0&1
pinMode(1,INPUT);
void loop() {
if(digitalRead(0)==HIGH && digitalRead(1)==LOW)
{
myservo.write(118);
}
if(digitalRead(1)==HIGH && digitalRead(0)==LOW)
{
myservo.write(62);
}
if(digitalRead(1)==LOW && digitalRead(0)==LOW)
{
myservo.write(90);
}
}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 自动驾驶汽车

    关注

    4

    文章

    375

    浏览量

    40736
  • 树莓派
    +关注

    关注

    114

    文章

    1656

    浏览量

    104952
收藏 人收藏

    评论

    相关推荐

    基于树莓设计的RFID门禁系统

    本项目使用树莓设计门禁或设备的访问控制系统系统根据用户列表检查RFID标签,允许拥有授权RFID标签的指定成员进入室内。系统包括一个US
    的头像 发表于 04-01 14:50 6405次阅读
    基于<b class='flag-5'>树莓</b><b class='flag-5'>派</b>设计的RFID门禁<b class='flag-5'>系统</b>

    树莓防占位系统

    设计内容为学校图书馆设计一个防止违规占座系统,实现通过若干条件的判断,来判断当前作为是否被违规占座。功能描述结合树莓,利用压力传感器分别检测桌面和椅面是否有物体(书),再通过人体红外
    发表于 07-21 09:16

    树莓装机教程

    树莓装机教程树莓装机教程树莓装机教程树莓
    发表于 11-25 10:14 52次下载

    树莓设置基本流程(上)

    第一步,在win系统下安装树莓系统到SD卡 第二步,安装和启动树莓 第三步,如何设置
    发表于 11-30 11:03 17次下载

    树莓3wifi配置_树莓3开启wifi热点_树莓3的wifi使用教程

    树莓3在2016年2月29号正式发布了,树莓3几乎和树莓2代板型一致,大外观没什么变化小电
    发表于 12-08 11:47 3.1w次阅读

    树莓3硬件配置_树莓3都能装什么系统_树莓3系统安装教程

    树莓3一直颇受电子发烧友的青睐,这篇文章主要讨论的就是树莓3的硬件配置、树莓3都能装什么
    发表于 12-08 14:36 2.6w次阅读

    树莓3系统安装介绍_Noobs进行树莓3系统安装_Noobs进行树莓3系统恢复

    这篇文章主要和大家一起来讨论一下关于树莓3的系统安装是什么,基于Noobs的树莓3的系统安装
    发表于 12-08 15:02 5790次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>3<b class='flag-5'>系统</b>安装介绍_Noobs进行<b class='flag-5'>树莓</b><b class='flag-5'>派</b>3<b class='flag-5'>系统</b>安装_Noobs进行<b class='flag-5'>树莓</b><b class='flag-5'>派</b>3<b class='flag-5'>系统</b>恢复

    树莓3系统配置详解_树莓3如何配置config.txt文件_树莓3如何设置分辨率

    本文主要讲解的就是关于树莓3的系统配置,树莓3如何配置config.txt文件以及如何设置树莓
    发表于 12-08 15:32 1.4w次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>3<b class='flag-5'>系统</b>配置详解_<b class='flag-5'>树莓</b><b class='flag-5'>派</b>3如何配置config.txt文件_<b class='flag-5'>树莓</b><b class='flag-5'>派</b>3如何设置分辨率

    树莓安装系统_树莓系统安装教程

     树莓是尺寸仅有信用卡大小的一个小型电脑,您可以将树莓连接电视、显示器、键盘鼠标等设备使用。树莓
    发表于 01-15 18:13 1.3w次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>安装<b class='flag-5'>系统</b>_<b class='flag-5'>树莓</b>派<b class='flag-5'>系统</b>安装教程

    树莓入门教程之新手使用树莓系统的教程资料说明

    本文档的主要内容详细介绍的是树莓入门教程之新手使用树莓系统的教程资料说明免费下载。
    发表于 03-22 08:00 10次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>入门教程之新手使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>做<b class='flag-5'>系统</b>的教程资料说明

    树莓是什么树莓的简单介绍

    要想玩转树莓,首先得知道树莓是什么。在本节中,作者将带领大家揭开树莓的神秘面纱,了解
    发表于 05-15 18:09 30次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>是什么<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的简单介绍

    树莓树莓4B新手篇:安装官网Raspbian Buster系统及基础配置

    目录1、前言2、树莓4B有什么特色?3、树莓新手准备4、烧录Raspbian Buster系统到Micro SD卡开启SSH及配置无线连
    发表于 11-06 18:21 26次下载
    【<b class='flag-5'>树莓</b><b class='flag-5'>派</b>】<b class='flag-5'>树莓</b><b class='flag-5'>派</b>4B新手篇:安装官网Raspbian Buster<b class='flag-5'>系统</b>及基础配置

    树莓操作系统更新了哪些功能呢?

    市面上很多的linux发行版都为树莓提供了镜像文件,但是树莓基金会依然提供了属于树莓自己的
    发表于 09-15 16:40 716次阅读

    距离检测报警使用树莓Pico

    电子发烧友网站提供《距离检测报警使用树莓Pico.zip》资料免费下载
    发表于 11-09 11:49 0次下载
    距离<b class='flag-5'>检测</b>报警使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>Pico

    基于树莓的环境监测系统

    树莓(Raspberry Pi)是一种小型而功能强大的计算机,其性能和功能足以支持许多应用领域。在环境监测系统中,树莓也被广泛应用。本文
    的头像 发表于 01-04 15:15 763次阅读