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实现redis三种cas事务操作
Dec 19 Python
python pandas 组内排序、单组排序、标号的实例
Apr 12 Python
python连接、操作mongodb数据库的方法实例详解
Sep 11 Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 Python
pytorch AvgPool2d函数使用详解
Jan 03 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
Apr 07 Python
python使用QQ邮箱实现自动发送邮件
Jun 22 Python
python map比for循环快在哪
Sep 21 Python
MoviePy常用剪辑类及Python视频剪辑自动化
Dec 18 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
理解深度学习之深度学习简介
Apr 14 Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 04 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
5.PHP的其他功能
2006/10/09 PHP
php md5下16位和32位的实现代码
2008/04/09 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
jQuery.extend 函数的详细用法
2012/06/27 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
基于vue的fullpage.js单页滚动插件
2017/03/20 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
python检测lvs real server状态
2014/01/22 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
使用Kivy将python程序打包为apk文件
2017/07/29 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
Python同时迭代多个序列的方法
2020/07/28 Python
python利用tkinter实现图片格式转换的示例
2020/09/28 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
加拿大廉价机票预订网站:CheapOair.ca
2018/03/04 全球购物
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
护士自荐信
2013/10/25 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
新农村建设标语
2014/06/24 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
2014年财务经理工作总结
2014/12/08 职场文书
交通安全学习心得体会
2016/01/18 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
tree shaking对打包体积优化及作用
2022/07/07 Java/Android