python视频事物分析

使用 OpenCV 和 Hugging Face 的transformers库中的预视视觉模型来分析视频内容

依赖库

python 复制代码
pip install opencv-python transformers torch

代码

python 复制代码
import cv2
import torch
from transformers import pipeline

# 加载预训练的目标检测模型
detector = pipeline("object-detection", model="facebook/detr-resnet-50")

def analyze_video(video_path):
    # 打开视频文件
    cap = cv2.VideoCapture(video_path)
    frame_count = 0

    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break  # 视频读取完成

        # 每隔一定帧数分析一次
        if frame_count % 30 == 0:  # 每 30 帧分析一次,可以根据需要调整
            # 将帧转换为RGB格式
            rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

            # 使用模型进行目标检测
            results = detector(rgb_frame)

            # 输出检测结果
            print(f"Frame {frame_count}:")
            for obj in results:
                label = obj['label']
                score = obj['score']
                box = obj['box']
                print(f"Detected: {label}, Confidence: {score:.2f}")
                
                # 在帧上绘制检测结果
                x1, y1, x2, y2 = int(box['xmin']), int(box['ymin']), int(box['xmax']), int(box['ymax'])
                cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
                cv2.putText(frame, f"{label} ({score:.2f})", (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

            # 显示带有检测结果的帧
            cv2.imshow("Video Analysis", frame)
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break

        frame_count += 1

    # 释放视频捕获对象并关闭窗口
    cap.release()
    cv2.destroyAllWindows()

# 示例用法
video_path = 'path_to_your_video.mp4'  # 替换为实际视频路径
analyze_video(video_path)
  • 使用OpenCV逐帧读取视频,把每第30帧作为分析帧。
  • 通过拥抱人脸的detr-resnet-50模型检测视频帧中的物体,模型会输出每个物体的类别、置信度和位置。
  • 将检测结果以校正框和标签形态差在视频帧上,然后查看识别效果。
  • 每个分析帧的检测结果都会在控制台输出,同时在窗口中显示。
相关推荐
sduwcgg4 分钟前
kaggle配置
人工智能·python·机器学习
沐知全栈开发11 分钟前
MongoDB 创建数据库
开发语言
__lost26 分钟前
Python图像变清晰与锐化,调整对比度,高斯滤波除躁,卷积锐化,中值滤波钝化,神经网络变清晰
python·opencv·计算机视觉
ErizJ29 分钟前
Golang | 迭代器模式
开发语言·golang·迭代器模式
海绵波波10731 分钟前
玉米产量遥感估产系统的开发实践(持续迭代与更新)
python·flask
牙痛不能吃糖,哭33 分钟前
C++面试复习日记(8)2025.4.25,malloc,free和new,delete的区别
开发语言·c++
健康的猪36 分钟前
golang的cgo的一点小心得
开发语言·后端·golang
夜夜敲码1 小时前
C语言教程(十六): C 语言字符串详解
c语言·开发语言
宋康1 小时前
C语言结构体和union内存对齐
c语言·开发语言
逢生博客1 小时前
使用 Python 项目管理工具 uv 快速创建 MCP 服务(Cherry Studio、Trae 添加 MCP 服务)
python·sqlite·uv·deepseek·trae·cherry studio·mcp服务