led指示灯识别可以实现led的八种灯光颜色识别以及灯光闪烁识别。可用于大型设备的led灯光自动化监控。暂未实现led定位识别。

本代码使用python编写,依赖opencv来进行颜色识别。 依赖open cv 3.4.1,太高可能会报错

pip3 install opencv_python==3.4.2.16

# -*- coding: utf-8 -*-
"""
图片测试
"""
import cv2
import numpy as np
import collections
import OperationMysql as mySql# 处理图片
def get_color(frame):print('go in get_color')hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)maxsum = -100color = Nonecolor_dict = getColorList()for d in color_dict:mask = cv2.inRange(hsv, color_dict[d][0], color_dict[d][1])cv2.imwrite(d + '.jpg', mask)binary = cv2.threshold(mask, 127, 255, cv2.THRESH_BINARY)[1]binary = cv2.dilate(binary, None, iterations=2)img, cnts, hiera = cv2.findContours(binary.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)sum = 0for c in cnts:sum += cv2.contourArea(c)if sum > maxsum:maxsum = sumcolor = dreturn colordef getColorList():dict = collections.defaultdict(list)# 黑色lower_black = np.array([0, 0, 0])upper_black = np.array([180, 255, 46])color_list = []color_list.append(lower_black)color_list.append(upper_black)dict['black'] = color_list# 灰色lower_gray = np.array([0, 0, 46])upper_gray = np.array([180, 43, 220])color_list = []color_list.append(lower_gray)color_list.append(upper_gray)dict['gray'] = color_list# 白色lower_white = np.array([0, 0, 221])upper_white = np.array([180, 30, 255])color_list = []color_list.append(lower_white)color_list.append(upper_white)dict['white'] = color_list# 红色lower_red = np.array([156, 43, 46])upper_red = np.array([180, 255, 255])color_list = []color_list.append(lower_red)color_list.append(upper_red)dict['red'] = color_list# 红色2lower_red = np.array([0, 43, 46])upper_red = np.array([10, 255, 255])color_list = []color_list.append(lower_red)color_list.append(upper_red)dict['red2'] = color_list# 橙色lower_orange = np.array([11, 43, 46])upper_orange = np.array([25, 255, 255])color_list = []color_list.append(lower_orange)color_list.append(upper_orange)dict['orange'] = color_list# 黄色lower_yellow = np.array([26, 43, 46])upper_yellow = np.array([34, 255, 255])color_list = []color_list.append(lower_yellow)color_list.append(upper_yellow)dict['yellow'] = color_list# 绿色lower_green = np.array([35, 43, 46])upper_green = np.array([77, 255, 255])color_list = []color_list.append(lower_green)color_list.append(upper_green)dict['green'] = color_list# 青色lower_cyan = np.array([78, 43, 46])upper_cyan = np.array([99, 255, 255])color_list = []color_list.append(lower_cyan)color_list.append(upper_cyan)dict['cyan'] = color_list# 蓝色lower_blue = np.array([100, 43, 46])upper_blue = np.array([124, 255, 255])color_list = []color_list.append(lower_blue)color_list.append(upper_blue)dict['blue'] = color_list# 紫色lower_purple = np.array([125, 43, 46])upper_purple = np.array([155, 255, 255])color_list = []color_list.append(lower_purple)color_list.append(upper_purple)dict['purple'] = color_listreturn dict# 待识别图片
img = cv2.imread('images/test.jpg')# 区域,可改为for循环,同时识别多个区域
x2, y2, w2, h2 = (426, 909, 37, 37)
# print(x2, y2, w2, h2)
img_roi2 = img[int(y2):int(y2 + h2), int(x2):int(x2 + w2)]
cv2.rectangle(img=img, pt1=(x2, y2), pt2=(x2 + w2, y2 + h2), color=(0, 0, 255), thickness=1)
color = get_color(img_roi2)
cv2.putText(img, '{0}'.format(color),(x2 + 50, y2),cv2.FONT_HERSHEY_SIMPLEX,1.2, (0, 0, 255), 4,cv2.LINE_AA)cv2.imshow('roi', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果图:

后期有需要可扩展led自动区域识别与区域文字识别,现在暂时手动定位roi区域。

定位工具参看下一篇博客roi定位工具

led指示灯识别功能相关推荐

  1. LED指示灯在常见网络设备故障诊断中的应用

    在常见网络设备上都有几个指示灯,用于监控设备的状态和运行,这些指示灯称之为发光二极管(LED).充分了解这些指示灯的意义,往往能在网络故障诊断的过程中,简单快捷的判断出故障原因,达到意想不到的效果. ...

  2. android led闪烁功能,如何在Android应用层中制作一个LED指示灯效果

    如何在Android应用层中制作一个LED指示灯效果 发布时间:2020-12-08 16:12:59 来源:亿速云 阅读:86 作者:Leah 本篇文章给大家分享的是有关如何在Android应用层中 ...

  3. android led闪烁功能,详解Android应用层制作LED指示灯

    详解Android应用层制作LED指示灯 在Java应用层修改LED指示灯的颜色,这个花了我半天时间, 才实现该功能! public class LEDActivity extends Activit ...

  4. 基于STC89C52RC芯片设计的一款酒店服务机器人(包含货物检测、二维码识别功能)

    目录 一:硬件设备 1:主控 2:扫码模块 3:货物检测 4:循迹模块 5:电机驱动模块 6:电源 二:软件代码 三:循迹环PID 四:成品视频 一:硬件设备 1:主控 所选取主控芯片为STC89C5 ...

  5. 1.3双摇杆遥控器电路部分--基本外设电路(ST-link下载、串口、按键、摇杆、电量检测、LED指示灯、0.96寸OLED、NRF24L01)

    目录 一.摘要 二.电路 1.ST-LINK下载接口 2.串口 3.按键 功能按键 唤醒按键 4.摇杆 滑动变阻器摇杆 霍尔摇杆 5.电量检测 6.LED指示灯 7.0.96寸OLED屏 8.NRF2 ...

  6. 使用Arduino和蓝牙实现语音控制LED指示灯

    使用语音命令控制LED指示灯看上去似乎是一项难以实现的功能,但实际上它很容易,我们可以快速实现它.我们只需要一个Arduino UNO开发板与HC-06蓝牙模块进行串行通信,以及使用一台智能手机将语音 ...

  7. 戴尔 DELL R720 LED指示灯错误代称含义

    戴尔 DELL R720 LED指示灯错误代称含义 戴尔 DELL R720 LED指示灯错误代称含义: 特定的系统组件 name 组件号 number 位置 bay AMP0302 The syst ...

  8. IBM服务器诊断面板LED指示灯详细介绍

    诊断面板板LED指示灯目录 Light Path Diagnostics(光径诊断系统): (1)REMIND: (2)OVER SPEC: (3)LOG: (4)LINK: (5)PS: (6)PC ...

  9. 利用10位AD转换器 及 LED 数码管,实现由AD转换器采集温度,并用数码管显示。温度超出一定范围,LED 指示灯闪烁报警。(主要分析进制16进制转换10进制,并用数码管显示问题)

    ** 题目: ** 利用原有的电路 AD 及 LED 数码管显示等例子,进行整合.实现由 AD转换器采集温度(用可调电阻模拟),温度在数码管上显示.当温度超出一定范围,用 LED 指示灯进行闪烁报警. ...

最新文章

  1. ubuntu下安装eclipse
  2. 推荐一些顶级的开源CI/CD工具
  3. 程序员面试的一些心得
  4. 浮点数 IEEE表示 舍入 运算
  5. 【C/C++多线程编程之二】pthread简介
  6. SAP Cloud for Customer 2102版本如何使用Key User Tool创建扩展字段 - extension field
  7. 10个高效Linux技巧及Vim命令对比
  8. 深入理解与应用Hadoop中的MapReduce
  9. 美的集团:已耗资4.86亿元回购847.4万股
  10. jquery时间倒计时
  11. 机器学习 深度学习 ai_人工智能,机器学习和深度学习。 真正的区别是什么?...
  12. redis入门(转)
  13. 配置思科交换机冗余链路汇聚
  14. 设计模式之简单工厂模式和抽象工厂模式
  15. 计算机前沿科学与发展,《数据与计算发展前沿》正式创刊
  16. 单片机c语言设计奥运五环,如何用C语言程序来设计奥运五环图案.doc
  17. flea-db使用之JPA接入
  18. 硬盘存储结构及分区简介
  19. 留美CS学习的第一学期总结
  20. 【若依RuoYi短信验证码登录】汇总

热门文章

  1. Python-OpenCV(一)
  2. 浅谈Prim,Kruskal最小生成树算法
  3. 洛谷P1823 [COI2007] Patrik 音乐会的等待
  4. TELEDYNE DALSA Sherlock 系统软件 sherlock SH7-PRO视觉加密狗
  5. 一本开源的程序员快速成长秘笈
  6. 邮件服务器imap有推送吗,为什么我的邮件服务器支持imap协议还收不到邮件内容...
  7. 家电行业APS如何选型?
  8. 大智慧新一代公式编写教程
  9. selenium三种方法isEnable()、isDisplayed()和isSelected()的区别
  10. Java多人视频通信(不定时更新)