栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

OpenCV学习笔记二:从文件或网络摄像头中载入视频

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenCV学习笔记二:从文件或网络摄像头中载入视频

学习了从网络摄像头或已有的视频文件载入视频。

两种途径一样的地方在于:

1、先导入cv2库

2、定义捕捉对象。

从网络摄像头中载入
import cv2

cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
   
    cv2.imshow("frame", frame)
    
    key = cv2.waitKey(1)
    if key == 27:
        break

cap.release()
cv2.destroyAllWindows()

code:cap = cv2.VideoCapture(0)

这个函数的功能是从摄像头中载入视频帧,括号里面的0代表是来自第一个网络摄像头,如果是来自第二个的话,把0变成1,以此类推。

这里使用while循环,ret, frame = cap.read(),如果cap读入一个帧,那么ret的值是True,否则是false,结束循环。

imshow的使用就和笔记一的图片一样。

    key = cv2.waitKey(1)
    if key == 27:
        break

上面的代码是判断键入的键是什么,27对应的是Ese,如果键入Ese的话,就跳出循环,结束执行。

从文件中载入
import cv2

cap = cv2.VideoCapture("red_panda_snow.mp4")

while True:
    ret, frame = cap.read()

    cv2.imshow("frame", frame)

    key = cv2.waitKey(25)
    if key == 27:
        break

cap.release()
cv2.destroyAllWindows()

同样,这里也使用cv2.VideoCapture()功能函数,只是括号里面的内容和前面从网络摄像头载入不一样了。

如果,视频文件就在python脚本的同一文件夹中,()里面只需要填写视频的文件名。

比如,上面所展示的那样:cap = cv2.VideoCapture("red_panda_snow.mp4")

如果,视频文件在电脑桌面或其他地方(和笔记一中图片是一个道理),那么()里填写路径和视频的文件名。

比如,cap = cv2.VideoCapture(r"C:UsersMYUSERDocumentsred_panda_snow.mp4")

值得注意的是,这个前面最好加上r,因为有时候python会把里面的 字母 认为是转义字符。

就像这样,会出现橙色的玩意

但如果加上r,就好了,变成赏心悦目的绿色了

运行代码,就开始播放视频(按Ese才可以关掉,右上角的叉叉不可以)

 从文件中载入视频,做适当处理后保存该视频
import cv2

cap = cv2.VideoCapture("red_panda_snow.mp4")
fourcc = cv2.VideoWriter_fourcc(*"XVID")
out = cv2.VideoWriter("flipped_red_panda.avi", fourcc, 25, (640, 360))
while True:
    ret, frame = cap.read()
    frame2 = cv2.flip(frame, 1)
    
    cv2.imshow("frame2", frame2)
    cv2.imshow("frame", frame)
    
    out.write(frame2)
    
    key = cv2.waitKey(25)
    if key == 27:
        break
out.release()
cap.release()
cv2.destroyAllWindows()

 在之前从文件中载入视频的基础上增加了一些代码,达到将视频水平翻转并保存的效果。

code:fourcc = cv2.VideoWriter_fourcc(*"XVID")

fourcc是Four-Character Codes(四字符代码),因而括号里需要填入四个字符。

一般写作cv2.VideoWriter_fourcc('X', 'V', 'I', 'D'),该参数是MPEG-4编码类型,文件名后缀为.avi。

上面的例子中,使用python中*操作符的用法(*用于参数前面,表示传入的参数将按照元组的形式存储),达到相同效果。

code:out = cv2.VideoWriter("flipped_red_panda.avi", fourcc, 25, (640, 360))

cv2.VideoWriter()

第一个参数"flipped_red_panda.avi"是要保存的文件名。第二个参数fourcc是指定编码器。都三个参数25是要保存的视频的帧率。第四个参数(640, 360)要保存的文件的画面尺寸。

code:frame2 = cv2.flip(frame, 1)

cv2.flip(filename, flipcode)

filename:需要操作的图像。flipcode:翻转方式  1为水平翻转。

最后将原视频所有的帧水平翻转后,写入out。

效果如下:

 

 

原文链接:Loading Video and Webcam - OpenCV 3.4 with python 3 Tutorial 2 - Pysource

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/870166.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号