前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 Python 中使用 OpenCV 制作简单图像动画

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

作者头像
海拥
发布2021-12-20 19:16:31
1.8K0
发布2021-12-20 19:16:31
举报
文章被收录于专栏:全栈技术全栈技术

作者主页:海拥

作者简介:CSDN全栈领域优质创作者、HDZ核心组成员、蝉联C站周榜前十

在本文中,我们将讨论如何使用 python 的 OpenCV 模块为图像设置动画。

假设我们有一张图片。使用该单个图像,我们将对其进行动画处理,使其呈现为同一图像的连续阵列。这对于在某些游戏中设置背景动画很有用。例如,在一个飞扬的小鸟游戏中,为了让小鸟看起来向前移动,背景需要向后移动。为了理解这一点,让我们首先考虑一个线性 Python 列表。考虑一下下面的代码。

代码语言:javascript
复制
a = ['-', '-', '-', 1, '-', '-', '-']
n = len(a) # 数组的长度

for i in range(2*n):
	# i 是列表的索引 a i%n 将在 range(0,n) 中使用切片
	# 我们可以使数字 1 看起来像在列表中移动,这类似于循环列表
	print(a[(i % n):]+a[:(i % n)])

输出:

代码语言:javascript
复制
['-', '-', '-', 1, '-', '-', '-']
['-', '-', 1, '-', '-', '-', '-']
['-', 1, '-', '-', '-', '-', '-']
[1, '-', '-', '-', '-', '-', '-']
['-', '-', '-', '-', '-', '-', 1]
['-', '-', '-', '-', '-', 1, '-']
['-', '-', '-', '-', 1, '-', '-']
['-', '-', '-', 1, '-', '-', '-']
['-', '-', 1, '-', '-', '-', '-']
['-', 1, '-', '-', '-', '-', '-']
[1, '-', '-', '-', '-', '-', '-']
['-', '-', '-', '-', '-', '-', 1]
['-', '-', '-', '-', '-', 1, '-']
['-', '-', '-', '-', 1, '-', '-']

从上面的代码,我们可以看到数字1的位置在变化,即索引在变化。这是我们将用于水平动画图像的原则。

我们将使用NumPy 模块中的hstack()函数连接两个图像。hstack 函数将一个由数组顺序组成的元组作为参数,用于将输入数组的序列水平(即按列)堆叠以形成单个数组。

语法:

代码语言:javascript
复制
numpy.hstack((array1,array2))

示例:

代码语言:javascript
复制
import cv2
import numpy as np

img = cv2.imread('haiyong.jpg')

height, width, c = img.shape

i = 0

while True:
	i += 1
	
	# 将图像分为左右部分,就像列表连接我们将左右连接在一起
	l = img[:, :(i % width)]
	r = img[:, (i % width):]

	img1 = np.hstack((r, l))
	
	# 此函数将连接两个矩阵
	cv2.imshow('animation', img1)

	if cv2.waitKey(1) == ord('q'):
	
		# 按 q 终止循环
		cv2.destroyAllWindows()
		break

输出

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档