python读取摄像头或者视频文件、并在gui中实时显示_Python opencv第2个程序:读取摄像头内容,并写入视频文件...

一、实例代码

# coding:utf-8

import cv2

import sys

cap = cv2.VideoCapture(0) # 0号摄像头,也可以1、2,lsusb查看

# 使用函数 cap.get(propId) 来获得视频的一些参数信息

fps = cap.get(cv2.cv.CV_CAP_PROP_FPS) # 获得码率

size = (int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)), # 获得尺寸

int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)))

# 使用cap.set(propId, value)设置视频的一些参数信息

cap.set(3,640)

cap.set(4,480)

cap.set(1, 10.0)

fourcc = cv2.VideoWriter_fourcc('M', 'J', 'P', 'G') # 设置要保存视频的格式。

out = cv2.VideoWriter('output2.avi', fourcc,10,(640,480)) # 设置输出视频的名称,视频的格式,视频的帧速,视频的大小等。

# 第三个参数则镜头快慢的,10为正常,小于10为慢镜头

while(cap.isOpened()): #若初始化摄像头或者打开视频文件成功,isOpened()返回值是True,则表明成功,否则返回值是False

ret,frame = cap.read()

if ret == True:

frame = cv2.flip(frame, 1) # 函数flip可以实现图像的垂直、水平以及同时垂直水平变换

# 第一个参数表示要旋转的视频,第二个参数表示旋转的方向

# 等于0表示绕x轴旋转,大于0的数表示绕y轴旋转,小于0的负数表示绕x和y轴旋转。

a = out.write(frame) # 将摄像头内容写入视频文件

cv2.imshow("frame", frame) # 显示摄像头当前帧内容

if cv2.waitKey(1) & 0xFF == ord('q'): # ord() 将ASCLL码值转换为字符

break

else:

break

cap.release()

out.release()

cv2.destroyAllWindows()

二、一些补充

在上述代码中,已经对内容进行了详细的注释,仔细阅读应该可以轻松掌握。在此处只对一些属性方法做一些备注,以备使用时查询。

1、VideoWriter类中支持的视频格式

# OpenCV提供的格式是未经过压缩的,目前支持的格式如下:

CV_FOURCC('P', 'I', 'M', '1') = MPEG-1 codec

CV_FOURCC('M', 'J', 'P', 'G') = motion-jpeg codec

CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec

CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec

CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec

CV_FOURCC('U', '2', '6', '3') = H263 codec

CV_FOURCC('I', '2', '6', '3') = H263I codec

CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec

# 视频格式包括:

# I420(适合处理大文件) -> .avi;

# PIMI -> .avi;

# MJPG -> .avi & .mp4

# THEO -> .ogv;

# FLV1(flash video, 流媒体视频) -> .flv

2、获取视频的参数信息

使用函数 cap.get(propId) 来获得视频的一些参数信息,使用cap.set(propId, value)设置视频的一些参数信息,propId的值从0到18分别为:

CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds or video capture timestamp.

CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.

CV_CAP_PROP_POS_AVI_RATIO Relative position of the video file: 0 - start of the film, 1 - end of the film.

CV_CAP_PROP_FRAME_WIDTH 视频每一帧的宽。

CV_CAP_PROP_FRAME_HEIGHT 视频每一帧的高。

CV_CAP_PROP_FPS 视频的帧速。

CV_CAP_PROP_FOURCC 4个字符表示的视频编码器格式。

CV_CAP_PROP_FRAME_COUNT 视频的帧数。

CV_CAP_PROP_FORMAT Format of the Mat objects returned byretrieve().

CV_CAP_PROP_MODE Backend-specific value indicating the current capture mode.

CV_CAP_PROP_BRIGHTNESS Brightness of the image (only for cameras).

CV_CAP_PROP_CONTRAST Contrast of the image (only for cameras).

CV_CAP_PROP_SATURATION Saturation of the image (only for cameras).

CV_CAP_PROP_HUE Hue of the image (only for cameras).

CV_CAP_PROP_GAIN Gain of the image (only for cameras).

CV_CAP_PROP_EXPOSURE Exposure (only for cameras).

CV_CAP_PROP_CONVERT_RGB Boolean flags indicating whether images should be converted to RGB.

CV_CAP_PROP_WHITE_BALANCE Currently not supported

CV_CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently)

你可能感兴趣的:(并在gui中实时显示)