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实现排序算法
Feb 14 Python
再谈Python中的字符串与字符编码(推荐)
Dec 14 Python
Python实现脚本锁功能(同时只能执行一个脚本)
May 10 Python
python2.7 json 转换日期的处理的示例
Mar 07 Python
Python实现数据结构线性链表(单链表)算法示例
May 04 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
Aug 20 Python
执行Django数据迁移时报 1091错误及解决方法
Oct 14 Python
Django框架模板用法入门教程
Nov 04 Python
python实现画出e指数函数的图像
Nov 21 Python
Python configparser模块封装及构造配置文件
Aug 07 Python
提高python代码运行效率的一些建议
Sep 29 Python
Python实现自动装机功能案例分析
Oct 22 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/01/07 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
2017/06/09 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
PHP设计模式之工厂模式定义与用法详解
2018/04/03 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
document.compatMode介绍
2009/05/21 Javascript
基于jquery的图片懒加载js
2010/06/30 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
基于vue实现分页效果
2017/11/06 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
Python绘制七段数码管实例代码
2017/12/20 Python
Python从零开始创建区块链
2018/03/06 Python
python3.6环境安装+pip环境配置教程图文详解
2019/06/20 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
校园活动策划书范文
2014/01/10 职场文书
老师对学生的评语
2014/04/18 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
总经理岗位职责
2015/02/04 职场文书
幼儿园教师个人工作总结2015
2015/05/12 职场文书
读《推着妈妈去旅行》有感1500字
2019/10/15 职场文书