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合并两个字典的常用方法与效率比较
Jun 17 Python
Python中的默认参数实例分析
Jan 29 Python
使用Python读取安卓手机的屏幕分辨率方法
Mar 31 Python
Python异常处理操作实例详解
Aug 28 Python
python 获取页面表格数据存放到csv中的方法
Dec 26 Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 Python
python爬虫之快速对js内容进行破解
Jul 09 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
基于Python实现剪切板实时监控方法解析
Sep 11 Python
python实现飞机大战游戏(pygame版)
Oct 26 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
Feb 29 Python
Python 存取npy格式数据实例
Jul 01 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 随机排序广告的实现代码
2011/05/09 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
PHP基于文件存储实现缓存的方法
2015/07/20 PHP
PHP+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
扩展javascript的Date方法实现代码(prototype)
2010/11/20 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
浅谈Javascript实现继承的方法
2015/07/06 Javascript
js实现上传图片及时预览
2016/05/07 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
微信小程序实现图片预览功能
2018/01/31 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
vue-cli脚手架的安装教程图解
2018/09/02 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
python进阶教程之动态类型详解
2014/08/30 Python
python抽象基类用法实例分析
2015/06/04 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
介绍一下linux文件系统分配策略
2012/11/17 面试题
应届生程序员求职信
2013/11/05 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
关于读书的活动方案
2014/08/14 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
学校财务管理制度
2015/08/04 职场文书