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类的基础入门知识
Nov 24 Python
python操作MySQL数据库的方法分享
May 29 Python
使用简单工厂模式来进行Python的设计模式编程
Mar 01 Python
Python 实现选择排序的算法步骤
Apr 22 Python
对python抓取需要登录网站数据的方法详解
May 21 Python
浅谈python实现Google翻译PDF,解决换行的问题
Nov 28 Python
Python3的高阶函数map,reduce,filter的示例详解
Jul 23 Python
使用coverage统计python web项目代码覆盖率的方法详解
Aug 05 Python
解决python彩色螺旋线绘制引发的问题
Nov 23 Python
TensorFlow查看输入节点和输出节点名称方式
Jan 04 Python
详解torch.Tensor的4种乘法
Sep 03 Python
使用Python通过oBIX协议访问Niagara数据的示例
Dec 04 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
第1次亲密接触PHP5(2)
2006/10/09 PHP
Breeze 文章管理系统 v1.0.0正式发布
2006/12/14 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
php生成mysql的数据字典
2016/07/07 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
正负小数点后两位浮点数实现原理及代码
2013/09/06 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
Python合并多个装饰器小技巧
2015/04/28 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
详解Python进程间通信之命名管道
2017/08/28 Python
深入浅析python with语句简介
2018/04/11 Python
Django中间件实现拦截器的方法
2018/06/01 Python
python numpy 一维数组转变为多维数组的实例
2018/07/02 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
我们是伦敦女孩:WalG
2018/01/08 全球购物
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
如何写自我评价?自我评价写什么好?
2014/03/14 职场文书
《学会合作》教学反思
2014/04/12 职场文书
班干部竞选演讲稿
2014/04/24 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
法定授权委托证明书
2014/09/27 职场文书
少先队工作总结2015
2015/05/13 职场文书
公司老总年会致辞
2015/07/30 职场文书
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript