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 ORM框架SQLAlchemy学习笔记之数据查询实例
Jun 10 Python
python教程之用py2exe将PY文件转成EXE文件
Jun 12 Python
Python之文字转图片方法
May 10 Python
python实现寻找最长回文子序列的方法
Jun 02 Python
pycharm在调试python时执行其他语句的方法
Nov 29 Python
numpy.array 操作使用简单总结
Nov 08 Python
django框架ModelForm组件用法详解
Dec 11 Python
python中property和setter装饰器用法
Dec 19 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
后端开发使用pycharm的技巧(推荐)
Mar 27 Python
python闭包与引用以及需要注意的陷阱
Sep 18 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
Jan 23 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
Terran剧情介绍
2020/03/14 星际争霸
关于PHP中操作MySQL数据库的一些要注意的问题
2006/10/09 PHP
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
php实现点击可刷新验证码
2015/11/07 PHP
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
2016/07/08 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
JavaScript实现Excel表格效果
2020/02/07 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
Python 文件和输入输出小结
2013/10/09 Python
Python set常用操作函数集锦
2017/11/15 Python
python绘制双柱形图代码实例
2017/12/14 Python
python中下标和切片的使用方法解析
2019/08/27 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
python中的yield from语法快速学习
2020/11/06 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
学校三八妇女节活动情况总结
2014/03/09 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
毕业论文致谢信
2015/05/14 职场文书
校园开放日新闻稿
2015/07/17 职场文书
MySQL的join buffer原理
2021/04/29 MySQL