当前位置: 首页 > news >正文

【计算机视觉学习之CV2图像操作实战:车道识别1】

车道识别

步骤

  1. 区域感兴趣
  2. 高斯模糊
  3. 图片灰度化
  4. 边缘提取
  5. 膨胀腐蚀
  6. 中值滤波
  7. 霍夫圆环检测直线
  8. 绘制车道

import cv2
import numpy as npdef create_roi_mask(frame):height, width = frame.shape[:2]# 三角形的顶点top_vertex = [int(width / 2 + 30), int(height * 0.5 + 30)]bottom_left = [120, height-50]bottom_right = [width-120, height-50]# 定义三角形的点集triangle = np.array([bottom_left, top_vertex, bottom_right], np.int32)# 创建一个与原帧同样大小的空白掩模,注意这里只创建了一个单通道的掩模mask = np.zeros((height, width), dtype=np.uint8)# 使用填充多边形函数填充三角形区域cv2.fillPoly(mask, [triangle], [255])return maskdef create_color_mask(frame):# 将BGR图像转换为HSV颜色空间hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)# 设置白色和黄色的HSV阈值lower_white = np.array([0, 0, 100])  # 白色下限upper_white = np.array([180, 80, 255])  # 白色上限lower_yellow = np.array([20, 100, 100])  # 黄色下限upper_yellow = np.array([30, 255, 255])  # 黄色上限# 应用HSV阈值white_mask = cv2.inRange(hsv, lower_white, upper_white)yellow_mask = cv2.inRange(hsv, lower_yellow, upper_yellow)# 合并两个阈值图像combined_mask = cv2.bitwise_or(white_mask, yellow_mask)return combined_maskif __name__ == '__main__':cap = cv2.VideoCapture('carlines.mp4')while True:ret,frame = cap.read()if ret == False:breakroi_mask = create_roi_mask(frame)# color_mask = create_color_mask(frame)r = cv2.bitwise_and(frame, frame, mask=roi_mask)cv2.imshow('r', r)image = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)image = cv2.GaussianBlur(image, (3, 3), 0)image_Canny = cv2.Canny(image, 70, 100)cv2.imshow('image_Canny', image_Canny)roi = cv2.bitwise_and(image_Canny, image_Canny, mask=roi_mask)cv2.imshow('roi', roi)# image = cv2.bitwise_and(image_Canny, image_Canny, mask=color_mask)# cv2.imshow('color_segmentation', image)img = roikernelX = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 1))kernelY = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 3))img = cv2.dilate(img, kernelX, iterations=2)img = cv2.erode(img, kernelX, iterations=1)img = cv2.erode(img, kernelY, iterations=1)img = cv2.dilate(img, kernelY, iterations=1)# img = cv2.dilate(img, kernelX, iterations=1)cv2.imshow('2', img)image_blur = cv2.medianBlur(img, 15)cv2.imshow('3', img)lines = cv2.HoughLinesP(img, 1, np.pi / 180, 60, minLineLength=20, maxLineGap=10)if lines is not None:for line in lines:for x1, y1, x2, y2 in line:cv2.line(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)cv2.imshow("image_lines", frame)cv2.waitKey(0)cv2.destroyAllWindows()

在这里插入图片描述

http://www.lryc.cn/news/411640.html

相关文章:

  • 动态之美:Laravel动态路由参数的实现艺术
  • Python练手小项目
  • 苹果手机通讯录恢复教程?3招速成指南
  • python爬虫入门(五)之Re解析
  • 可靠的图纸加密软件,七款图纸加密软件推荐
  • 【每日一题】【最短路】【BFS】小红走矩阵 “葡萄城杯”牛客周赛 Round 53 F题 C++
  • 无线磁吸充电宝哪个牌子值得入手?什么牌子磁吸充电宝性价比高?
  • 互联网摸鱼日报(2024-08-01)
  • Alpla003经典的价量背离的因子在可转债列表里的因子分析(附python代码)
  • 进阶理解——typeof 、instanceof
  • 不同类型的生物反应器在支架成熟过程中具有哪些特点和应用?
  • 8. Spring Ai之入门到精通(超级详细)
  • 寄存器和硬件的关系
  • 【WEB】ctfshow-萌新-web9-15
  • 【Vulnhub靶场AI-WEB-1.0打靶教程】
  • html实现酷炫美观的可视化大屏(十种风格示例,附源码)
  • 【C++BFS算法 二分查找】2812. 找出最安全路径
  • 轻触开关 KH-4.5X4.5X5.5H-STM
  • 3.redis客户端
  • Rust配置国内源,解决安装依赖慢问题
  • AI学习指南机器学习篇- Q学习的参数与调优
  • 《小迪安全》学习笔记02
  • C语言:自定义类型进阶(结构体、联合体、枚举)
  • SPSSAU | 最好最差权重BWM原理及案例实操分析
  • docker安装elasticsearch(es)最新版本
  • 02 RabbitMQ:下载安装
  • mmcv库出现No module named ‘mmcv._ext
  • 防止xss(跨站脚本攻击)
  • django小型超市库存与销售管理系统-计算机毕业设计源码46608
  • 项目实战_表白墙(简易版)