#导入库

import cv2
import numpy as np

#导入视频
cap = cv2.VideoCapture("红绿灯.mp4")

#修改视频尺寸
    frame = cv2.resize(frame, (1620, 900))
    img = frame[100:500,300:800]

#转换hsv颜色空间
    hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

#红灯
    lower_hsv_red = np.array([157,177,122])#
    upper_hsv_red = np.array([179,255,255])
    mask_red = cv2.inRange(hsv,lowerb=lower_hsv_red,upperb=upper_hsv_red)
   
    red_blur = cv2.medianBlur(mask_red, 7)

#绿灯
    lower_hsv_green = np.array([49,79,137])
    upper_hsv_green = np.array([90,255,255])
    mask_green = cv2.inRange(hsv,lowerb=lower_hsv_green,upperb=upper_hsv_green)

#中值滤波
    green_blur = cv2.medianBlur(mask_green, 7)

#二值图像颜色的判定(因为图像是二值的图像,所以如果图像出现白点,那么就取他的最大值255,在red_color中判断二值图像如果数值等于255,那么就判定为红,在green_color中判断二值图像如果数值等于255,那么就判定为绿。)
    red_color = np.max(red_blur)
    green_color = np.max(green_blur)   
    if red_color == 255:
        print('红')

# 按坐标画出矩形框
        cv2.rectangle(frame, (660, 420), (400, 300), (0, 0, 255), 2)

#显示文本信息
        cv2.putText(frame, "red", (500, 280), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 255), 2)
    elif green_color == 255:
        print('绿')
        cv2.rectangle(frame, (660, 420), (400, 300), (0, 255, 0), 2)
        cv2.putText(frame, "green", (500, 280), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 0), 2)
    cv2.imshow('frame',frame)
    red_blur = cv2.resize(red_blur,(200,150))
    green_blur = cv2.resize(green_blur,(200,150))

#结果展示
    cv2.imshow('red',red_blur)
    cv2.imshow('green',green_blur)
    c = cv2.waitKey(1)

最终运行结果:

完整代码:

import cv2
import numpy as np
cap = cv2.VideoCapture("红绿灯.mp4") 
while True:
    ret,frame = cap.read()
    if ret == False:
        break
    frame = cv2.resize(frame, (1620, 900)) 
    img = frame[100:500,300:800]
    hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) 
    lower_hsv_red = np.array([157,177,122])#
    upper_hsv_red = np.array([179,255,255])
    mask_red = cv2.inRange(hsv,lowerb=lower_hsv_red,upperb=upper_hsv_red)
    red_blur = cv2.medianBlur(mask_red, 7)
    lower_hsv_green = np.array([49,79,137])
    upper_hsv_green = np.array([90,255,255])
    mask_green = cv2.inRange(hsv,lowerb=lower_hsv_green,upperb=upper_hsv_green)
    green_blur = cv2.medianBlur(mask_green, 7)
    red_color = np.max(red_blur)
    green_color = np.max(green_blur)   
    if red_color == 255:
        print('红')
        cv2.rectangle(frame, (660, 420), (400, 300), (0, 0, 255), 2)
        cv2.putText(frame, "red", (500, 280), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 255), 2)
    elif green_color == 255:
        print('绿')
        cv2.rectangle(frame, (660, 420), (400, 300), (0, 255, 0), 2)
        cv2.putText(frame, "green", (500, 280), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 0), 2)
    cv2.imshow('frame',frame)
    red_blur = cv2.resize(red_blur,(200,150))
    green_blur = cv2.resize(green_blur,(200,150))
    cv2.imshow('red',red_blur)
    cv2.imshow('green',green_blur)
    c = cv2.waitKey(1)
    if c==1:
        break

Opencv 识别红绿灯相关推荐

  1. python红绿灯检测opencv识别红绿灯信号灯检测

    python红绿灯检测opencv识别红绿灯信号灯检测 交通信号灯的检测与识别是无人驾驶与辅助驾驶必不可少的一部分,其识别精度直接关乎智能驾驶的安全.一般而言,在实际的道路场景中采集的交通信号灯图像具 ...

  2. opencv识别红绿灯

    视频截取下来的红绿灯图像流程图 代码部分: import cv2 as cv import numpy as np   capture = cv.VideoCapture("*/红绿灯.mp ...

  3. Android用opencv识别红绿灯,Opencv 图像识别Android实战(识别扑克牌 8.处理筛选区)

    先看源代码图片 image.png 在242行通过宽度,高度,宽高比筛选出可能的候选区,并保存在rects中,在需要的地方,按照rects中保存的矩形框裁剪下来.如果选中了学习模式的Checkbox就 ...

  4. 计算机视觉实战--OpenCV进行红绿灯识别

    前言: Hello大家好,我是Dream. OpenCV是一个开源的计算机视觉库,可以用于实现各种图像和视频处理任务,包括红绿灯识别.可以帮助自动驾驶汽车.智能交通系统等设备准确地识别红绿灯的状态,以 ...

  5. 转载:使用 OpenCV 识别 QRCode

    原文链接:http://coolshell.cn/articles/10590.html#jtss-tsina 识别二维码的项目数不胜数,每次都是开箱即用,方便得很. 这次想用 OpenCV 从零识别 ...

  6. opencv resize_利用OpenCV 识别两张相似的图片

    Background: 在我们项目中,用到U-net,我们对训练样本图片使用labelme进行标定,对标定生成的json文件labelme_json_to_dataset生成标注图像,由于小伙伴将生成 ...

  7. opencv 取roi_利用OpenCV 识别两张相似的图片

    Background: 在我们项目中,用到U-net,我们对训练样本图片使用labelme进行标定,对标定生成的json文件labelme_json_to_dataset生成标注图像,由于小伙伴将生成 ...

  8. c++ 解析从浏览器端传过来的图像base64编码,并转换成opencv识别的格式

    from: c++ 解析从浏览器端传过来的图像base64编码,并转换成opencv识别的格式 #include <cstdint> #include <fstream> #i ...

  9. python相似图片识别_Python+Opencv识别两张相似图片

    Python+Opencv识别两张相似图片 在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话 ...

最新文章

  1. mysql 是否有归档模式_查看oracle数据库是否归档和修改归档模式
  2. LSMW批处理使用方法(11)_步骤14、15
  3. Servlet底层原理、Servlet实现方式、Servlet生命周期
  4. vue 自定义指令(directive)实例
  5. 转移性乳腺癌的基因组图谱突出了突变和特征频率的变化
  6. java核心技术卷1 2 英文版pdf/epub+源代码 Core Java, 11th Edition
  7. Android视频播放器
  8. HealthKit入门:第1部分
  9. 深度linux如何安装迅雷,deepin官方论坛-深度科技官网旗下网站
  10. excel2007/2010中独立显示窗体的方式
  11. 微信限制收付款怎么解决_解决付款处理问题
  12. 地产中介门店10用户桌面云方案
  13. python 网页爬虫,带登陆信息
  14. 达摩院预测的2023十大科技趋势,你看准哪个?
  15. 【译】volatile C语言关键字,如何使用?
  16. Sql 存储过程传递参数
  17. VM Workstation 16 Pro 下载安装以及下载配置Linux虚拟机(操作如下)
  18. 小程序制作预算_科普:小程序制作一个需要多少钱?
  19. eNSP 防火墙配置入门
  20. 认识/dev/shm

热门文章

  1. python fetchall函数_python操作mysql数据库用到的fetchone()函数和fetchall()函数
  2. 阿里云rds MySQL实例服务器连接问题解决
  3. 如何用公式编辑器打带圈加号
  4. 运动----最简单经济最适合的强身健体方式
  5. PAT题集4.30排名变动
  6. 收集车载以太网文章链接
  7. php 长图切成多张图片,长图打印,图片平均切割
  8. Github上的一个非常流行的编程书籍索引
  9. C++实践1:RVO优化
  10. 使用BPE算法处理未登录词