import numpy as np import cv2 # 要识别的颜色范围(红、绿、蓝) color_range = [ ((0, 100, 100), (10, 255, 255), "red"), ((36, 100, 100), (86, 255, 255), "green"), ((100, 100, 100), (130, 255, 255), "blue"), ((20, 100, 100), (30, 255, 255), "yellow") ] cap = cv2.VideoCapture(0) while True: # 获取每一帧图像 ret, frame = cap.read() # 将每一帧图像转换为 HSV 空间 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # 分别提取每种颜色的物体 for (lower, upper, color) in color_range: mask = cv2.inRange(hsv, lower, upper) # 对每种颜色的物体进行轮廓检测 contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) for cnt in contours: # 给每个物体标注一个矩形框 x, y, w, h = cv2.boundingRect(cnt) cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.putText(frame, color, (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) # 在图像上显示 cv2.imshow("frame", fra
时间: 2023-06-18 11:02:45 浏览: 107
me) # 按下 q 键退出 if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放摄像头资源和关闭所有窗口 cap.release() cv2.destroyAllWindows()
这是一个使用OpenCV实现颜色识别的程序。程序利用摄像头实时获取图像,然后将图像转换到HSV空间,通过设定的颜色范围提取出图像中对应的物体,并进行轮廓检测和矩形框标记。程序支持对红、绿、蓝、黄四种颜色的物体进行识别。
相关问题
# 图像读取和预处理import cv2import numpy as npdef read_img(img_path): img = cv2.imread(img_path) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img = img.astype(np.float32) / 255.0 return img# 数据增强from keras.preprocessing.image import ImageDataGeneratortrain_datagen = ImageDataGenerator( rescale=1./255, rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest')val_datagen = ImageDataGenerator(rescale=1./255)train_generator = train_datagen.flow_from_directory( train_dir, target_size=(150, 150), batch_size=32, class_mode='binary')validation_generator = val_datagen.flow_from_directory( validation_dir, target_size=(150, 150), batch_size=32, class_mode='binary')
这段代码是关于图像读取和预处理的,读取图片并进行处理,将图像转换为 RGB 格式,改变像素值的范围以便网络训练使用。同时,还包括数据增强的部分,通过对数据进行旋转、平移、拉伸、翻转等操作,增加数据集的多样性,提高模型的鲁棒性和泛化能力。最后,使用 Keras 提供的 ImageDataGenerator 类生成训练集和验证集的数据流。其中,训练集和验证集的图片都被缩放为 150x150 的大小,并且指定了 batch_size 和 class_mode 等参数。
import cv2 import numpy as np # 读取相机拍摄的图像 image = cv2.imread('3.jpg') # 将图像转换为HSV颜色空间 hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # 定义红色瓶盖的HSV颜色范围 lower_red = np.array([0, 50, 50]) upper_red = np.array([10, 255, 255]) # 根据颜色范围提取红色瓶盖的区域 mask = cv2.inRange(hsv, lower_red, upper_red)完善上述代码,显示结果
import cv2
import numpy as np
# 读取相机拍摄的图像
image = cv2.imread('3.jpg')
# 将图像转换为HSV颜色空间
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# 定义红色瓶盖的HSV颜色范围
lower_red = np.array([0, 50, 50])
upper_red = np.array([10, 255, 255])
# 根据颜色范围提取红色瓶盖的区域
mask = cv2.inRange(hsv, lower_red, upper_red)
# 显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Mask', mask)
cv2.waitKey(0)
cv2.destroyAllWindows()
阅读全文