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数组定义方法
Apr 13 Python
python爬虫入门教程--优雅的HTTP库requests(二)
May 25 Python
Python中的__slots__示例详解
Jul 06 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
Aug 31 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
Jun 21 Python
python下的opencv画矩形和文字注释的实现方法
Jul 09 Python
Django的models中on_delete参数详解
Jul 16 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
Oct 17 Python
flask框架url与重定向操作实例详解
Jan 25 Python
python自动生成证件号的方法示例
Jan 14 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 Python
使用Python开发贪吃蛇游戏 SnakeGame
Apr 30 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图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
php创建无限级树型菜单
2015/11/05 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
javascript 冒号 使用说明
2009/06/06 Javascript
JavaScript去掉空格的方法集合
2010/12/28 Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
2013/03/19 Javascript
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
javascript如何使用bind指定接收者
2014/05/04 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
Web Uploader文件上传插件使用详解
2016/05/10 Javascript
jquery获取复选框checkbox的值实现方法
2016/05/30 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
JavaScript实现多栏目切换效果
2016/12/12 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
2019/08/20 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
python3.5绘制随机漫步图
2018/08/27 Python
python3 实现函数写文件路径的正确方法
2019/11/27 Python
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
德国网上宠物店:Zoobio
2018/05/23 全球购物
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
电子商务专业毕业生求职信
2014/06/12 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
买卖合同协议书范本
2014/10/18 职场文书
结婚喜宴迎宾词
2015/08/10 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL