吹水
今天,碼神依舊涼爽,軍體拳,摸魚一天,所以早上就在操場趴著,**不過,我學會了, **信不信?看到抖音小姐姐的舞蹈,用代碼做出來,還挺好看,我也想試一下,不會,學莫,反正假酒已經醒了,
想思路
總不能一個一個做吧,這可是一個視頻,一個一個做我做到明年都弄不完,大致思路如下:
- 視頻變圖片,專業術語:視頻抽幀
- 圖片變字符,專業術語:把抽幀得到的圖片集轉換為字符畫集
- 字符變舞蹈,專業術語:回圈列印,變成影片效果
代碼實作
視頻抽幀
將一段視頻截取下來,使用GIF截取工具

轉化字符
將gif轉化為字符

用python匯入庫
import os
import re
import shutil
import cv2
from PIL import Image
import moviepy.editor as mpy
讀取字符
def rename_gif():
file_list = os.listdir("./temp") # 讀取當前檔案夾所有檔案
# print(file_list)
print("檢測到檔案夾下圖片:")
n = len(file_list)
num_list = []
num1 = num2 = 0
for i in range(n):
s = str(file_list[i])
if s[-4:] == ".gif": # 檢查后綴
res = re.findall(r"\d+", s)
if res[0] == '1':
num1 += 1
if res[0] == '2':
num2 += 1
src = os.path.join(os.path.abspath('./temp/'), s) # 原先的圖片名字
dst = os.path.join(os.path.abspath('./temp/'), res[0] + '-' + res[1]+'.gif') # 根據自己的需要重新命名
os.rename(src, dst) # 重命名,覆寫原先的名字
num_list.append(num1)
num_list.append(num2)
file_list = os.listdir("./temp") # 讀取當前檔案夾所有檔案
for i in range(n):
s = str(file_list[i])
if s[-4:] == ".gif": # 檢查后綴
res = re.findall(r"\d+", s)
src = os.path.join(os.path.abspath('./temp/'), s) # 原先的圖片名字
a = int(res[0])-1
index = a*num_list[a-1]
dst = os.path.join(os.path.abspath('./temp/'), str(index + int(res[1])) + '.gif') # 根據自己的需要重新命名
os.rename(src, dst) # 重命名,覆寫原先的名字
回圈輸出
用到python中的一個庫
pip install opencv-python
def charts2video(img_path, video_path):
"""將給定目錄下的圖片轉成視頻
Args:
img_path: 圖片路徑
video_path: 輸出視頻的路徑和名稱
Returns: 圖片轉成的視頻
"""
images = os.listdir(img_path)
images.sort(key=lambda x: int(x[:-4])) # 以名稱字串的數字從小到大排序
fps = 12 # 幀數
fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V')
im = Image.open(img_path + images[0])
video_writer = cv2.VideoWriter(video_path, fourcc, fps, im.size)
for img_i in images:
frame = cv2.imread(img_path + img_i)
print('開始將 ' + img_i + ' 加入視頻\n')
video_writer.write(frame) # 注意:圖片尺寸必須和視頻尺寸一樣,不然不會被加入視頻中!!!
video_writer.release()
最后的代碼舞視頻我已經上傳到B站了,大家可以一起來欣賞下喔,
還有就是我已經學會軍體拳了,不用一直摸魚了
https://www.bilibili.com/video/BV1RP4y18741/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/312134.html
標籤:python
