去評(píng)論區(qū)領(lǐng)書 在本文中,我們將討論如何使用 python 的 OpenCV 模塊為圖像設(shè)置動(dòng)畫。 假設(shè)我們有一張圖片。使用該單個(gè)圖像,我們將對(duì)其進(jìn)行動(dòng)畫處理,使其呈現(xiàn)為同一圖像的連續(xù)陣列。這對(duì)于在某些游戲中設(shè)置背景動(dòng)畫很有用。例如,在一個(gè)飛揚(yáng)的小鳥游戲中,為了讓小鳥看起來向前移動(dòng),背景需要向后移動(dòng)。為了理解這一點(diǎn),讓我們首先考慮一個(gè)線性 Python 列表??紤]一下下面的代碼。 a = ['-', '-', '-', 1, '-', '-', '-']n = len(a) # 數(shù)組的長度for i in range(2*n):# i 是列表的索引 a i%n 將在 range(0,n) 中使用切片# 我們可以使數(shù)字 1 看起來像在列表中移動(dòng),這類似于循環(huán)列表print(a[(i % n):]+a[:(i % n)]) 輸出: ['-', '-', '-', 1, '-', '-', '-']['-', '-', 1, '-', '-', '-', '-']['-', 1, '-', '-', '-', '-', '-'][1, '-', '-', '-', '-', '-', '-']['-', '-', '-', '-', '-', '-', 1]['-', '-', '-', '-', '-', 1, '-']['-', '-', '-', '-', 1, '-', '-']['-', '-', '-', 1, '-', '-', '-']['-', '-', 1, '-', '-', '-', '-']['-', 1, '-', '-', '-', '-', '-'][1, '-', '-', '-', '-', '-', '-']['-', '-', '-', '-', '-', '-', 1]['-', '-', '-', '-', '-', 1, '-']['-', '-', '-', '-', 1, '-', '-'] 從上面的代碼,我們可以看到數(shù)字1的位置在變化,即索引在變化。這是我們將用于水平動(dòng)畫圖像的原則。 我們將使用NumPy 模塊中的hstack()函數(shù)連接兩個(gè)圖像。hstack 函數(shù)將一個(gè)由數(shù)組順序組成的元組作為參數(shù),用于將輸入數(shù)組的序列水平(即按列)堆疊以形成單個(gè)數(shù)組。 語法: numpy.hstack((array1,array2)) 示例: import cv2import numpy as np img = cv2.imread('haiyong.jpg')height, width, c = img.shape i = 0while True: i += 1# 將圖像分為左右部分,就像列表連接我們將左右連接在一起 l = img[:, :(i % width)] r = img[:, (i % width):] img1 = np.hstack((r, l))# 此函數(shù)將連接兩個(gè)矩陣 cv2.imshow('animation', img1)if cv2.waitKey(1) == ord('q'):# 按 q 終止循環(huán) cv2.destroyAllWindows()break 輸出 |
|