Python数据分析(OpenCV视频处理)

处理视频我们引入的还是numpy 和 OpenCV 的包

引入方式如下:

import numpy as np

import cv2

我们使用OpenCV来加载本地视频,参数就是你视频的路径就可以

#加载视频

cap = cv2.VideoCapture('./1.mp4')

下面我们进行读取视频

#读取视频

flag,frame = cap.read()

读取视频的方法会返回两结果,flag表示是否读完 frame是读取的图像

我们可以获取图像的宽高等等

#获取帧数

cap.get(cv2.CAP_PROP_FPS)

#获取宽度

cap.get(cv2.CAP_PROP_FRAME_WIDTH)

下面是两个例子

第一个读取本地视频,并识别视频中的人脸,这里获取人脸的特征数据在上篇文章中已说明,这里不多说

python 复制代码
#读取视频
cap = cv2.VideoCapture('./1.mp4')
#添加人脸特征
detector = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')
#读取视频并进行人脸识别
while cap.isOpened():
    flag,frame = cap.read()
    gray = cv2.cvtColor(frame,code=cv2.COLOR_BGR2GRAY)
    face_zone = detector.detectMultiScale(gray,scaleFactor=1.2,minNeighbors=5)
    for x,y,w,h in face_zone:
        cv2.circle(frame,center=(x+w//2,y+h//2),radius=w//2,color =[0,0,255],thickness=2)
    if flag == False:
        break;
    cv2.imshow('ll',frame)
    if ord('q') == cv2.waitKey(81):
        break
cv2.destroyAllWindows()
cap.release()

第二个例子, 我们调用本地摄像头,识别人脸,并将视频储存到本地

python 复制代码
#cv2 打开本地摄像头  识别人脸 并保存视频
cap = cv2.VideoCapture(0)
w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))+1
h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))+1
#保存的视频格式有很多种,大家可以自己从网上查一下对应的标识
videoWriter = cv2.VideoWriter('./my.mp4',cv2.VideoWriter_fourcc('M','P','4','v'),24,(w,h))
detector = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')
while cap.isOpened():
    falg,frame = cap.read()
    if falg == False:
        break;
    gray = cv2.cvtColor(frame,code=cv2.COLOR_BGR2GRAY)
    face_zone = detector.detectMultiScale(gray,scaleFactor=1.2,minNeighbors=5)
    for x,y,w,h in face_zone:
        cv2.circle(frame,circle=(x+w//2,y+h//2),radius=w//2,color =[0,0,255],thickness=2)
    videoWriter.write(frame)
    if falg == False:
        break;
    cv2.imshow('ll',frame)
    if ord('q') == cv2.waitKey(20):
        break;
cv2.destroyAllWindows();
cap.release();
videoWriter.release();
相关推荐
I Am a robert girl7 小时前
稀有事件估计的迭代去对齐:从源码视角拆解重要性采样新范式
开发语言·python·机器学习·重要性采样·蒙特卡洛方法·稀有事件估计
天若有情6737 小时前
开源|Comfort Lang v1.0.1,一款主打清爽交互的新型命令式编程语言
python·开源·交互·编程语言·项目分享·repl·comfort lang
打工仔折腾 AI8 小时前
System Prompt 替代 Few-shot:用规则约束大模型输出的省钱实践
java·人工智能·python·spring·langchain·prompt·ai agent 实战
打工仔折腾 AI8 小时前
从零写一个CAD 05:以鼠标为中心的滚轮缩放,招法能复用但顺序不能反
开发语言·后端·python·性能优化·计算机外设·swift·ai agent 实战
for_ever_love__8 小时前
控制流——if、for、while 与可迭代对象
python·大模型开发·循环·控制流
for_ever_love__8 小时前
PyTorch 张量与 autograd——自动求导怎么工作
pytorch·python·深度学习·自动求导
小小张说故事9 小时前
Python 里 `is` 和 `==` 到底差在哪?5 个让你怀疑人生的案例 + 对照表
python
XLYcmy9 小时前
PDF 论文处理器 — 改进方向与建议文档
python·pdf·llm·agent·dify·rag·harness
青柠之夏cc9 小时前
前端拖拽功能原生实现,不引入拖拽库完成业务
开发语言·前端·python
曾晓森9 小时前
OpenAI 兼容 API 接入山猫云:先核对分组和价格,再发最小请求
网络·python