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 相关文章推荐
python使用win32com库播放mp3文件的方法
May 30 Python
Django Highcharts制作图表
Aug 27 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
Jun 20 Python
python实现数据预处理之填充缺失值的示例
Dec 22 Python
python实现在图片上画特定大小角度矩形框
Oct 24 Python
Python虚拟环境的原理及使用详解
Jul 02 Python
Django错误:TypeError at / 'bool' object is not callable解决
Aug 16 Python
python定时任务 sched模块用法实例
Nov 04 Python
基于pandas中expand的作用详解
Dec 17 Python
Python TCPServer 多线程多客户端通信的实现
Dec 31 Python
基于Python计算圆周率pi代码实例
Mar 25 Python
利用python进行文件操作
Dec 04 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和js交互一例-PHP教程,PHP应用
2007/01/03 PHP
php 文件缓存函数
2011/10/08 PHP
学习使用curl采集curl使用方法
2012/01/11 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
php生成随机颜色的方法
2014/11/13 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
2016/04/01 Javascript
浅析Javascript ES6中的原生Promise
2016/08/25 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
node.js平台下的mysql数据库配置及连接
2017/03/31 Javascript
原生JS实现图片网格式渐显、渐隐效果
2017/06/05 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
layui checkbox默认选中,获取选中值,清空所有选中项的例子
2019/09/02 Javascript
angular异步验证防抖踩坑实录
2019/12/01 Javascript
[01:05:00]2018国际邀请赛 表演赛 Pain vs OpenAI
2018/08/24 DOTA
python如何实现一个刷网页小程序
2018/11/27 Python
关于Python turtle库使用时坐标的确定方法
2020/03/19 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
施华洛世奇天猫官方旗舰店:SWAROVSKI
2017/04/17 全球购物
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
国际经济贸易专业推荐信
2013/11/06 职场文书
会计工作心得体会
2014/01/13 职场文书
试用期转正鉴定评语
2014/01/27 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
会议邀请函
2015/01/30 职场文书
2015年三好一满意工作总结
2015/07/24 职场文书
生日祝酒词大全
2015/08/10 职场文书
党校培训学习心得体会
2016/01/06 职场文书