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中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
Python简单日志处理类分享
Feb 14 Python
python实现读取命令行参数的方法
May 22 Python
python获取外网IP并发邮件的实现方法
Oct 01 Python
分享6个隐藏的python功能
Dec 07 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
Jan 06 Python
使用python存储网页上的图片实例
May 22 Python
详解python中的json和字典dict
Jun 22 Python
Centos下实现安装Python3.6和Python2共存
Aug 15 Python
python实现单链表中删除倒数第K个节点的方法
Sep 28 Python
Tesserocr库的正确安装方式
Oct 19 Python
Python用摘要算法生成token及检验token的示例代码
Dec 01 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
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
php根据分类合并数组的方法实例详解
2013/11/06 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
php-msf源码详解
2017/12/25 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
基于vue.js实现的分页
2018/03/13 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
JS如何在数组指定位置插入元素
2020/03/10 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
[01:00]选手抵达华西村 整装待发备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
python Celery定时任务的示例
2018/03/13 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
使用Python发现隐藏的wifi
2020/03/04 Python
Python爬虫实例——爬取美团美食数据
2020/07/15 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
新浪网技术部笔试题
2016/08/26 面试题
个人简历自荐信
2013/12/05 职场文书
活动总结报告怎么写
2014/07/03 职场文书
2014年调度员工作总结
2014/11/19 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书
创业计划书之废品回收
2019/09/26 职场文书
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题
Python编程super应用场景及示例解析
2021/10/05 Python
海康机器人重磅发布全新算法开发平台VM4.2
2022/04/21 数码科技