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 daemon守护进程实现
Aug 27 Python
python去除字符串中的换行符
Oct 11 Python
Python排序搜索基本算法之冒泡排序实例分析
Dec 09 Python
Python生成短uuid的方法实例详解
May 29 Python
基于Python的Post请求数据爬取的方法详解
Jun 14 Python
python set集合使用方法解析
Nov 05 Python
Python图片的横坐标汉字实例
Dec 04 Python
Python列表倒序输出及其效率详解
Mar 04 Python
Python如何实现邮件功能
May 27 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
May 29 Python
详解Django中异步任务之django-celery
Nov 05 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 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 采集心得技巧
2009/05/15 PHP
PHP生成唯一订单号
2015/07/05 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
解放web程序员的输入验证
2006/10/06 Javascript
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
JavaScript中的细节分析
2012/06/30 Javascript
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
nodejs实现的一个简单聊天室功能分享
2014/12/06 NodeJs
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
jQuery中绑定事件bind() on() live() one()的异同
2017/02/23 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
[48:53]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第一场
2014/05/26 DOTA
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
python使用正则搜索字符串或文件中的浮点数代码实例
2014/07/11 Python
Python基于有道实现英汉字典功能
2015/07/25 Python
深入理解NumPy简明教程---数组1
2016/12/17 Python
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
python实现维吉尼亚加密法
2019/03/20 Python
python3 pygame实现接小球游戏
2019/05/14 Python
python多线程并发实例及其优化
2019/06/27 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
庆六一活动总结
2014/08/29 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
2016年八一建军节活动总结
2016/04/05 职场文书