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 相关文章推荐
paramiko模块安装和使用(远程登录服务器)
Jan 27 Python
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
Jun 10 Python
python异常和文件处理机制详解
Jul 19 Python
python生成随机图形验证码详解
Nov 08 Python
python OpenCV学习笔记实现二维直方图
Feb 08 Python
对Python subprocess.Popen子进程管道阻塞详解
Oct 29 Python
python plotly绘制直方图实例详解
Jul 22 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
Django实现whoosh搜索引擎使用jieba分词
Apr 08 Python
Windows下Sqlmap环境安装教程详解
Aug 04 Python
python 可视化库PyG2Plot的使用
Jan 21 Python
python自动化八大定位元素讲解
Jul 09 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的知识
2006/11/17 PHP
php缓存技术介绍
2006/11/25 PHP
Discuz! Passport 通行证整合
2008/03/27 PHP
php iconv() : Detected an illegal character in input string
2010/12/05 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
javascript实现汉字转拼音代码分享
2015/04/20 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
Javascript简单实现面向对象编程继承实例代码
2015/11/27 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
[01:10:58]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
python实现TF-IDF算法解析
2018/01/02 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
2018/07/12 Python
pytorch中的上采样以及各种反操作,求逆操作详解
2020/01/03 Python
animation和transition的区别
2020/10/12 HTML / CSS
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
Servlet的生命周期
2013/08/25 面试题
党风廉政建设责任书
2014/04/14 职场文书
小学教师评语大全
2014/04/23 职场文书
法人委托书的范本格式
2014/09/11 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
开场白怎么写
2015/06/01 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js
MySQL数据库配置信息查看与修改方法详解
2022/06/25 MySQL