美文网首页
屏幕录制与GIF转换---OpenCV-Python开发指南(4

屏幕录制与GIF转换---OpenCV-Python开发指南(4

作者: 极客学编程 | 来源:发表于2021-05-16 17:43 被阅读0次

    常规应用

    对于程序员来说,在实际的生活中,对于一些简单的程序,往往都是使用自己编写的代码。毕竟学以致用才能熟练掌握,而OpenCV在生活中最常用的一些功能包括:将视频转换为GIF、录制屏幕,图片格式转换等等等等。

    这些小程序说实话从网上下载往往会有很多的病毒,而使用PS或者PR的门槛对于有些人来说又有点高,那怎么办呢?自己动手丰衣足食。

    视频转换为GIF

    在前面的博文中,我们已经介绍了视频的相关操作。

    对于视频来说,其是由一帧一帧的图像构成的,同样的GIF图片也是。所以,我们可以将需要转换的视频,保存为单个图像的集合,然后转换为GIF图片。代码如下所示:

    import cv2
    import imageio
    
    cap = cv2.VideoCapture("45.mp4")
    all_frames = []
    while (cap.isOpened()):
        ret, frame = cap.read()
        if ret is False:
            break
        all_frames.append(frame)
        cv2.imshow('video', frame)
        c = cv2.waitKey(1)
        if c == 27:
            break
    cap.release()
    cv2.destroyAllWindows()
    gif = imageio.mimsave('result.gif', all_frames, 'GIF')
    

    运行之后,效果如下:


    1.gif

    当然,这种是使用OpenCV与imageio。其实,我们还有更简单的直接将视频转换为GIF,不过因为是讲解OpenCV所以稍微复杂了点。下面是最简单的GIF转换代码:

    from moviepy.editor import *
    
    clip = (VideoFileClip("45.mp4"))
    clip.write_gif("result.gif")
    

    三行代码即可,使用之前,通过如下命令安装moviepy库:

    pip install moviepy -i https://pypi.tuna.tsinghua.edu.cn/simple
    

    录制屏幕

    在实际的电脑办公中,除了需要将视频转换为GIF动图以外,我们可能还有很多时候会用到录制屏幕的操作。具体实现步骤如下:

    from PIL import ImageGrab
    import numpy as np
    import cv2
    
    fps = 30
    
    curScreen = ImageGrab.grab()  # 获取屏幕对象
    height, width = curScreen.size
    video = cv2.VideoWriter('45.avi', cv2.VideoWriter_fourcc(*'XVID'), fps, (height, width))
    while True:
        frame = ImageGrab.grab()  # 抓取屏幕
        frame = cv2.cvtColor(np.array(frame), cv2.COLOR_RGB2BGR)
        # 显示无图像的窗口
        cv2.imshow('recording', np.zeros((1, 255), np.uint8))
        # 控制窗口显示位置,右下角
        cv2.moveWindow('recording', height - 100, width - 100)
        video.write(frame)
        # 退出条件
        c = cv2.waitKey(1)
        if c == 27:
            break
    video.release()
    cv2.destroyAllWindows()
    

    这里,我们通过ImageGrab获取屏幕的宽高,然后录制视频,同时通过ESC键退出录制。

    相关文章

      网友评论

          本文标题:屏幕录制与GIF转换---OpenCV-Python开发指南(4

          本文链接:https://www.haomeiwen.com/subject/smkelltx.html