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 相关文章推荐
Django框架中的对象列表视图使用示例
Jul 21 Python
详解设计模式中的工厂方法模式在Python程序中的运用
Mar 02 Python
一文总结学习Python的14张思维导图
Oct 17 Python
对python3 urllib包与http包的使用详解
May 10 Python
解决python tkinter界面卡死的问题
Jul 17 Python
利用python计算windows全盘文件md5值的脚本
Jul 27 Python
使用python自动追踪你的快递(物流推送邮箱)
Mar 17 Python
解决python父线程关闭后子线程不关闭问题
Apr 25 Python
Python安装并操作redis实现流程详解
Oct 13 Python
Python办公自动化解决world文件批量转换
Sep 15 Python
Python 阶乘详解
Oct 05 Python
pandas进行数据输入和输出的方法详解
Mar 23 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
php curl的深入解析
2013/06/02 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
3种php生成唯一id的方法
2015/11/23 PHP
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
js阻止移动端页面滚动的两种方法
2017/01/25 Javascript
基于jQuery实现无缝轮播与左右点击效果
2018/05/13 jQuery
微信小程序用户位置权限的获取方法(拒绝后提醒)
2018/11/15 Javascript
react-router 路由切换动画的实现示例
2018/12/03 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
Python实现端口复用实例代码
2014/07/03 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
详解Python中open()函数指定文件打开方式的用法
2016/06/04 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
Python中作用域的深入讲解
2018/12/10 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
numpy基础教程之np.linalg
2019/02/12 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
网络通讯中,端口有什么含义,端口的取值范围
2012/11/23 面试题
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
员工升职自我评价
2019/03/26 职场文书
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript