Python-opencv实现红绿两色识别操作


Posted in Python onJune 04, 2020

1.颜色空间转换(RGB转HSV)

为了较准确的调红色和绿色的HSV,我使用cv2.createTrackbar()函数创建了六个滚动条

#创建HSV最低滚动条
cv2.createTrackbar('H_min','image',35,180,nothing)
cv2.createTrackbar('S_min','image',43,255,nothing)
cv2.createTrackbar('V_min','image',46,255,nothing)

#创建HSV最高滚动条
cv2.createTrackbar('H_max','image',0,180,nothing)
cv2.createTrackbar('S_max','image',255,255,nothing)
cv2.createTrackbar('V_max','image',255,255,nothing)

Python-opencv实现红绿两色识别操作

实际效果如图

Python-opencv实现红绿两色识别操作

Python-opencv实现红绿两色识别操作

2.识别颜色并画矩形框

颜色阈值已经确定了,这就可以进行颜色识别了。

为了让识别更稳定,在代码中加入自适应阈值。

th_img = cv2.adaptiveThreshold(mask,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY_INV,5,2)

3.画矩形框

使用函数cv2.findContours()来检测物体轮框

再使用函数cv2.boundingRect()查找最小矩形框

使用函数cv2.rectangle()画出

contours_green,hierarchy = cv2.findContours(th_green,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
contours_red,hierarchy = cv2.findContours(th_red,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for red in contours_red:
 x_red,y_red,w_red,h_red = cv2.boundingRect(red)
 if w_red>width|h_red>height:
 cv2.rectangle(img,(x_red,y_red),((x_red+h_red),(y_red+w_red)),(0,255,0),1)
for red in contours_red:
 x_red,y_red,w_red,h_red = cv2.boundingRect(red)
 if w_red>width|h_red>height:
 cv2.rectangle(img,(x_red,y_red),((x_red+h_red),(y_red+w_red)),(0,255,0),1)

为了凸显出颜色的差距,我使用绿色的矩形框,画红色的物体,用红色的矩形框画绿色物体

Python-opencv实现红绿两色识别操作

以上这篇Python-opencv实现红绿两色识别操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
为python设置socket代理的方法
Jan 14 Python
python实现微信接口(itchat)详细介绍
Oct 23 Python
python实现校园网自动登录的示例讲解
Apr 22 Python
解决DataFrame排序sort的问题
Jun 07 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
新年快乐! python实现绚烂的烟花绽放效果
Jan 30 Python
解决Python3 被PHP程序调用执行返回乱码的问题
Feb 16 Python
pytorch使用 to 进行类型转换方式
Jan 08 Python
pyecharts在数据可视化中的应用详解
Jun 08 Python
python中K-means算法基础知识点
Jan 25 Python
python库sklearn常用操作
Aug 23 Python
Python基于pandas绘制散点图矩阵代码实例
Jun 04 #Python
Python使用plt.boxplot() 参数绘制箱线图
Jun 04 #Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
Jun 04 #Python
Python中操作各种多媒体,视频、音频到图片的代码详解
Jun 04 #Python
Python简单实现词云图代码及步骤解析
Jun 04 #Python
Python坐标轴操作及设置代码实例
Jun 04 #Python
Python flask框架实现查询数据库并显示数据
Jun 04 #Python
You might like
基于php中使用excel的简单介绍
2013/08/02 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
ZendFramework2连接数据库操作实例
2017/04/18 PHP
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
JavaScript驾驭网页-CSS与DOM
2016/03/24 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
2018/05/28 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
JavaScript 实现下雪特效的示例代码
2020/09/09 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
开源Web应用框架Django图文教程
2017/03/09 Python
使用Python实现一个栈判断括号是否平衡
2018/08/23 Python
使用tensorflow实现线性svm
2018/09/07 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
Python descriptor(描述符)的实现
2020/11/15 Python
Java程序员综合测试题
2014/04/25 面试题
英语翻译系毕业生求职信
2013/09/29 职场文书
离婚协议书的书写要求
2014/09/17 职场文书
检讨书之工作不认真
2019/08/14 职场文书
德生2P3收音机开箱评测
2022/04/30 无线电
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL
springboot 全局异常处理和统一响应对象的处理方式
2022/06/28 Java/Android