python+opencv识别四种颜色,框定并标注

import cv2 as cv
import numpy as np

# 读取视频
capture = cv.VideoCapture(0)
height = capture.get(cv.CAP_PROP_FRAME_HEIGHT)
width = capture.get(cv.CAP_PROP_FRAME_WIDTH)
count = capture.get(cv.CAP_PROP_FRAME_COUNT)
fps = capture.get(cv.CAP_PROP_FPS)
print(height, width, count, fps)

ball_color = ['green','red','blue']

def process(image, opt=1):
    # RGB转HSV色彩空间
    hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
    # 结构元素
    line = cv.getStructuringElement(cv.MORPH_RECT, (15, 15), (-1, -1))
    # HSV范围
    mask_red = cv.inRange(hsv, (0,60,60), (50,255,255))
    mask_blue = cv.inRange(hsv, (100, 80, 46), (124,255,255))
    mask_green = cv.inRange(hsv, (35,43,35), (90,255,255))
    mask_yellow = cv.inRange(hsv,(11,34,43),(46,255,255))

    # 开操作
    masks = [mask_red,mask_blue,mask_green,mask_yellow]
    
    # 轮廓提取, 发现最大轮廓
    i = 1
    for mask in masks:

        contours, hierarchy = cv.findCo
### 使用OpenCV进行人脸识别 #### 准备工作 为了使用OpenCV进行人脸识别,需先准备好所需的数据集和环境配置。可以从GitHub网站下载开源人脸特征数据[^2]。 #### 加载预训练模型 加载用于检测面部的Haar级联分类器是一个重要的步骤。通常使用的文件名为`haarcascade_frontalface_default.xml`,该文件应放置于项目构建目录下以便顺利读取[^4]。 ```python import cv2 # 定义路径至Haar级联文件 cascade_path = 'path_to_your_build_directory/haarcascade_frontalface_default.xml' # 创建CascadeClassifier对象加载Haar级联描述符 face_cascade = cv2.CascadeClassifier(cascade_path) ``` #### 图像处理与脸部定位 通过调用`detectMultiScale()`方法来执行实际的脸部检测操作。此函数返回一系列矩形坐标,这些坐标框定了图像中可能存在的所有人脸区域[^3]。 ```python def detect_faces(image): gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 转换为灰度图 faces = face_cascade.detectMultiScale(gray_image, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) return faces ``` #### 训练识别器 对于更高级的应用场景,可以采用Eigenfaces(特征脸)、Fisherfaces或LBPH(局部二值模式直方图)算法来进行进一步的身份验证。这一步骤涉及创建一个LBP Histogram recognizer实例,利用已标注好的样本集对其进行训练[^1]。 ```python recognizer = cv2.face.LBPHFaceRecognizer_create() images = [] # 存储训练图片 labels = [] # 对应标签列表 for person_id in range(number_of_people): subject_images_dir = f'dataset/person_{person_id}/' # 假设每个人有自己的子文件夹 for image_name in os.listdir(subject_images_dir): img = cv2.imread(os.path.join(subject_images_dir, image_name), cv2.IMREAD_GRAYSCALE) images.append(img) labels.append(person_id) recognizer.train(images, np.array(labels)) # 开始训练过程 ``` #### 预测新面孔身份 完成上述准备工作之后,在实时视频流或其他静态照片上应用之前定义过的`detect_faces()`函数获取待预测的目标面庞;随后借助已经过训练的学习机对捕捉到的人脸实施类别归属判定。 ```python camera_capture = cv2.VideoCapture(0) # 打开摄像头设备 while True: ret, frame = camera_capture.read() detected_faces = detect_faces(frame) for (x,y,w,h) in detected_faces: roi_gray = gray_frame[y:y+h,x:x+w] label, confidence = recognizer.predict(roi_gray) predicted_person = get_person_info(label) # 自定义函数映射ID到具体人物信息 draw_rectangle(frame,(x,y),(x+w,y+h)) # 绘制边框标记被发现的对象 put_text_on_image(frame,predicted_person) # 显示名称文字说明 show_video_window('Live Face Recognition',frame)# 实时显示窗口内容 ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值