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脚本
Apr 05 Python
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
Dec 04 Python
Python实现的几个常用排序算法实例
Jun 16 Python
Python中使用Flask、MongoDB搭建简易图片服务器
Feb 04 Python
bpython 功能强大的Python shell
Feb 16 Python
分数霸榜! python助你微信跳一跳拿高分
Jan 08 Python
python实现csv格式文件转为asc格式文件的方法
Mar 23 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
Apr 10 Python
python 处理dataframe中的时间字段方法
Apr 10 Python
解决pycharm无法识别本地site-packages的问题
Oct 13 Python
Python控制Firefox方法总结
Jun 03 Python
MoviePy常用剪辑类及Python视频剪辑自动化
Dec 18 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
教你如何把一篇文章按要求分段
2006/10/09 PHP
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
PDO操作MySQL的基础教程(推荐)
2017/08/18 PHP
新浪中用来显示flash的函数
2007/04/02 Javascript
基于jquery的自定义鼠标提示效果 jquery.toolTip
2010/11/14 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
微信小程序自定义多列选择器使用详解
2019/06/21 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
浅谈Python peewee 使用经验
2017/10/20 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
python实现AES和RSA加解密的方法
2019/03/28 Python
Django ModelForm操作及验证方式
2020/03/30 Python
利用CSS3的border-radius绘制太极及爱心图案示例
2016/05/17 HTML / CSS
凯伦·米莲女装网上商店:Karen Millen
2017/11/07 全球购物
经济信息管理专业大学生求职信
2013/09/27 职场文书
前台文员岗位职责
2013/12/28 职场文书
电子商务自荐书范文
2014/01/04 职场文书
护理工作感言
2014/01/16 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
项目采购员岗位职责
2014/04/15 职场文书
上海世博会口号
2014/06/19 职场文书
社区创先争优承诺书
2014/08/30 职场文书
名人演讲稿范文
2014/09/16 职场文书
2015年房地产销售工作总结
2015/04/20 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
Navicat for MySQL的使用教程详解
2021/05/27 MySQL
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL