【机器视觉】OpenCV-Python 视频基本操作

简介: 【机器视觉】OpenCV-Python 视频基本操作
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
# 设置兼容中文
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
D:\Anaconda\AZWZ\lib\site-packages\numpy\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:
D:\Anaconda\AZWZ\lib\site-packages\numpy\.libs\libopenblas.NOIJJG62EMASZI6NYURL6JBKM4EVBGM7.gfortran-win_amd64.dll
D:\Anaconda\AZWZ\lib\site-packages\numpy\.libs\libopenblas.WCDJNK7YVMPZQ2ME2ZZHJJRJ3JIKNDB7.gfortran-win_amd64.dll
  warnings.warn("loaded more than 1 DLL from .libs:\n%s" %

1.视频文件的读取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I4ItiooG-1637755673389)(attachment:image.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5s26ix61-1637755673391)(attachment:image.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9lwfjjn0-1637755673394)(attachment:image.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UTKrGdcP-1637755673395)(attachment:image.png)]

# 获取视频对象
cap = cv.VideoCapture('viedo/DOG.wmv')
# 判断是否获取成功
print(cap.isOpened())
True


while(cap.isOpened()):
    # 获取每一帧的图像
    ret,frame = cap.read()
    # 获取成功显示图像
    if ret == True:
        cv.imshow('frame',frame)
    # 每一帧间隔25ms 当视频播放完毕,且按下q键时,会弹出循环
    if cv.waitKey(25) & 0xFF == ord('q'):
        break
# 释放视频对象
cap.release()
cv.destroyAllWindows()

2.视频文件的保存

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cfAq4FYP-1637755673397)(attachment:image.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cDP566f3-1637755673397)(attachment:image.png)]

# 读取视频
cap = cv.VideoCapture('viedo/DOG.wmv')
# 获取视频的宽和高
width = int(cap.get(3))
height = int(cap.get(4))
print("宽:",width,",高:",height)
宽: 444 ,高: 480


# 创建保存视频的对象,设置编码格式,帧率,图像的宽高等
out = cv.VideoWriter('viedo/outpy.avi',cv.VideoWriter_fourcc('M','J','P','G'),10,(width,height))
# 
while(True):
    ret,frame = cap.read()
    if ret==True:
        # 将每一帧图像写入一个文件中
        out.write(frame)
    else:
        # 读取完毕
        break
# 释放资源
cap.release()
out.release()
cv.destroyAllWindows()
print("保存成功!")
保存成功!

总结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y2og246l-1637755673399)(attachment:image.png)]

3.MeanShift实现视频追踪

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ojrfzjny-1637755673399)(attachment:image.png)]

# 获取视频
cap = cv.VideoCapture('viedo/DOG.wmv')
# 获取第一帧图像
ret,frame = cap.read()
# 指定第一帧图像上的目标位置 (行,高,列,宽)
r,h,c,w = 197,141,0,208
track_window = (c,r,w,h)
# 指定目标的感兴趣区域
roi = frame[r:r+h,c:c+w]
# 计算直方图
# 转换色彩空间(HSV)
hsv_roi = cv.cvtColor(roi,cv.COLOR_BGR2HSV)
# 计算直方图
roi_hist = cv.calcHist([hsv_roi],[0],None,[180],[0,180])
# 归一化 min_max归一化
cv.normalize(roi_hist,roi_hist,0,255,cv.NORM_MINMAX)
array([[2.3043747e+00],
       [3.1423289e-01],
       [5.2372152e-01],
       [9.4269872e-01],
       [3.1423289e-01],
       [9.6888477e-01],
       [4.6611214e+00],
       [1.3878620e+00],
       [4.5563769e+00],
       [4.3730745e+00],
       [1.4507086e+01],
       [5.4205173e+01],
       [8.2669441e+01],
       [6.8764633e+01],
       [6.6434074e+01],
       [7.7222733e+01],
       [2.5500000e+02],
       [4.2971348e+01],
       [1.5790203e+01],
       [2.3043747e+00],
       [1.5711645e+00],
       [2.6186076e-01],
       [1.0474430e-01],
       [1.3093038e-01],
       [7.8558221e-02],
       [0.0000000e+00],
       [1.3093038e-01],
       [5.2372150e-02],
       [1.0474430e-01],
       [2.6186075e-02],
       [2.6186076e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [2.0948860e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [2.0948860e-01],
       [0.0000000e+00],
       [3.1423289e-01],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [2.0948860e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [2.0948860e-01],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [1.7806531e+00],
       [8.3795440e-01],
       [6.2846577e-01],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [4.1897721e+00],
       [0.0000000e+00],
       [1.7806531e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.1521873e+00],
       [3.4827480e+00],
       [0.0000000e+00],
       [7.8034506e+00],
       [1.1521873e+00],
       [7.5939620e-01],
       [1.6759088e+00],
       [0.0000000e+00],
       [7.9605670e+00],
       [1.1521873e+00],
       [8.4842882e+00],
       [2.6186075e-02],
       [1.3093038e-01],
       [9.4269872e-01],
       [1.0474430e-01],
       [0.0000000e+00],
       [1.4926063e+00],
       [0.0000000e+00],
       [6.2846577e-01],
       [2.6186075e-02],
       [8.3795440e-01],
       [6.5465188e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [6.0227972e-01],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [2.4614911e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [8.3795440e-01],
       [0.0000000e+00],
       [2.0948860e-01],
       [5.2372152e-01],
       [5.2372152e-01],
       [1.0474430e-01],
       [4.1897720e-01],
       [5.2372152e-01],
       [1.0474430e-01],
       [2.6709797e+00],
       [1.0736290e+00],
       [8.3795440e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.3093038e-01],
       [1.3093038e-01],
       [1.3878620e+00],
       [4.1897720e-01],
       [1.2569315e+00],
       [3.1423289e-01],
       [2.0948860e-01]], dtype=float32)



# 目标追踪
# 设置窗口搜索终止条件,最大迭代次数,窗口中心飘移最小值
term_crit = (cv.TERM_CRITERIA_EPS | cv.TERM_CRITERIA_COUNT,10,1)
while(True):
    ret,frame = cap.read()
    if ret == True:
        # 计算直方图的反向投影
        hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)
        dst = cv.calcBackProject([hsv],[0],roi_hist,[0,180],1)
        # 进行meanshift目标追踪
        ret,track_window = cv.meanShift(dst,track_window,term_crit)
        # 将追踪的位置绘制在视频中
        x,y,w,h = track_window
        res = cv.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),2)
        cv.imshow('frame',res)
        # 终止
        if cv.waitKey(60) & 0xFF == ord('q'):
            break
    else:
        break
# 释放资源
cap.release()
cv.destroyAllWindows()

4.CamShift算法实现视频追踪

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rdo1qxJ8-1637755673400)(attachment:image.png)]

# 获取视频
cap = cv.VideoCapture('viedo/DOG.wmv')
# 获取第一帧图像
ret,frame = cap.read()
# 指定第一帧图像上的目标位置 (行,高,列,宽)
r,h,c,w = 197,141,0,208
track_window = (c,r,w,h)
# 指定目标的感兴趣区域
roi = frame[r:r+h,c:c+w]
# 计算直方图
# 转换色彩空间(HSV)
hsv_roi = cv.cvtColor(roi,cv.COLOR_BGR2HSV)
# 计算直方图
roi_hist = cv.calcHist([hsv_roi],[0],None,[180],[0,180])
# 归一化 min_max归一化
cv.normalize(roi_hist,roi_hist,0,255,cv.NORM_MINMAX)
array([[2.3043747e+00],
       [3.1423289e-01],
       [5.2372152e-01],
       [9.4269872e-01],
       [3.1423289e-01],
       [9.6888477e-01],
       [4.6611214e+00],
       [1.3878620e+00],
       [4.5563769e+00],
       [4.3730745e+00],
       [1.4507086e+01],
       [5.4205173e+01],
       [8.2669441e+01],
       [6.8764633e+01],
       [6.6434074e+01],
       [7.7222733e+01],
       [2.5500000e+02],
       [4.2971348e+01],
       [1.5790203e+01],
       [2.3043747e+00],
       [1.5711645e+00],
       [2.6186076e-01],
       [1.0474430e-01],
       [1.3093038e-01],
       [7.8558221e-02],
       [0.0000000e+00],
       [1.3093038e-01],
       [5.2372150e-02],
       [1.0474430e-01],
       [2.6186075e-02],
       [2.6186076e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [2.0948860e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [2.0948860e-01],
       [0.0000000e+00],
       [3.1423289e-01],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [2.0948860e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [2.0948860e-01],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [1.7806531e+00],
       [8.3795440e-01],
       [6.2846577e-01],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [4.1897721e+00],
       [0.0000000e+00],
       [1.7806531e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.1521873e+00],
       [3.4827480e+00],
       [0.0000000e+00],
       [7.8034506e+00],
       [1.1521873e+00],
       [7.5939620e-01],
       [1.6759088e+00],
       [0.0000000e+00],
       [7.9605670e+00],
       [1.1521873e+00],
       [8.4842882e+00],
       [2.6186075e-02],
       [1.3093038e-01],
       [9.4269872e-01],
       [1.0474430e-01],
       [0.0000000e+00],
       [1.4926063e+00],
       [0.0000000e+00],
       [6.2846577e-01],
       [2.6186075e-02],
       [8.3795440e-01],
       [6.5465188e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [6.0227972e-01],
       [0.0000000e+00],
       [1.0474430e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [2.4614911e+00],
       [0.0000000e+00],
       [1.0474430e-01],
       [8.3795440e-01],
       [0.0000000e+00],
       [2.0948860e-01],
       [5.2372152e-01],
       [5.2372152e-01],
       [1.0474430e-01],
       [4.1897720e-01],
       [5.2372152e-01],
       [1.0474430e-01],
       [2.6709797e+00],
       [1.0736290e+00],
       [8.3795440e-01],
       [0.0000000e+00],
       [0.0000000e+00],
       [0.0000000e+00],
       [1.3093038e-01],
       [1.3093038e-01],
       [1.3878620e+00],
       [4.1897720e-01],
       [1.2569315e+00],
       [3.1423289e-01],
       [2.0948860e-01]], dtype=float32)



# 目标追踪
# 设置窗口搜索终止条件,最大迭代次数,窗口中心飘移最小值
term_crit = (cv.TERM_CRITERIA_EPS | cv.TERM_CRITERIA_COUNT,10,1)
while(True):
    ret,frame = cap.read()
    if ret == True:
        # 计算直方图的反向投影
        hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)
        dst = cv.calcBackProject([hsv],[0],roi_hist,[0,180],1)
        # 进行meanshift目标追踪
        ret,track_window = cv.CamShift(dst,track_window,term_crit)
        # 将追踪的位置绘制在视频中
        pts = cv.boxPoints(ret)
        pts = np.int0(pts)
        res = cv.polylines(frame,[pts],True,255,2)
        cv.imshow('frame',res)
        # 终止
        if cv.waitKey(60) & 0xFF == ord('q'):
            break
    else:
        break
# 释放资源
cap.release()
cv.destroyAllWindows()

总结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pasHYwxz-1637755673400)(attachment:image.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AZPV71Mc-1637755673402)(attachment:image.png)]

目录
相关文章
|
2月前
|
编解码 数据安全/隐私保护 Python
抖音批量发布视频工具,自动上传视频作品笔记,python发布软件
这个抖音批量发布工具包含三个主要模块:主上传程序、配置文件和视频预处理工具。主程序
|
3月前
|
数据采集 机器学习/深度学习 编解码
从零复现Google Veo 3:从数据预处理到视频生成的完整Python代码实现指南
本文详细介绍了一个简化版 Veo 3 文本到视频生成模型的构建过程。首先进行了数据预处理,涵盖了去重、不安全内容过滤、质量合规性检查以及数据标注等环节。
243 5
从零复现Google Veo 3:从数据预处理到视频生成的完整Python代码实现指南
|
2月前
|
API 数据安全/隐私保护 Python
小红书批量发布协议, 抖音自动批量发布软件脚本,笔记作品视频自动发布工具【python】
这个工具框架包含了小红书和抖音的批量发布功能,支持图片和视频处理、定时发布等功能
|
2月前
|
Web App开发 数据安全/隐私保护 Python
快手批量发布作品工具,自动上传视频发布软件,python实现自动脚本
这个脚本实现了快手批量上传视频的功能,包含登录、上传视频、添加描述和发布等完整流程
|
2月前
|
数据安全/隐私保护 Python
快手自动上传视频脚本,图文视频批量发布工具,快手批量发布作品软件【python】
快手批量上传工具提供了完整的视频和图文上传功能,包含登录验证、文件上传、标题设置
|
2月前
|
Web App开发 数据安全/隐私保护 Python
抖音快手小红书哔哩哔哩,批量发布作品笔记视频工具,自动发布作品上传笔记视频【python】
这个工具实现了四大平台的视频批量上传功能,包含完整的异常处理和日志记录。使用时需要配置
|
2月前
|
JSON API 数据安全/隐私保护
批量上传发布视频的软件,小红书抖音快手哔哩哔哩,自动发布上传作品工具【python】
这个项目包含完整的视频批量上传功能,支持多个平台,包含视频处理、配置管理和错误处理等功能
|
11月前
|
计算机视觉
Opencv学习笔记(八):如何通过cv2读取视频和摄像头来进行人脸检测(jetson nano)
如何使用OpenCV库通过cv2模块读取视频和摄像头进行人脸检测,并提供了相应的代码示例。
382 1
|
6月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的反诈视频宣传管理系统源码+运行步骤
基于Python+Vue开发的反诈视频宣传管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的反诈宣传管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
78 6
|
6月前
|
Python
Python如何给视频添加音频和字幕
通过以上方法和代码示例,你可以在Python中成功实现视频的音频和字幕添加。确保理解每一步的实现细节,应用到实际项目中时能有效地处理各种视频编辑需求。
280 20

推荐镜像

更多