电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python+opencv實現車道線檢測

瀏覽:2日期:2022-06-27 15:23:28

python+opencv車道線檢測(簡易實現),供大家參考,具體內容如下

技術棧:python+opencv

實現思路:

1、canny邊緣檢測獲取圖中的邊緣信息;2、霍夫變換尋找圖中直線;3、繪制梯形感興趣區域獲得車前范圍;4、得到并繪制車道線;

效果展示:

python+opencv實現車道線檢測

代碼實現:

import cv2import numpy as npdef canny(): gray = cv2.cvtColor(lane_image, cv2.COLOR_RGB2GRAY) #高斯濾波 blur = cv2.GaussianBlur(gray, (5, 5), 0) #邊緣檢測 canny_img = cv2.Canny(blur, 50, 150) return canny_imgdef region_of_interest(r_image): h = r_image.shape[0] w = r_image.shape[1] # 這個區域不穩定,需要根據圖片更換 poly = np.array([ [(100, h), (500, h), (290, 180), (250, 180)] ]) mask = np.zeros_like(r_image) # 繪制掩膜圖像 cv2.fillPoly(mask, poly, 255) # 獲得ROI區域 masked_image = cv2.bitwise_and(r_image, mask) return masked_imageif __name__ == ’__main__’: image = cv2.imread(’test.jpg’) lane_image = np.copy(image) canny = canny() cropped_image = region_of_interest(canny) cv2.imshow('result', cropped_image) cv2.waitKey(0)霍夫變換加線性擬合改良:

效果圖:

python+opencv實現車道線檢測

代碼實現:

主要增加了根據斜率作線性擬合過濾無用點后連線的操作;

import cv2import numpy as npdef canny(): gray = cv2.cvtColor(lane_image, cv2.COLOR_RGB2GRAY) blur = cv2.GaussianBlur(gray, (5, 5), 0) canny_img = cv2.Canny(blur, 50, 150) return canny_imgdef region_of_interest(r_image): h = r_image.shape[0] w = r_image.shape[1] poly = np.array([ [(100, h), (500, h), (280, 180), (250, 180)] ]) mask = np.zeros_like(r_image) cv2.fillPoly(mask, poly, 255) masked_image = cv2.bitwise_and(r_image, mask) return masked_imagedef get_lines(img_lines): if img_lines is not None: for line in lines: for x1, y1, x2, y2 in line: # 分左右車道 k = (y2 - y1) / (x2 - x1) if k < 0: lefts.append(line) else: rights.append(line)def choose_lines(after_lines, slo_th): # 過濾斜率差別較大的點 slope = [(y2 - y1) / (x2 - x1) for line in after_lines for x1, x2, y1, y2 in line] # 獲得斜率數組 while len(after_lines) > 0: mean = np.mean(slope) # 計算平均斜率 diff = [abs(s - mean) for s in slope] # 每條線斜率與平均斜率的差距 idx = np.argmax(diff) # 找到最大斜率的索引 if diff[idx] > slo_th: # 大于預設的閾值選取 slope.pop(idx) after_lines.pop(idx) else: break return after_linesdef clac_edgepoints(points, y_min, y_max): x = [p[0] for p in points] y = [p[1] for p in points] k = np.polyfit(y, x, 1) # 曲線擬合的函數,找到xy的擬合關系斜率 func = np.poly1d(k) # 斜率代入可以得到一個y=kx的函數 x_min = int(func(y_min)) # y_min = 325其實是近似找了一個 x_max = int(func(y_max)) return [(x_min, y_min), (x_max, y_max)]if __name__ == ’__main__’: image = cv2.imread(’F:A_javaProtest.jpg’) lane_image = np.copy(image) canny_img = canny() cropped_image = region_of_interest(canny_img) lefts = [] rights = [] lines = cv2.HoughLinesP(cropped_image, 1, np.pi / 180, 15, np.array([]), minLineLength=40, maxLineGap=20) get_lines(lines) # 分別得到左右車道線的圖片 good_leftlines = choose_lines(lefts, 0.1) # 處理后的點 good_rightlines = choose_lines(rights, 0.1) leftpoints = [(x1, y1) for left in good_leftlines for x1, y1, x2, y2 in left] leftpoints = leftpoints + [(x2, y2) for left in good_leftlines for x1, y1, x2, y2 in left] rightpoints = [(x1, y1) for right in good_rightlines for x1, y1, x2, y2 in right] rightpoints = rightpoints + [(x2, y2) for right in good_rightlines for x1, y1, x2, y2 in right] lefttop = clac_edgepoints(leftpoints, 180, image.shape[0]) # 要畫左右車道線的端點 righttop = clac_edgepoints(rightpoints, 180, image.shape[0]) src = np.zeros_like(image) cv2.line(src, lefttop[0], lefttop[1], (255, 255, 0), 7) cv2.line(src, righttop[0], righttop[1], (255, 255, 0), 7) cv2.imshow(’line Image’, src) src_2 = cv2.addWeighted(image, 0.8, src, 1, 0) cv2.imshow(’Finally Image’, src_2) cv2.waitKey(0)

待改進:

代碼實用性差,幾乎不能用于實際,但是可以作為初學者的練手項目;斑馬線檢測思路:獲取車前感興趣區域,判斷白色像素點比例即可實現;行人檢測思路:opencv有內置行人檢測函數,基于內置的訓練好的數據集;

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 外观设计_设备外观设计_外观设计公司_产品外观设计_机械设备外观设计_东莞工业设计公司-意品深蓝 | 「安徽双凯」自动售货机-无人售货机-成人用品-自动饮料食品零食售货机 | 长信科技产业园官网_西安厂房_陕西标准工业厂房 | 中细软知识产权_专业知识产权解决方案提供商| 能量回馈_制动单元_电梯节能_能耗制动_深圳市合兴加能科技有限公司 | 固诺家居-全屋定制十大品牌_整体衣柜木门橱柜招商加盟 | 齿辊分级破碎机,高低压压球机,立式双动力磨粉机-郑州长城冶金设备有限公司 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 钛合金标准件-钛合金螺丝-钛管件-钛合金棒-钛合金板-钛合金锻件-宝鸡远航钛业有限公司 | 浙江富广阀门有限公司| 雨水收集系统厂家-雨水收集利用-模块雨水收集池-徐州博智环保科技有限公司 | 中山市派格家具有限公司【官网】 | 杭州厂房降温,车间降温设备,车间通风降温,厂房降温方案,杭州嘉友实业爽风品牌 | 旋转/数显粘度计-运动粘度测定仪-上海平轩科学仪器 | 食药成分检测_调料配方还原_洗涤剂化学成分分析_饲料_百检信息科技有限公司 | 液压压力机,液压折弯机,液压剪板机,模锻液压机-鲁南新力机床有限公司 | 工业风机_环保空调_冷风机_工厂车间厂房通风降温设备旺成服务平台 | 南京办公用品网-办公文具用品批发-打印机耗材采购 | 武汉不干胶印刷_标签设计印刷_不干胶标签印刷厂 - 武汉不干胶标签印刷厂家 | 转向助力泵/水泵/发电机皮带轮生产厂家-锦州华一精工有限公司 | 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | 东风体检车厂家_公共卫生体检车_医院体检车_移动体检车-锦沅科贸 | ptc_浴霸_大巴_干衣机_呼吸机_毛巾架_电动车加热器-上海帕克 | 月嫂_保姆_育婴_催乳_母婴护理_产后康复_养老护理-吉祥到家家政 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 全自动在线分板机_铣刀式在线分板机_曲线分板机_PCB分板机-东莞市亿协自动化设备有限公司 | 长沙网站建设制作「网站优化推广」-网页设计公司-速马科技官网 | 广州活动策划公司-15+年专业大型公关活动策划执行管理经验-睿阳广告 | 布袋除尘器-单机除尘器-脉冲除尘器-泊头市兴天环保设备有限公司 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 广州冷却塔维修厂家_冷却塔修理_凉水塔风机电机填料抢修-广东康明节能空调有限公司 | 液氮罐(生物液氮罐)百科-无锡爱思科 | 煤矿支护网片_矿用勾花菱形网_缝管式_管缝式锚杆-邯郸市永年区志涛工矿配件有限公司 | 3d打印服务,3d打印汽车,三维扫描,硅胶复模,手板,快速模具,深圳市精速三维打印科技有限公司 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 风电变桨伺服驱动器-风电偏航变桨系统-深圳众城卓越科技有限公司 | 铝单板_铝窗花_铝单板厂家_氟碳包柱铝单板批发价格-佛山科阳金属 | 合肥礼品公司-合肥礼品定制-商务礼品定制公司-安徽柏榽商贸有限公司 | 沙盘模型公司_沙盘模型制作公司_建筑模型公司_工业机械模型制作厂家 | 公交驾校-北京公交驾校欢迎您! 工作心得_读书心得_学习心得_找心得体会范文就上学道文库 | 上海软件开发-上海软件公司-软件外包-企业软件定制开发公司-咏熠科技 | LNG鹤管_内浮盘价格,上装鹤管,装车撬厂家-连云港赛威特机械 | 扬州汇丰仪表有限公司|