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

简介: 屏幕录制与GIF转换---OpenCV-Python开发指南(46)

常规应用


对于程序员来说,在实际的生活中,对于一些简单的程序,往往都是使用自己编写的代码。毕竟学以致用才能熟练掌握,而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')


运行之后,效果如下:

当然,这种是使用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键退出录制。

相关文章
|
数据采集 存储 XML
深入浅出:基于Python的网络数据爬虫开发指南
【2月更文挑战第23天】 在数字时代,数据已成为新的石油。企业和个人都寻求通过各种手段获取互联网上的宝贵信息。本文将深入探讨网络爬虫的构建与优化,一种自动化工具,用于从网页上抓取并提取大量数据。我们将重点介绍Python语言中的相关库和技术,以及如何高效、合法地收集网络数据。文章不仅为初学者提供入门指导,也为有经验的开发者提供进阶技巧,确保读者能够在遵守网络伦理和法规的前提下,充分利用网络数据资源。
|
机器学习/深度学习 XML 搜索推荐
图像自动化保存工具:Python脚本开发指南
图像自动化保存工具:Python脚本开发指南
|
数据采集 JavaScript 前端开发
Web爬虫开发指南:使用Python的BeautifulSoup和Requests库
Web爬虫是一种从互联网上获取数据的自动化工具,它可以用于抓取网页内容、提取信息和分析数据。Python提供了一些强大的库,其中BeautifulSoup和Requests是两个常用的工具,用于解析HTML内容和发起HTTP请求。本文将介绍如何使用BeautifulSoup和Requests库构建一个简单而有效的Web爬虫。
|
前端开发 API 数据库
Python网站开发指南:构建现代化、高效的Web应用
在当今数字化时代,网站已成为企业、组织以及个人展示自己的重要窗口。Python作为一种简洁、高效且易于学习的编程语言,被广泛运用于网站开发领域。本文将向您介绍如何使用Python进行网站开发,包括常用的Web框架、关键技术和最佳实践。
|
计算机视觉
直方图均衡化处理:去雾---OpenCV-Python开发指南(45)
直方图均衡化处理:去雾---OpenCV-Python开发指南(45)
404 2
直方图均衡化处理:去雾---OpenCV-Python开发指南(45)
|
计算机视觉
实现抖音时光倒流效果---OpenCV-Python开发指南(56)
实现抖音时光倒流效果---OpenCV-Python开发指南(56)
334 1
实现抖音时光倒流效果---OpenCV-Python开发指南(56)
|
计算机视觉
Fisherfaces人脸识别---OpenCV-Python开发指南(44)
Fisherfaces人脸识别---OpenCV-Python开发指南(44)
464 1
Fisherfaces人脸识别---OpenCV-Python开发指南(44)
|
计算机视觉
实现抖音慢动作效果---OpenCV-Python开发指南(57)
实现抖音慢动作效果---OpenCV-Python开发指南(57)
352 1
|
算法
实现人脸美白算法---OpenCV-Python开发指南(59)
实现人脸美白算法---OpenCV-Python开发指南(59)
976 0
实现人脸美白算法---OpenCV-Python开发指南(59)
|
算法 Python
实现人脸磨皮算法---OpenCV-Python开发指南(58)
实现人脸磨皮算法---OpenCV-Python开发指南(58)
831 0
实现人脸磨皮算法---OpenCV-Python开发指南(58)

热门文章

最新文章

推荐镜像

更多