首页 » Web前端 » php打开视频技巧_OpenCV02 读取视频显示视频保存视频

php打开视频技巧_OpenCV02 读取视频显示视频保存视频

访客 2024-12-06 0

扫一扫用手机浏览

文章目录 [+]

import cv2import numpy as npcap = cv2.VideoCapture(0) # 第一个摄像头if not cap.isOpened(): print("can not open camera") exit()while True: # 逐帧捕获 ret, frame = cap.read() # 如果精确读取帧,ret为True if not ret: print("Can't receive frame (stream end?). Exiting ...") break # 将当前帧转换为灰度图 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 显示结果帧 cv2.imshow('frame', gray) if cv2.waitKey(1) == ord('q'): break # 完成所有操作后,开释捕获器cap.release()cv2.destroyAllWindows()cap.read() 返回布尔值( True / False )。
如果精确读取了帧,它将为 True 。
因此,你可以通过检讨此返回值来检讨视频的结尾。
有时,cap可能尚未初始化捕获。
在这种情形下,此代码显示缺点。
你可以通过cap.isOpened()方法检讨它是否已初始化。
如果是 True ,那么确定是打开的。
否则,利用cap.open()打开它。
还可以利用 cap.get(propId) 方法访问该视频的某些功能,个中propId是0到18之间的一个数字。
每个数字表示视频的属性(如果适用于该视频),并且可以显示完全的详细信息在这里看到:cv2::VideoCapture::get()。
个中一些值可以利用cap.set(propId,value)进行修正。
value是想要的新值。
从文件播放视频

它与从相机捕获相同,只是用视频文件名变动摄像机索引。
其余,在显示框架时,请利用适当的韶光 cv.waitKey() 。
如果太小,则视频将非常快,但如果设置得太大,则视频将变得很慢。
正常情形下25毫秒就可以了。

import cv2import numpy as npcap = cv2.VideoCapture('vtest.avi')while cap.isOpened(): ret, frame = cap.read() if not ret: print("Can't receive frame (stream end?). Exiting ...") break gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) cv2.imshow('frame', gray) if cv2.waitKey(1) == ord('q'): breakcap.release()cv2.destroyAllWindows()保存视频

捕捉一个视频,一帧一帧地处理, 如果想要保存这个视频。
对付图像,它非常大略,只需利用 cv2.imwrite()。
但是对付视频而言,这里还须要做一些事情。
首先创建一个 VideoWriter 工具。
该当指定输出文件名(例如: output.avi)。
然后该当指定 FourCC 代码以及通报帧率的数量和帧大小。
末了一个是颜色标志。
如果为True ,编码器期望颜色帧,否则它与灰度帧一起事情。
FourCC:http://en.wikipedia.org/wiki/FourCC 是用于指定视频编解码器的4字节代码。
可用代码列表可在fourcc.org中:http://www.fourcc.org/codecs.php 找到。
它取决于平台。
遵照编解码器来说效果很好。

php打开视频技巧_OpenCV02 读取视频显示视频保存视频

在Fedora中:DIVX,XVID,MJPG,X264,WMV1,WMV2。
(最好利用XVID。
MJPG会天生大尺寸的视频。
X264会天生非常小的尺寸的视频)在Windows中:DIVX(尚待测试和添加)在OSX中:MJPG(.mp4),DIVX(.avi),X264(.mkv)。

FourCC代码作为MJPG的 cv2.VideoWriter_fourcc('M','J','P','G') or cv2.VideoWriter_fourcc('MJPG') 通报。
在从摄像机捕获的代码下面,沿垂直方向翻转每一帧并保存。

php打开视频技巧_OpenCV02 读取视频显示视频保存视频
(图片来自网络侵删)

import cv2import numpy as npcap = cv2.VideoCapture(0)# 定义编解码器并创建VideoWriter工具fourcc = cv2.VideoWriter_fourcc('XVID')out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))while cap.isOpend(): ret, frame = cap.read() if not ret: print("Can't receive frame (stream end?). Exiting ...") break frame = cv2.flip(frame, 0) # 写翻转的框架 out.write(frame) cv2.imshow('frame', frame) if cv2.waitKey(1) == ord('d'): break# 完成事情后开释所有内容cap.release()out.release()cv2.destroyAllWindows()

标签:

相关文章

php默认继续技巧_PHP封装与持续实例

public:方法或者属性在任何浸染域下都可以访问到,而且是默认的,如果没有为一个属性或方法指定访问润色符,它将是public。p...

Web前端 2024-12-08 阅读0 评论0

php常量教程技巧_PHP 常量详解教程

PHP 常量常量是单个值的标识符(名称)。在脚本中无法改变该值。有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。注释...

Web前端 2024-12-08 阅读0 评论0