【P14 3-6 】OpenCV Python——视频加载、摄像头调用、视频基本信息获取(宽、高、帧率、总帧数)

文章目录

  • [1 读取本地视频](#1 读取本地视频)
    • [1.1 绝对路径 4种方式](#1.1 绝对路径 4种方式)
    • [1.2 相对路径 4种方式](#1.2 相对路径 4种方式)
    • [1.3 读取本地视频](#1.3 读取本地视频)
  • [2 视频基本信息](#2 视频基本信息)
  • [3 调用摄像头](#3 调用摄像头)

P14 3-6

1 读取本地视频

1.1 绝对路径 4种方式

python 复制代码
#cap=cv2.VideoCapture('E:\\Python\\opencv-master源码\\opencv-master\\opencv\\轮廓\\video.mp4')
#cap=cv2.VideoCapture("E:\\Python\\opencv-master源码\\opencv-master\\opencv\\轮廓\\video.mp4")
#cap=cv2.VideoCapture('E:/Python/opencv-master源码/opencv-master/opencv/轮廓/video.mp4')
cap=cv2.VideoCapture("E:/Python/opencv-master源码/opencv-master/opencv/轮廓/video.mp4")

1.2 相对路径 4种方式

1.3 读取本地视频

python 复制代码
import cv2
from cv2 import WINDOW_NORMAL
import numpy as np

# cv2.namedWindow('video',WINDOW_NORMAL)
cap=cv2.VideoCapture("E:/Python/opencv-master源码/opencv-master/opencv/轮廓/video.mp4")




while True:
     ret,frame=cap.read()
     cv2.imshow('video',frame)

     key=cv2.waitKey(20)

     #当按下q键,退出视频,qASCII值=113,Q=81,还可以写成ord('q')
     #if(key & 0xff ==ord('q')):
     if(key == 113):
        break

cv2.destroyWindow()

2 视频基本信息

python 复制代码
if(cap.read()):
    w=cap.get(CAP_PROP_FRAME_WIDTH)
    h=cap.get(CAP_PROP_FRAME_HEIGHT)
    fps=cap.get(CAP_PROP_FPS)
    count=cap.get(CAP_PROP_FRAME_COUNT)

    print('视频中图像宽度:%d' %(w))
    print('视频中图像高度:%d' %(w))
    print('视频的帧率:%d' %(fps))
    print('视频总帧数:%d' %(count))

3 调用摄像头

python 复制代码
import cv2

#创建VideoWriter为写多媒体文件
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
vw = cv2.VideoWriter('./out.mp4', fourcc, 25, (1280, 720))

#创建窗口
cv2.namedWindow('video', cv2.WINDOW_NORMAL)
cv2.resizeWindow('video', 640, 360)

#获取视频设备/从视频文件中读取视频帧
cap = cv2.VideoCapture(0)

#判断摄像头是否为打开关态
while cap.isOpened():
    #从摄像头读视频帧
    ret, frame = cap.read()

    if ret == True:
        #将视频帧在窗口中显示
        cv2.imshow('video', frame)
        #重新将窗口设备为指定大小
        cv2.resizeWindow('video', 640, 360)

        #写数据到多媒体文件
        vw.write(frame)

        #等待键盘事件,如果为q,退出
        key = cv2.waitKey(1)
        if(key & 0xFF == ord('q')):
            break
    else:
        break

#释放VideoCapture
cap.release()

#释放VideoWriter
vw.release()

#vw.release()
cv2.destroyAllWindows()
相关推荐
老白干1 小时前
jjwt 0.9.1 在 JDK 11+ 上的两个“坑”与完整解决方案
java·python·log4j
笨鸟先飞,勤能补拙7 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
长和信泰光伏储能8 小时前
京津冀光伏发电:绿色能源的未来之路
python·能源
浦信仿真大讲堂9 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
Gu Gu Study9 小时前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python
卷无止境10 小时前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境10 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python
lpfasd12310 小时前
MediaCrawler 项目深度分析
chrome·python·chrome devtools
Dxy123931021610 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
bamb0011 小时前
一个项目带你入门AI应用开发01
python