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 Django做网页
Nov 04 Python
python中字典dict常用操作方法实例总结
Apr 04 Python
Python3.x中自定义比较函数
Apr 24 Python
Python使用getpass库读取密码的示例
Oct 10 Python
python入门教程 python入门神图一张
Mar 05 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
pycharm配置当鼠标悬停时快速提示方法参数
Jul 31 Python
Python递归及尾递归优化操作实例分析
Feb 01 Python
Python3+selenium实现cookie免密登录的示例代码
Mar 18 Python
Python实现UDP程序通信过程图解
May 15 Python
使用python创建Excel工作簿及工作表过程图解
May 27 Python
Python基于execjs运行js过程解析
Nov 27 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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
2012/02/04 PHP
PHP获取当前页面URL函数实例
2014/10/22 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
2020/10/30 PHP
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
2017/09/23 jQuery
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
angularJS实现动态添加,删除div方法
2018/02/27 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
python局部赋值的规则
2013/03/07 Python
python3实现全角和半角字符转换的方法示例
2017/09/21 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
Django URL参数Template反向解析
2020/11/24 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
学院领导推荐信
2013/10/30 职场文书
大学生职业生涯规划书参考模板
2014/03/05 职场文书
优秀德育工作者事迹材料
2014/05/07 职场文书
领导干部作风建设自查报告
2014/10/23 职场文书
现实表现证明材料
2015/06/19 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android