热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[OpenCV练习题实现]尝试找到一种方法来提取多个彩色对象,例如,同时提取红色,蓝色,绿色对象。

1.背景阅读官方文档手册,学习openCV的过程中遇到的练习题,记录一下。练习题尝试找到一种方法来提取多个彩色对象,例如࿰
1.背景

阅读官方文档/手册,学习openCV的过程中遇到的练习题,记录一下。

练习题

  1. 尝试找到一种方法来提取多个彩色对象,例如,同时提取红色,蓝色,绿色对象。

2. 代码部分

import cv2 as cv
import numpy as npcap = cv.VideoCapture(0)while (1):# 读取帧_, frame = cap.read()# 转换颜色空间 BGR 到 HSVhsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)# 定义HSV中蓝色的范围lower_blue = np.array([106, 43, 46])upper_blue = np.array([130, 255, 255])# 设置HSV的阈值使得只取蓝色mask_B = cv.inRange(hsv, lower_blue, upper_blue)lower_green = np.array([35, 43, 46])upper_green = np.array([77, 255, 255])mask_G = cv.inRange(hsv, lower_green, upper_green)lower_red1 = np.array([0, 43, 46])upper_red1 = np.array([20, 255, 255])mask_R1 = cv.inRange(hsv, lower_red1, upper_red1)lower_red2 = np.array([150, 43, 46])upper_red2 = np.array([180, 255, 255])mask_R2 = cv.inRange(hsv, lower_red2, upper_red2)mask=mask_B+mask_G+mask_R1+mask_R2#mask = mask_R1 + mask_R2# dst = cv.inRange( src, lowerb, upperb[, dst] )# 将掩膜和图像逐像素相加res = cv.bitwise_and(frame, frame, mask=mask)# dst = cv.bitwise_and( src1, src2[, dst[, mask]] )cv.imshow('frame', frame)cv.imshow('mask', mask)cv.imshow('res', res)k = cv.waitKey(5) & 0xFFif k == 27:break
cv.destroyAllWindows()

3. 演示效果

用Ipad测试了一下,效果还不错,范围内噪音也比较少。

在这里插入图片描述
实现方法肯定不止一种,如果您有其他方法,欢迎留言交流~


推荐阅读
author-avatar
话说的爱
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有