在 Python 中使用 OpenCV 制作简单图像动画
【摘要】 在本文中,我们将讨论如何使用 python 的 OpenCV 模块为图像设置动画。假设我们有一张图片。使用该单个图像,我们将对其进行动画处理,使其呈现为同一图像的连续阵列。这对于在某些游戏中设置背景动画很有用。例如,在一个飞扬的小鸟游戏中,为了让小鸟看起来向前移动,背景需要向后移动。为了理解这一点,让我们首先考虑一个线性 Python 列表。考虑一下下面的代码。a = ['-', '-', ...
在本文中,我们将讨论如何使用 python 的 OpenCV 模块为图像设置动画。
假设我们有一张图片。使用该单个图像,我们将对其进行动画处理,使其呈现为同一图像的连续阵列。这对于在某些游戏中设置背景动画很有用。例如,在一个飞扬的小鸟游戏中,为了让小鸟看起来向前移动,背景需要向后移动。为了理解这一点,让我们首先考虑一个线性 Python 列表。考虑一下下面的代码。
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)])
输出:
['-', '-', '-', 1, '-', '-', '-']
['-', '-', 1, '-', '-', '-', '-']
['-', 1, '-', '-', '-', '-', '-']
[1, '-', '-', '-', '-', '-', '-']
['-', '-', '-', '-', '-', '-', 1]
['-', '-', '-', '-', '-', 1, '-']
['-', '-', '-', '-', 1, '-', '-']
['-', '-', '-', 1, '-', '-', '-']
['-', '-', 1, '-', '-', '-', '-']
['-', 1, '-', '-', '-', '-', '-']
[1, '-', '-', '-', '-', '-', '-']
['-', '-', '-', '-', '-', '-', 1]
['-', '-', '-', '-', '-', 1, '-']
['-', '-', '-', '-', 1, '-', '-']
从上面的代码,我们可以看到数字1的位置在变化,即索引在变化。这是我们将用于水平动画图像的原则。
我们将使用NumPy 模块中的hstack()函数连接两个图像。hstack 函数将一个由数组顺序组成的元组作为参数,用于将输入数组的序列水平(即按列)堆叠以形成单个数组。
语法:
numpy.hstack((array1,array2))
示例:
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
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)