使用 OpenCV 在 Python 中制作动画图像


简介

动画图片是由一系列静态图像自动播放,以连续和动态的方式显示相关内容,并且它们比视频占用更小的空间。此外,许多在线和移动应用程序都以与支持静态照片相同的方式支持动画图像,尽管它们并不总是允许上传视频。在这种情况下,动画图片可以非常有用。显然,还有其他一些原因可以解释为什么动画图形更受欢迎。有时,合并类似或不相关的照片仅仅是为了娱乐。

在本文中,我们将学习在 Python OpenCV 中制作动画图像的步骤。

OpenCV

Gary Bradsky 于 1999 年在英特尔启动了 OpenCV,并且直到 2000 年才发布了第一个版本。Vadim Pisarevsky 目前与 Gary Bradsky 合作,负责英特尔俄罗斯软件的 OpenCV 团队。OpenCV 用于 Stanley,这是一辆在 2005 年 DARPA 大挑战赛中获胜的车辆,并被评为冠军。之后,它在 Willow Garage 的帮助下继续高效地发展,Gary Bradsky 和 Vadim Pisarevsky 负责该项目。如今,OpenCV 支持与计算机视觉和机器学习相关的各种方法,并且其功能每天都在不断增长。

OpenCV 可在多个平台上访问,包括 Windows、Linux、OS X、Android 和 iOS,并且它支持多种编程语言,包括 C++、Python、Java 等。此外,现在正在开发基于 CUDA 和 OpenCL 的高速 GPU 操作接口。

它为所有语言提供了广泛的支持,包括 Python、C++、Android、Java 等。由于其特性,它易于使用且很受欢迎。它用于使用各种编程语言开发图像处理或渲染应用程序的过程。

在本教程中,我们将尝试使用 OpenCV 的 CV2 版本执行某些图像转换。所以让我们开始吧。

安装要求

代码需要一个正常安装的 Python 3,以及 OpenCV 及其依赖项 NumPy。

我们需要一个环境来运行程序,我们可以使用 Jupyter Notebook 来执行我们的程序。在这里,我们使用了 OpenCV 进行图像动画,但还有许多其他算法可以用来制作图像动画或制作 GIF。

如何使用 OpenCV 制作动画图像?

动画图片是由一系列静态图像自动播放,以显示相关动画。我们将使用 NumPy 包中包含的 hstack() 方法来连接我们拥有的两张图片。hstack 函数用于水平(即列方向)堆叠输入数组序列,从而生成一个数组。作为参数,hstack 函数期望一个包含数组顺序的元组。

我们通过在程序中挂载驱动器并设置图像路径,从 Google Drive 导入了图像。

示例

from google.colab import drive
drive.mount('/content/drive')

输出

Mounted at /content/drive

获取路径

path='/content/drive/MyDrive/Doremon.jpeg'

import cv2
import numpy as npp

from google.colab.patches import cv2_imshow
# Load the image
img1 = cv2.imread(path)
h, w, c = img1.shape


# Loop for a specified number of frames
for i in range(100):
   # Update the image
   ll = img1[:, :(i % w)]
   rr = img1[:, (i % w):]
  
   img2 = npp.hstack((rr, ll))
      
   # Display the updated image
   cv2.imshow( 'animation',img2)

   # Wait for a specified amount of time
   cv2.waitKey(100)

# Close the window
cv2.destroyAllWindows()

结论

我们学习了使用 OpenCV 和几行 Python 代码开始图像动画所需的非常基础的过程。

能够使用代码编写图像的价值显然远远超出了仅仅能够编写随机内容。例如,每个帧都可以使用 cv.imread 从存储位置读取,或者可以使用 cv2.VideoCapture 直接从相机捕获。在将每个帧添加到电影之前,我们可以对该帧执行一个或多个不同的操作,例如颜色转换、查找轮廓、形态学变化等等。

更新于: 2023年8月24日

1K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告