python opencv检测目标颜色的实例讲解


Posted in Python onApril 02, 2018

实例如下所示:

# -*- coding:utf-8 -*-
__author__ = 'kingking'
__version__ = '1.0'
__date__ = '14/07/2017'
import cv2
import numpy as np
import time
if __name__ == '__main__':
 Img = cv2.imread('example.png')#读入一幅图像
 kernel_2 = np.ones((2,2),np.uint8)#2x2的卷积核
 kernel_3 = np.ones((3,3),np.uint8)#3x3的卷积核
 kernel_4 = np.ones((4,4),np.uint8)#4x4的卷积核
 if Img is not None:#判断图片是否读入
  HSV = cv2.cvtColor(Img, cv2.COLOR_BGR2HSV)#把BGR图像转换为HSV格式
  '''
  HSV模型中颜色的参数分别是:色调(H),饱和度(S),明度(V)
  下面两个值是要识别的颜色范围
  '''
  Lower = np.array([20, 20, 20])#要识别颜色的下限
  Upper = np.array([30, 255, 255])#要识别的颜色的上限
  #mask是把HSV图片中在颜色范围内的区域变成白色,其他区域变成黑色
  mask = cv2.inRange(HSV, Lower, Upper)
  #下面四行是用卷积进行滤波
  erosion = cv2.erode(mask,kernel_4,iterations = 1)
  erosion = cv2.erode(erosion,kernel_4,iterations = 1)
  dilation = cv2.dilate(erosion,kernel_4,iterations = 1)
  dilation = cv2.dilate(dilation,kernel_4,iterations = 1)
  #target是把原图中的非目标颜色区域去掉剩下的图像
  target = cv2.bitwise_and(Img, Img, mask=dilation)
  #将滤波后的图像变成二值图像放在binary中
  ret, binary = cv2.threshold(dilation,127,255,cv2.THRESH_BINARY) 
  #在binary中发现轮廓,轮廓按照面积从小到大排列
  contours, hierarchy = cv2.findContours(binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) 
  p=0
  for i in contours:#遍历所有的轮廓
   x,y,w,h = cv2.boundingRect(i)#将轮廓分解为识别对象的左上角坐标和宽、高
   #在图像上画上矩形(图片、左上角坐标、右下角坐标、颜色、线条宽度)
   cv2.rectangle(Img,(x,y),(x+w,y+h),(0,255,),3)
   #给识别对象写上标号
   font=cv2.FONT_HERSHEY_SIMPLEX
   cv2.putText(Img,str(p),(x-10,y+10), font, 1,(0,0,255),2)#加减10是调整字符位置
   p +=1
  print '黄色方块的数量是',p,'个'#终端输出目标数量
  cv2.imshow('target', target)
  cv2.imshow('Mask', mask)
  cv2.imshow("prod", dilation)
  cv2.imshow('Img', Img)
  cv2.imwrite('Img.png', Img)#将画上矩形的图形保存到当前目录  
 while True:
  Key = chr(cv2.waitKey(15) & 255)
  if Key == 'q':
   cv2.destroyAllWindows()
   break

原始图像

python opencv检测目标颜色的实例讲解

处理之后保存的图像

python opencv检测目标颜色的实例讲解

以上这篇python opencv检测目标颜色的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python批量修改文件后缀示例代码分享
Dec 24 Python
在Python上基于Markov链生成伪随机文本的教程
Apr 17 Python
Python实现快速排序和插入排序算法及自定义排序的示例
Feb 16 Python
Python实现对一个函数应用多个装饰器的方法示例
Feb 09 Python
Python中extend和append的区别讲解
Jan 24 Python
python3下载抖音视频的完整代码
Jun 05 Python
python opencv 图像拼接的实现方法
Jun 27 Python
Python3 执行系统命令并获取实时回显功能
Jul 09 Python
详解Python Opencv和PIL读取图像文件的差别
Dec 27 Python
如何基于Python爬取隐秘的角落评论
Jul 02 Python
python安装cx_Oracle和wxPython的方法
Sep 14 Python
python神经网络Xception模型
May 06 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 #Python
python基础教程项目二之画幅好画
Apr 02 #Python
通过Python 接口使用OpenCV的方法
Apr 02 #Python
Python 3.x 安装opencv+opencv_contrib的操作方法
Apr 02 #Python
在python3.5中使用OpenCV的实例讲解
Apr 02 #Python
Python-OpenCV基本操作方法详解
Apr 02 #Python
浅谈Python Opencv中gamma变换的使用详解
Apr 02 #Python
You might like
PHP 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
PHP5.6读写excel表格文件操作示例
2019/02/26 PHP
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
vue实现简单全选和反选功能
2020/09/15 Javascript
python中装饰器级连的使用方法示例
2017/09/29 Python
Python3.4 splinter(模拟填写表单)使用方法
2018/10/13 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
PyTorch实现AlexNet示例
2020/01/14 Python
Python 将 QQ 好友头像生成祝福语的实现代码
2020/05/03 Python
Python中SQLite如何使用
2020/05/27 Python
Python hashlib和hmac模块使用方法解析
2020/12/08 Python
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
企划经理的岗位职责
2013/11/17 职场文书
教育学专业实习生的自我鉴定
2013/11/26 职场文书
四下基层实施方案
2014/03/28 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
公司领导班子对照检查材料
2014/09/24 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书
单位接收函范文
2015/01/30 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
Redis Cluster集群动态扩容的实现
2021/07/15 Redis
Pygame Rect区域位置的使用(图文)
2021/11/17 Python