《人工智能导论》大实验(选题三:道路识别综合实践)_第1页
《人工智能导论》大实验(选题三:道路识别综合实践)_第2页
《人工智能导论》大实验(选题三:道路识别综合实践)_第3页
《人工智能导论》大实验(选题三:道路识别综合实践)_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大实验(选题三:道路识别综合实践)一、实验目的1、理解传统道路识别的4个核心模块:预处理→特征提取→几何分析→后处理;2、能够采用传统OpenCV实现道路识别;3、理解百度飞桨(PaddlePaddle)结合OpenCV的道路识别技术方案:“数据驱动+传统优化”的混合架构;4、理解深度学习与传统视觉融合的应用方法;5、能够采用百度飞桨(PaddlePaddle)结合OpenCV实现道路识别。二、实验内容任务一:使用传统OpenCV实现道路识别1.实验环境安装。(1)安装Python。(2)安装库。pipinstallopencv-pythonnumpy2.配置开发环境(1)若使用PyCharm:创建新项目时选择已安装的Python解释器。(2)若使用命令行:无需额外配置,确保Python已添加到系统环境变量。3.使用OpenCV库实现结构化道路环境的道路识别。具体步骤和参考代码如下:#(1)图像采集与预处理importcv2importnumpyasnp#视频源设置cap=cv2.VideoCapture('road.mp4')width,height=640,480#建议分辨率whilecap.isOpened():ret,frame=cap.read()ifnotret:break#尺寸归一化frame=cv2.resize(frame,(width,height))#光照补偿(CLAHE)lab=cv2.cvtColor(frame,cv2.COLOR_BGR2LAB)l,a,b=cv2.split(lab)clahe=cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))limg=clahe.apply(l)enhanced=cv2.merge((limg,a,b))rgb=cv2.cvtColor(enhanced,cv2.COLOR_LAB2BGR)#(2)道路特征提取#车道线特征增强gray=cv2.cvtColor(rgb,cv2.COLOR_BGR2GRAY)blur=cv2.GaussianBlur(gray,(5,5),0)#边缘检测(参数需调优)edges=cv2.Canny(blur,50,150,apertureSize=3)#色彩阈值分割(沥青路面)hsv=cv2.cvtColor(rgb,cv2.COLOR_BGR2HSV)lower_asphalt=np.array([90,50,50])upper_asphalt=np.array([120,255,255])mask=cv2.inRange(hsv,lower_asphalt,upper_asphalt)#(3)几何分析与车道检测#透视变换(示例坐标需校准)src_pts=np.float32([[width*0.45,height*0.65],[width*0.55,height*0.65],[width*0.9,height*0.9],[width*0.1,height*0.9]])dst_pts=np.float32([[0,0],[width,0],[width,height],[0,height]])M=cv2.getPerspectiveTransform(src_pts,dst_pts)warped=cv2.warpPerspective(edges,M,(width,height))#霍夫变换检测直线lines=cv2.HoughLinesP(warped,1,np.pi/180,threshold=30,minLineLength=40,maxLineGap=20)#车道线拟合left_lines,right_lines=[],[]forlineinlines:x1,y1,x2,y2=line[0]k=(y2-y1)/(x2-x1+1e-5)ifk<-0.5:left_lines.append(line)elifk>0.5:right_lines.append(line)#(4)后处理与可视化#绘制检测结果line_img=np.zeros_like(frame)forlineinleft_lines+right_lines:cv2.line(line_img,tuple(line[0][:2]),tuple(line[0][2:]),(0,255,0),3)#逆透视变换还原Minv=cv2.getPerspectiveTransform(dst_pts,src_pts)lane_img=cv2.warpPerspective(line_img,Minv,(width,height))result=cv2.addWeighted(frame,0.8,lane_img,1.0,0)#显示处理流程debug=np.hstack([frame,cv2.cvtColor(edges,cv2.COLOR_GRAY2BGR),result])cv2.imshow('Debug',debug)ifcv2.waitKey(1)&0xFF==ord('q'):break任务二:采用百度飞桨结合OpenCV实现道路识别1.实验环境安装(1)安装Python。(2)安装核心库。pipinstallpaddlepaddleopencv-pythonpaddlehub2.配置开发环境(1)若使用PyCharm:创建新项目时选择已安装的Python解释器。(2)若使用命令行:无需额外配置,确保Python已添加到系统环境变量。3.使用百度飞桨(PaddlePaddle)结合OpenCV实现道路识别具体步骤和参考代码如下:#(1)数据预处理(OpenCV)importcv2importnumpyasnpdefpreprocess(frame):#透视变换获取鸟瞰图src_pts=np.float32([[580,460],[700,460],[1040,680],[260,680]])dst_pts=np.float32([[300,0],[950,0],[950,720],[300,720]])M=cv2.getPerspectiveTransform(src_pts,dst_pts)warped=cv2.warpPerspective(frame,M,(1280,720))#自适应光照补偿lab=cv2.cvtColor(warped,cv2.COLOR_BGR2LAB)l,a,b=cv2.split(lab)clahe=cv2.createCLAHE(clipLimit=3.0,tileGridSize=(8,8))limg=clahe.apply(l)processed=cv2.merge((limg,a,b))returncv2.cvtColor(processed,cv2.COLOR_LAB2BGR)#(2)飞桨模型部署pythonimportpaddlehubashub#加载预训练模型model=hub.Module(name='lanesnet')#或自定义模型#frompaddle.vision.modelsimportresnet50#model=resnet50(pretrained=True)defpaddle_inference(img):input_tensor=paddle.to_tensor(img.transpose(2,0,1)[np.newaxis,...])outputs=model(input_tensor)returnoutputs.numpy()#(3)融合处理核心代码cap=cv2.VideoCapture('road.mp4')whilecap.isOpened():ret,frame=cap.read()ifnotret:break#OpenCV预处理processed=preprocess(frame)#飞桨模型推理mask=paddle_inference(processed)#后处理contours,_=cv2.findContours(mask,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)forcntincontours:cv2.polylines(frame,[cnt],True,(0,255

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论