如何在OpenCV蓝色检测程序中添加检测到蓝色时的打印功能?
检测到蓝色时执行打印操作的实现方案
你不需要用模板匹配,基于你现有的颜色检测代码就能实现需求。核心思路是:通过判断mask中是否存在被检测到的蓝色区域(即mask里的白色像素),来触发打印操作。
具体实现步骤
- 计算
mask中非零像素的数量:白色像素对应检测到的蓝色区域,非零像素数大于0就说明存在蓝色。 - 设置一个阈值(可根据实际场景调整,比如过滤少量噪点),当非零像素数超过阈值时,执行打印。
修改后的完整代码
import cv2 import numpy as np Fishisthere = cv2.imread("FishThere.jpg") img = Fishisthere[579:600, 850:1360] hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) lowerrange = np.array([106, 147, 0]) upperrange = np.array([179, 255, 245]) mask = cv2.inRange(hsv, lowerrange, upperrange) # 统计mask中白色像素(蓝色区域)的数量 blue_pixel_count = cv2.countNonZero(mask) # 判断是否检测到蓝色,阈值设为0可检测任意大小的蓝色区域,若有噪点可调高阈值(如50) if blue_pixel_count > 0: print("检测到蓝色!") else: print("未检测到蓝色!") cv2.imshow("edited", mask) cv2.waitKey(0) cv2.destroyAllWindows()
补充说明
cv2.countNonZero(mask)直接统计蓝色区域的像素数量,数值越大说明蓝色区域越明显。- 如果是实时摄像头检测场景,只需把单张图片读取逻辑替换为摄像头帧循环即可复用这套判断逻辑。
内容的提问来源于stack exchange,提问作者SpedEdRokay
相关产品推荐
相关产品推荐

