python-opencv学习三:视频的相关操作(读取视频文件,显示视频,保存视频文件)

版权声明:转载请联系 :[email protected] https://blog.csdn.net/weixin_40928253/article/details/89786725

       主要使用的函数是:cv2.VideoCapture(),cv2.VideoWrite()。

 一、用摄像头捕获视频

      我们经常需要使用摄像头捕获实时图像。OpenCV 为这种应用提供了一个 非常简单的接口。让我们使用摄像头来捕获一段视频,并把它转换成灰度视频 显示出来。

废话不多说,直接上代码。(注释已经很详细了,说多了无益。:(  )

import cv2
#从摄像头读取图像
if __name__ == "__main__":
    # 获取摄像头0(本电脑摄像头)
    cap = cv2.VideoCapture(0)

    while (True):
        # 逐帧捕获
        ret, frame = cap.read()
        # 将摄像头获取的图像转为灰度图像
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        # 展示灰度图片
        cv2.imshow('frame', gray)
        # 按下ESC键退出
        k = cv2.waitKey(1)
        if k & k == 27:
            break
    cap.release()
    cv2.destroyAllWindows()

二、播放文件中的视频

      与从摄像头中捕获一样,你只需要把设备索引号改成视频文件的名字。在 播放每一帧时,使用 cv2.waiKey() 设置适当的持续时间。如果设置的太低视 频就会播放的非常快,如果设置的太高就会播放的很慢(你可以使用这种方法 控制视频的播放速度)。通常情况下 25 毫秒就可以了。

#从文件中读取图像并显示
if __name__ == "__main__":
    def ReadVideo(self):
        cap = cv2.VideoCapture('1.avi')
        while (cap.isOpened()):
            ret, frame = cap.read()
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
            cv2.imshow('frame', gray)
            k = cv2.waitKey(1)
            if k & k == 27:
                break
        cap.release()
        cv2.destroyAllWindows()

三、从摄像头中读取视频显示并保存为output.avi

贴上代码,过程就不演示了。(这属于入门级别的操作,代码注释很详细)

#从摄像头中读取图像并保存为output.avi
if __name__ == "__main__":
    cap = cv2.VideoCapture(0)
    #生成的视频格式设置为.avi(OpenCV只支持avi的格式,而且生成的视频文件不能大于2GB,而且不能添加音频)
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    # cv2.VideoWriter(视频名, 格式, 码率(fps), 帧的尺寸等参数)
    out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))

    while (cap.isOpened()):
        ret, frame = cap.read()
        if ret == True:
            #进行图像翻转, 1水平翻转、 0垂直翻转、-1水平垂直翻转
            frame = cv2.flip(frame,1)
            out.write(frame)
            cv2.imshow('frame', frame)
            #按下esc键退出
            if cv2.waitKey(1) & cv2.waitKey(1) == 27:
                break
        else:
            break
    cap.release()
    out.release()
    cv2.destroyAllWindows()

okk!!!

猜你喜欢

转载自blog.csdn.net/weixin_40928253/article/details/89786725
今日推荐