python opencv根据颜色进行目标检测

  颜色目标检测就是根据物体的颜色快速进行目标定位。使用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的像素将视为红色。
  执行代码,结果如下:
在这里插入图片描述

总结

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

参考资料

https://www.pyimagesearch.com

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值