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过滤字符串中不属于指定集合中字符的类实例
Jun 30 Python
Python制作简单的网页爬虫
Nov 22 Python
Windows安装Python、pip、easy_install的方法
Mar 05 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
Apr 26 Python
python实现逐个读取txt字符并修改
Dec 24 Python
详解Python locals()的陷阱
Mar 26 Python
Python 20行简单实现有道在线翻译的详解
May 15 Python
Python整数对象实现原理详解
Jul 01 Python
利用Python库Scapy解析pcap文件的方法
Jul 23 Python
使用python os模块复制文件到指定文件夹的方法
Aug 22 Python
python实现名片管理器的示例代码
Dec 17 Python
jupyter note 实现将数据保存为word
Apr 14 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日期时间函数的高级应用技巧
2009/05/16 PHP
PHP 写文本日志实现代码
2010/05/18 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
jquery实现动态画圆
2014/12/04 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
js的回调函数详解
2015/01/05 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
2016/04/03 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
各式各样的导航条效果css3结合jquery代码实现
2016/09/17 Javascript
js本地图片预览实现代码
2016/10/09 Javascript
AngularJS Phonecat实例讲解
2016/11/21 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
JavaScript实现公历转农历功能示例
2017/02/13 Javascript
Ajax实现不刷新取最新商品
2017/03/01 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python中处理时间的几种方法小结
2015/04/09 Python
Python字符串处理函数简明总结
2015/04/13 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
HTML5之SVG 2D入门5—颜色的表示及定义方式
2013/01/30 HTML / CSS
幼儿园评语大全
2014/04/17 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang
Go 通过结构struct实现接口interface的问题
2021/10/05 Golang