python opencv根据颜色进行目标检测的方法示例


Posted in Python onJanuary 15, 2020

颜色目标检测就是根据物体的颜色快速进行目标定位。使用cv2.inRange函数设定合适的阈值,即可以选出合适的目标。

建立项目colordetect.py,代码如下:

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import numpy as np
import cv2

def colorDetect():
 image = cv2.imread('./1.png')
 # 使用RGB颜色空间检测红 蓝 黄 灰,设置合适的阈值
 boundaries = [
 ([17, 15, 100], [50, 56, 200]),
 ([86, 31, 4], [220, 88, 50]),
 ([25, 146, 190], [62, 174, 250]),
 ([103, 86, 65], [145, 133, 128])
 ]

 for lower, upper in boundaries:
 lower = np.array(lower, dtype='uint8')
 upper = np.array(upper, dtype='uint8')
 # 低于lower和高于upper的像素为黑色,lower-upper之间的像素为白色
 mask = cv2.inRange(image, lower, upper)
 # 利用蒙版,进行图像的逻辑与运算
 output = cv2.bitwise_and(image, image, mask=mask)

 cv2.imshow('image', np.hstack([image, output]))
 cv2.waitKey(0)
 cv2.destroyAllWindows()

def main():
 colorDetect()

if __name__ == "__main__":
 main()

定义RGB颜色列表:

boundaries = [
 ([17, 15, 100], [50, 56, 200]),
 ([86, 31, 4], [220, 88, 50]),
 ([25, 146, 190], [62, 174, 250]),
 ([103, 86, 65], [145, 133, 128])
]

该部分([17, 15, 100], [50, 56, 200]),表示图像像素R>=100, B>=15, G>=15和R<=200, B<=56, G<=50的像素将视为红色。

执行代码,结果如下:

python opencv根据颜色进行目标检测的方法示例

总结

要检测图像中颜色,第一件事要做的就是定义像素值的上限和下限。不同的颜色空间具有不同上下限值,定义了上限和下限后,就可以调用cv2.inRange方法返回一个mask,将该mask与图像进行逻辑与bitwise_and就可以得到该图像。

参考资料
https://www.pyimagesearch.com

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
线程和进程的区别及Python代码实例
Feb 04 Python
python3使用pyqt5制作一个超简单浏览器的实例
Oct 19 Python
python 将md5转为16字节的方法
May 29 Python
python2与python3的print及字符串格式化小结
Nov 30 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
Python Tkinter 简单登录界面的实现
Jun 14 Python
用Python画一个LinkinPark的logo代码实例
Sep 10 Python
Python对接 xray 和微信实现自动告警
Sep 17 Python
Numpy之将矩阵拉成向量的实例
Nov 30 Python
Python class的继承方法代码实例
Feb 14 Python
pycharm 2020 1.1的安装流程
Sep 29 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 06 Python
Python基于Tensor FLow的图像处理操作详解
Jan 15 #Python
OpenCV哈里斯(Harris)角点检测的实现
Jan 15 #Python
Pytorch模型转onnx模型实例
Jan 15 #Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 #Python
详解Python实现进度条的4种方式
Jan 15 #Python
pytorch常见的Tensor类型详解
Jan 15 #Python
pytorch 常用线性函数详解
Jan 15 #Python
You might like
改变Apache端口等配置修改方法
2008/06/05 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
发一个自己用JS写的实用看图工具实现代码
2008/07/26 Javascript
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
用jquery实现等比例缩放图片效果插件
2010/07/24 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
2011/09/20 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
用js实现小球的自由移动代码
2013/04/22 Javascript
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
2014/08/13 Javascript
在 Express 中使用模板引擎
2015/12/10 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
jQuery双向列表选择器select版
2016/11/01 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
python计算对角线有理函数插值的方法
2015/05/07 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
Python中捕获键盘的方式详解
2019/03/28 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
Python socket服务常用操作代码实例
2020/06/22 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
浙大网新C/C++面试解惑
2015/05/27 面试题
《观舞记》教学反思
2014/04/16 职场文书
代理协议书
2014/04/22 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
怒海潜将观后感
2015/06/11 职场文书
总结会主持词
2015/07/02 职场文书
创业方案:赚钱的烧烤店该怎样做?
2019/07/05 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang