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中学习K-Means和图片压缩
Nov 20 Python
python shell根据ip获取主机名代码示例
Nov 25 Python
浅谈flask中的before_request与after_request
Jan 20 Python
Python实现的圆形绘制(画圆)示例
Jan 31 Python
详解Python中的四种队列
May 21 Python
python学生信息管理系统(初级版)
Oct 17 Python
使用python搭建服务器并实现Android端与之通信的方法
Jun 28 Python
python使用requests.session模拟登录
Aug 09 Python
Tensorflow的梯度异步更新示例
Jan 23 Python
Python IDLE或shell中切换路径的操作
Mar 09 Python
python json.dumps() json.dump()的区别详解
Jul 14 Python
pycharm中选中一个单词替换所有重复单词的实现方法
Nov 17 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
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
2014/11/15 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
js验证表单第二部分
2006/11/25 Javascript
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
javascript小数四舍五入多种方法实现
2012/12/23 Javascript
图片动画横条广告带上下滚动的JS代码
2013/10/25 Javascript
原生js和jQuery随意改变div属性style的名称和值
2014/10/22 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
了解重排与重绘
2019/05/29 Javascript
Vue formData实现图片上传
2019/08/20 Javascript
python实现爬取千万淘宝商品的方法
2015/06/30 Python
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
python制作websocket服务器实例分享
2016/11/20 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
python中数组和矩阵乘法及使用总结(推荐)
2019/05/18 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
2015年纪委工作总结
2015/05/13 职场文书
Mysql Show Profile
2021/04/05 MySQL
详解OpenCV曝光融合
2022/04/29 Python