1.背景
阅读官方文档/手册,学习openCV的过程中遇到的练习题,记录一下。
练习题
- 尝试找到一种方法来提取多个彩色对象,例如,同时提取红色,蓝色,绿色对象。
2. 代码部分
import cv2 as cv
import numpy as npcap = cv.VideoCapture(0)while (1):_, frame = cap.read()hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)lower_blue = np.array([106, 43, 46])upper_blue = np.array([130, 255, 255])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_R2res = cv.bitwise_and(frame, frame, mask=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测试了一下,效果还不错,范围内噪音也比较少。
实现方法肯定不止一种,如果您有其他方法,欢迎留言交流~