python利用opencv实现颜色检测


Posted in Python onFebruary 23, 2021

本文实例为大家分享了python利用opencv实现颜色检测的具体代码,供大家参考,具体内容如下

需要实现倒车辅助标记检测的功能,倒车辅助标记颜色已经确定了,所以不需要使用深度学习的方法,那样成本太高了,直接可以使用颜色检测的方法。

1.首先需要确定待检测目标的HSV值

import cv2

img = cv2.imread('l3.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)


def mouse_click(event, x, y, flags, para):
 if event == cv2.EVENT_LBUTTONDOWN: # 左边鼠标点击
  print('PIX:', x, y)
  print("BGR:", img[y, x])
  print("GRAY:", gray[y, x])
  print("HSV:", hsv[y, x])


if __name__ == '__main__':
 cv2.namedWindow("img")
 cv2.setMouseCallback("img", mouse_click)
 while True:
  cv2.imshow('img', img)
  if cv2.waitKey() == ord('q'):
   break
 cv2.destroyAllWindows()

2.然后利用颜色检测,检测出指定目标

import numpy as np
import cv2

font = cv2.FONT_HERSHEY_SIMPLEX
lower_red = np.array([0, 127, 128]) # 红色阈值下界
higher_red = np.array([10, 255, 255]) # 红色阈值上界
lower_yellow = np.array([15, 230, 230]) # 黄色阈值下界
higher_yellow = np.array([35, 255, 255]) # 黄色阈值上界
lower_blue = np.array([85,240,140])
higher_blue = np.array([100,255,165])
frame=cv2.imread("l3.png")
img_hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
mask_red = cv2.inRange(img_hsv, lower_red, higher_red) # 可以认为是过滤出红色部分,获得红色的掩膜
mask_yellow = cv2.inRange(img_hsv, lower_yellow, higher_yellow) # 获得绿色部分掩膜
mask_yellow = cv2.medianBlur(mask_yellow, 7) # 中值滤波
mask_red = cv2.medianBlur(mask_red, 7) # 中值滤波
mask_blue = cv2.inRange(img_hsv, lower_blue, higher_blue) # 获得绿色部分掩膜
mask_blue = cv2.medianBlur(mask_blue, 7) # 中值滤波
#mask = cv2.bitwise_or(mask_green, mask_red) # 三部分掩膜进行按位或运算
print(mask_red)
cnts1, hierarchy1 = cv2.findContours(mask_red, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) # 轮廓检测 #红色
cnts2, hierarchy2 = cv2.findContours(mask_blue, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) # 轮廓检测 #红色
cnts3, hierarchy3 = cv2.findContours(mask_yellow, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

for cnt in cnts1:
 (x, y, w, h) = cv2.boundingRect(cnt) # 该函数返回矩阵四个点
 cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2) # 将检测到的颜色框起来
 cv2.putText(frame, 'red', (x, y - 5), font, 0.7, (0, 0, 255), 2)
for cnt in cnts2:
 (x, y, w, h) = cv2.boundingRect(cnt) # 该函数返回矩阵四个点
 cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2) # 将检测到的颜色框起来
 cv2.putText(frame, 'blue', (x, y - 5), font, 0.7, (0, 0, 255), 2)

for cnt in cnts3:
 (x, y, w, h) = cv2.boundingRect(cnt) # 该函数返回矩阵四个点
 cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) # 将检测到的颜色框起来
 cv2.putText(frame, 'yellow', (x, y - 5), font, 0.7, (0, 255, 0), 2)
cv2.imshow('frame', frame)

cv2.waitKey(0)
cv2.destroyAllWindows()

3.效果

python利用opencv实现颜色检测

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在ironpython中利用装饰器执行SQL操作的例子
May 02 Python
一步步解析Python斗牛游戏的概率
Feb 12 Python
浅谈Python的异常处理
Jun 19 Python
python爬取网易云音乐评论
Nov 16 Python
Python静态类型检查新工具之pyright 使用指南
Apr 26 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 Python
python能在浏览器能运行吗
Jun 17 Python
Python爬虫如何应对Cloudflare邮箱加密
Jun 24 Python
通过案例解析python鸭子类型相关原理
Oct 10 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
Dec 04 Python
Python import模块的缓存问题解决方案
Jun 02 Python
详解Python中openpyxl模块基本用法
Feb 23 #Python
python爬虫今日热榜数据到txt文件的源码
Feb 23 #Python
如何用Python和JS实现的Web SSH工具
Feb 23 #Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 #Python
python解决OpenCV在读取显示图片的时候闪退的问题
Feb 23 #Python
关于探究python中sys.argv时遇到的问题详解
Feb 23 #Python
python链表类中获取元素实例方法
Feb 23 #Python
You might like
PHP生成HTML静态页面实例代码
2008/08/31 PHP
PHP中file_exists函数不支持中文名的解决方法
2014/07/26 PHP
PHP安装BCMath扩展的方法
2019/02/13 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
react的滑动图片验证码组件的示例代码
2019/02/27 Javascript
浏览器事件循环与vue nextTicket的实现
2019/04/16 Javascript
回顾Javascript React基础
2019/06/15 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
关于vue 结合原生js 解决echarts resize问题
2020/07/26 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
python实现巡检系统(solaris)示例
2014/04/02 Python
跟老齐学Python之开始真正编程
2014/09/12 Python
Python计算一个文件里字数的方法
2015/06/15 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
Python解析json代码实例解析
2019/11/25 Python
pandas中ix的使用详细讲解
2020/03/09 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
CSS实现雨滴动画效果的实例代码
2019/10/08 HTML / CSS
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
大一学生的职业生涯规划书范文
2014/01/19 职场文书
老人祝寿主持词
2014/03/28 职场文书
预备党员转正考核材料
2014/06/03 职场文书
中小学校园安全广播稿
2014/09/29 职场文书
先进个人评语大全
2015/01/04 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python