范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

强!汽车车道视频检测pythonOpenCV为主实现

  1 说明:
  =====
  1.1 完整版:汽车车道动态视频检测讲解和注释版代码,小白秒懂。
  1.2 python+OpenCV+moviepy+numpy为主的技术要点。
  1.3 代码来源:https://github.com/linghugoogle/CarND-Advanced-Lane-Lines  #虽然感觉也是fork别人的,别忘了给他点个赞star
  1.4 感谢原作者,并对文件进行修改和代码进行删减,注释等操作,便于操作和理解。
  1.5 应用:无人驾驶汽车技术,热门!
  2 效果展示:由于gif≤10MB,所以是节选。
  ================================
  2.1 原视频节选:
  2.2 处理后视频节选:
  3 准备:
  =====
  3.1 环境:python3.8+OpenCV4.2.0+deepin-linux操作系统。
  3.2 文件结构:
  github下载下来
  project_video.mp4 :原始视频,未进行标注
  vedio_out:文件夹为输出被标注的视频(处理后的视频文件夹)
  camera_cal:相机参数标定文件夹。
  4 代码讲解:
  =========
  4.1 line.py代码:# -*- coding: utf-8 -*- #导入模块 import numpy as np  #定义line这个类 class Line():     #初始化参数     def __init__(self):         # was the line detected in the last iteration?         self.detected = False           # x values of the last n fits of the line         self.recent_fitted = [np.array([False])]         #average x values of the fitted line over the last n iterations         self.bestx = None              #polynomial coefficients averaged over the last n iterations         self.best_fit = None           #polynomial coefficients for the most recent fit         self.current_fit = [np.array([False])]           #radius of curvature of the line in some units         self.radius_of_curvature = None          #distance in meters of vehicle center from the line         self.line_base_pos = None          #difference in fit coefficients between last and new fits         self.diffs = np.array([0,0,0], dtype="float")          #x values for detected line pixels         self.allx = None           #y values for detected line pixels         self.ally = None          #检测侦测     def check_detected(self):         if (self.diffs[0] < 0.01 and self.diffs[1] < 10.0 and self.diffs[2] < 1000.) and len(self.recent_fitted) > 0:             return True         else:             return False          #更新     def update(self,fit):         if fit is not None:             if self.best_fit is not None:                 self.diffs = abs(fit - self.best_fit)                 if self.check_detected():                     self.detected =True                     if len(self.recent_fitted)>10:                         self.recent_fitted = self.recent_fitted[1:]                         self.recent_fitted.append(fit)                     else:                         self.recent_fitted.append(fit)                     self.best_fit = np.average(self.recent_fitted, axis=0)                     self.current_fit = fit                 else:                     self.detected = False             else:                 self.best_fit = fit                 self.current_fit = fit                 self.detected=True                 self.recent_fitted.append(fit)
  4.2 utils.py代码省略。
  4.3 main-pipeline.py(就是代码为:pipeline.py)# -*- coding: utf-8 -*-  #第1步:导入模块 import os import cv2 import matplotlib.pyplot as plt import numpy as np from moviepy.editor import VideoFileClip  import line  #自定义模块 import utils #自定义模块  #第2步:图片阈值处理 def thresholding(img):     #setting all sorts of thresholds     x_thresh = utils.abs_sobel_thresh(img, orient="x", thresh_min=10 ,thresh_max=230)     mag_thresh = utils.mag_thresh(img, sobel_kernel=3, mag_thresh=(30, 150))     dir_thresh = utils.dir_threshold(img, sobel_kernel=3, thresh=(0.7, 1.3))     hls_thresh = utils.hls_select(img, thresh=(180, 255))     lab_thresh = utils.lab_select(img, thresh=(155, 200))     luv_thresh = utils.luv_select(img, thresh=(225, 255))      #Thresholding combination     threshholded = np.zeros_like(x_thresh)     threshholded[((x_thresh == 1) & (mag_thresh == 1)) | ((dir_thresh == 1) & (hls_thresh == 1)) | (lab_thresh == 1) | (luv_thresh == 1)] = 1      return threshholded  #第3步:视频拟合和图片纠正 def processing(img,object_points,img_points,M,Minv,left_line,right_line):     #camera calibration, image distortion correction     undist = utils.cal_undistort(img,object_points,img_points)     #get the thresholded binary image     thresholded = thresholding(undist)     #perform perspective  transform     thresholded_wraped = cv2.warpPerspective(thresholded, M, img.shape[1::-1], flags=cv2.INTER_LINEAR)      #perform detection     if left_line.detected and right_line.detected:         left_fit, right_fit, left_lane_inds, right_lane_inds = utils.find_line_by_previous(thresholded_wraped,left_line.current_fit,right_line.current_fit)     else:         left_fit, right_fit, left_lane_inds, right_lane_inds = utils.find_line(thresholded_wraped)     left_line.update(left_fit)     right_line.update(right_fit)      #draw the detected laneline and the information     area_img = utils.draw_area(undist,thresholded_wraped,Minv,left_fit, right_fit)     curvature,pos_from_center = utils.calculate_curv_and_pos(thresholded_wraped,left_fit, right_fit)     result = utils.draw_values(area_img,curvature,pos_from_center)      return result  #第4步:步骤:划线-校正-读取原视频和生成修改后的视频 #划线 left_line = line.Line() #左线 right_line = line.Line() #右线 #获取棋盘格图片 #使用提供的一组棋盘格图片计算相机校正矩阵(camera calibration matrix)和失真系数(distortion coefficients). cal_imgs = utils.get_images_by_dir("/home/xgj/Desktop/v-carline-good/camera_cal") #计算object_points,img_points object_points,img_points = utils.calibrate(cal_imgs,grid=(9,6)) M,Minv = utils.get_M_Minv()  #需要修改的视频:原视频 project_video_clip = VideoFileClip("/home/xgj/Desktop/v-carline-good/project_video.mp4") #输出修改后的视频:完成视频 project_outpath = "/home/xgj/Desktop/v-carline-good/vedio_out/project_video_out.mp4"  #制作视频 project_video_out_clip = project_video_clip.fl_image(lambda clip: processing(clip,object_points,img_points,M,Minv,left_line,right_line)) project_video_out_clip.write_videofile(project_outpath, audio=False)
  5 完结:
  =====
  5.1 以上代码完整,但制作视频估计花20分钟,我也是将代码最简化跑起来。
  5.2 如果逐步深入分析,可能要从基本开始。
  5.3 可以参考这篇文章:https://zhuanlan.zhihu.com/p/46146266

你的任务就是好好学习,其他事情你都不用管你的任务就是好好学习,其他事情你都不用管如今,很多家长都会给孩子说,你的任务就是好好学习,其他事情都不用管。一位家长说在我小的时候,家里经济条件不好,没上过几天学。现在轮到我的儿子说要做你一辈子靠山的男人,变老了用一个词形容爸爸,你会想到什么?不善表达难以亲近总被忽略却永远是家里最大的靠山曾经只要他在,就没有解决不了的难题可就在一瞬间,你发现他变老了老到戴上老花镜,老到装上假牙,老到你再也当子女成家后,如果亲家之间能这样相处,就是在为子女减轻负担导语一位心理学家表示,要让孩子尽早成为一个独立的个体,从你的生命中分离出去,这种分离越早,你就越成功。如果把培育孩子也当作一生的事业,那么你将会是最优秀的父母。在现实生活中,有太多情感育儿远离情绪不稳定的人在生活中,我们要远离情绪不稳定的人。每个人都希望成为一个情绪稳定的人。有句话说你可以表达愤怒,但不要愤怒地表达。我们先来看案例二零二零年春节,大年初三的晚上十点多,焦作高速服务站接民办中小学若转成公办,民办学校老师会有编制吗?教育局作出回应由于前几年教育体系的特殊化,导致民办学校备受家长欢迎,良好的教学环境,外聘的专业老师,家长们宁愿花上一笔不菲的费用,也愿意让孩子进入民办学校接受教育。随着近期双减政策的落地,教育开河北考生收到清华录取通知书,还没熬到过夜,入学资格就没有了进入清华是每个学子梦寐以求的事儿,作为我国的顶尖学府,聚集了全国各地的顶级能人,但是你知道吗?据相关部门统计,每年能被清华大学录取的学生仅仅只占每年应届生的15,其余的基本都是通过985高校将清理异地校区,哈工大上榜,创建分校的原因很现实近年来随着考生的越来越多,大学也因此不断扩招。似乎现在的学生上大学变得更容易了,甚至,一些大学为了进行教育资本化运作,开始流行起了异地办学的模式。东中西部的重点校区转战一路向南,给教育部发布消息,中小学不再提供此类服务,学生我们的快乐没了近些年,教育的压力迫使很多学生,将童年放在了学校和补习班里。伴随着学业负担的繁重,很多孩子将解压的方式共同放在了学校的一个特殊的地方。这个地方就是学校的小卖铺。在中小学校园里,小卖中考落榜不知道该怎么办?除了读职高技校,还有两条路可以选择中考改革普通高中与职高技校55比的录取方式,即将在全国全面实行。很多家长表示,现在中考的重要性都已经超过高考了,如果考不上高中,还去哪里考大学。对此一些成绩处于分流边缘的学生表示,延时服务收费标准已落实,包含午饭和晚饭费用,这回家长满意吗9月开学,52课后服务正式实施。随着政策的初步试行,大部分家长表示满意。因为52课后服务极好地帮助家长解决了学生上下学接送困难的问题,同时也帮助了学生解决作业的问题。一些持有反面意教培机构或将重新营业,教育部给出条件,家长表示高兴不起来双减政策给教培机构的打击可以说是致命性的。纵观今年暑期教育市场的冷清,教培人员的纷纷离去,学生显得非常高兴,多年辛苦如一日,终于可以名正言顺的不补课了。可是家长这样想吗?据统计分析
男子养了只黑色的柯基,一年后却满头问号怎么掉色了呢?都说女大十八变,其实很多动物小时候跟长大了的模样也是不一样的,可能会变得很好看,也可能变得更丑了,都说不准,有时候养宠就跟抽盲盒差不多。这位浙江的男子,在宠物店挑了只柯基回家。一般搜爆犬退役后闲不下来,男子自制弹药真是只劳碌的汪呀在一般人的心里,警犬的形象则是代表着正义,它们服从指挥,是人类的好帮手,很多警犬在退役后也不忘自己的本职工作,前两天兽医小明就看见一只退役德牧灭火的视频,简直太聪明了。下面要介绍的猫咪一直在外面叫唤,被不肯进屋子里,了解原因后觉得心疼喵有人说狗是忠臣猫是奸臣,因为猫咪会离家出走,其实话并不能这么绝对,有些猫咪认定了一个主人后,也会伴随着他们一生的。前段时间,英国的一位铲屎官Miranda因为工作原因而为自己重新找狗狗被关在家门外,独自守了将近3周,主人却说养了个废物早在过去,大部分人养狗都是用来看家护院的,而如今,其实宠主们对待狗狗的态度还是很好的,把它们当成了家庭的一个成员一样爱护。在国外的一户人家门口,蹲着一只大黄狗,它面向着门,很渴望进田园猫养了6年,都没洗过澡,猫咪一辈子不洗澡可以吗?前几天兽医小明在网上冲浪的时候,看见了一个帖子猫咪究竟需不需要经常洗澡?一辈子不洗澡可不可以?事实上,现在的人都比较考究,对待猫咪也很重视,经常洗澡也是很正常的事情,但是在过去,尤警犬执勤时偷吃水果,盯着一颗百香果不放立大功了呀警犬就像是执行任务的特殊警察,它们的工作种类分为搜救犬缉毒犬防暴犬追踪犬,虽然只是一条狗狗,但是却是人类的得力助手。今天的主角是云南的一只拉布拉多,它的名字叫砂糖,工作是缉毒。想必猫咪总睡在枕头上,留下的味道太上头了,如何赶走喵?养猫久了会发现,每当晚上想要睡觉的时候,猫咪比自己都还要积极,它们早就躺在自己的枕头上,找了个舒服的姿势,且一脸期待地看着你要一起睡觉吗?那么问题来了,猫咪为什么喜欢和铲屎官抢枕头如果你需要出门,必须将猫咪留在家中的话,这几点一定得了解去年在疫情最严重的时候,许多人都不得不被迫与自己的猫咪分离,将它们单独放在家里。由于没有为猫咪准备好充足的物资,而导致了猫与主人猫人永别的悲剧。如今虽然疫情已经被控制住了,但仍旧有救助了一只超丑流浪狗,女子养了段时间后真是一只小天使呀那些被人养了又弃的宠物狗,它们在经历过短暂的主人疼爱后,面对颠沛流离的流浪生活,无疑是痛苦的。或许一辈子也想不明白,自己什么也没有做错,为什么会被丢掉。这位女子一直都致力于救助流浪爱猫在睡梦中离世,隔天整理猫砂盆发现遗留心意,主人忍不住哭了对于铲屎官来说,最不能接受的就是和宠物的生离死别了。养了那么久的宠物,感情一般都很深,奈何宠物的寿命一般都在十几年左右,所以一定要珍惜和宠物在一起的时光呀。吴女士的养了一只猫咪,名土狗每天陪着大爷买菜,从来不会到处乱跑懂事得让人心疼随着现在留守家庭越来越多,很多老人都是孤零零独自生活。在这种情况下,养条狗狗对他们而言其实是不错的选择,因为狗子忠诚。在辽宁有一位独居的老人,就养了一只田园犬,当时也是看它可怜,就