校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Python抖音快手代碼舞(字符舞)的實現方法

Python抖音快手代碼舞(字符舞)的實現方法

熱門標簽:申請辦個400電話號碼 高德地圖標注字母 騰訊地圖標注有什么版本 深圳網絡外呼系統代理商 千呼ai電話機器人免費 柳州正規電銷機器人收費 鎮江人工外呼系統供應商 400電話辦理費用收費 外呼系統前面有錄音播放嗎

先上效果,視頻敬上:

字符舞:

代碼舞

源代碼:

video_2_code_video.py

import argparse
import os
import cv2
import subprocess
from cv2 import VideoWriter_fourcc
from PIL import Image, ImageFont, ImageDraw

# 命令行輸入參數處理
# aparser = argparse.ArgumentParser()
# aparser.add_argument('file')
# aparser.add_argument('-o','--output')
# aparser.add_argument('-f','--fps',type = float, default = 24)#幀
# aparser.add_argument('-s','--save',type = bool, nargs='?', default = False, const = True)
# 是否保留Cache文件,默認不保存

class Video2CodeVideo:
 def __init__(self):
 self.config_dict = {
  # 原視頻文件
  "input_file": "video/test.mp4",
  # 中間文件存放目錄
  "cache_dir": "cache",
  # 是否保留過程文件。True--保留,False--不保留
  "save_cache_flag": False,
  # 使用使用的字符集
  "ascii_char_list": list("01B%8WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~>i!lI;:oa+>!:+. "),
 }

 # 第一步從函數,將像素轉換為字符
 # 調用棧:video_2_txt_jpg -> txt_2_image -> rgb_2_char
 def rgb_2_char(self, r, g, b, alpha=256):
 if alpha == 0:
  return ''
 length = len(self.config_dict["ascii_char_list"])
 gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
 unit = (256.0 + 1) / length
 return self.config_dict["ascii_char_list"][int(gray / unit)]

 # 第一步從函數,將txt轉換為圖片
 # 調用棧:video_2_txt_jpg -> txt_2_image -> rgb_2_char
 def txt_2_image(self, file_name):
 im = Image.open(file_name).convert('RGB')
 # gif拆分后的圖像,需要轉換,否則報錯,由于gif分割后保存的是索引顏色
 raw_width = im.width
 raw_height = im.height
 width = int(raw_width / 6)
 height = int(raw_height / 15)
 im = im.resize((width, height), Image.NEAREST)

 txt = ""
 colors = []
 for i in range(height):
  for j in range(width):
  pixel = im.getpixel((j, i))
  colors.append((pixel[0], pixel[1], pixel[2]))
  if (len(pixel) == 4):
   txt += self.rgb_2_char(pixel[0], pixel[1], pixel[2], pixel[3])
  else:
   txt += self.rgb_2_char(pixel[0], pixel[1], pixel[2])
  txt += '\n'
  colors.append((255, 255, 255))

 im_txt = Image.new("RGB", (raw_width, raw_height), (255, 255, 255))
 dr = ImageDraw.Draw(im_txt)
 # font = ImageFont.truetype(os.path.join("fonts","漢儀楷體簡.ttf"),18)
 font = ImageFont.load_default().font
 x = y = 0
 # 獲取字體的寬高
 font_w, font_h = font.getsize(txt[1])
 font_h *= 1.37 # 調整后更佳
 # ImageDraw為每個ascii碼進行上色
 for i in range(len(txt)):
  if (txt[i] == '\n'):
  x += font_h
  y = -font_w
  # self, xy, text, fill = None, font = None, anchor = None,
  # *args, ** kwargs
  dr.text((y, x), txt[i], fill=colors[i])
  # dr.text((y, x), txt[i], font=font, fill=colors[i])
  y += font_w

 name = file_name
 # print(name + ' changed')
 im_txt.save(name)


 # 第一步,將原視頻轉成字符圖片
 # 調用棧:video_2_txt_jpg -> txt_2_image -> rgb_2_char
 def video_2_txt_jpg(self, file_name):
 vc = cv2.VideoCapture(file_name)
 c = 1
 if vc.isOpened():
  r, frame = vc.read()
  if not os.path.exists(self.config_dict["cache_dir"]):
  os.mkdir(self.config_dict["cache_dir"])
  os.chdir(self.config_dict["cache_dir"])
 else:
  r = False
 while r:
  cv2.imwrite(str(c) + '.jpg', frame)
  self.txt_2_image(str(c) + '.jpg') # 同時轉換為ascii圖
  r, frame = vc.read()
  c += 1
 os.chdir('..')
 return vc

 # 第二步,將字符圖片合成新視頻
 def txt_jpg_2_video(self, outfile_name, fps):
 fourcc = VideoWriter_fourcc(*"MJPG")

 images = os.listdir(self.config_dict["cache_dir"])
 im = Image.open(self.config_dict["cache_dir"] + '/' + images[0])
 vw = cv2.VideoWriter(outfile_name + '.avi', fourcc, fps, im.size)

 os.chdir(self.config_dict["cache_dir"])
 for image in range(len(images)):
  # Image.open(str(image)+'.jpg').convert("RGB").save(str(image)+'.jpg')
  frame = cv2.imread(str(image + 1) + '.jpg')
  vw.write(frame)
  # print(str(image + 1) + '.jpg' + ' finished')
 os.chdir('..')
 vw.release()

 # 第三步,從原視頻中提取出背景音樂
 def video_extract_mp3(self, file_name):
 outfile_name = file_name.split('.')[0] + '.mp3'
 subprocess.call('ffmpeg -i ' + file_name + ' -f mp3 -y ' + outfile_name, shell=True)

 # 第四步,將背景音樂添加到新視頻中
 def video_add_mp3(self, file_name, mp3_file):
 outfile_name = file_name.split('.')[0] + '-txt.mp4'
 subprocess.call('ffmpeg -i ' + file_name + ' -i ' + mp3_file + ' -strict -2 -f mp4 -y ' + outfile_name, shell=True)

 # 第五步,如果沒配置保留則清除過程文件
 def clean_cache_while_need(self):
 # 為了清晰+代碼比較短,直接寫成內部函數
 def remove_cache_dir(path):
  if os.path.exists(path):
  if os.path.isdir(path):
   dirs = os.listdir(path)
   for d in dirs:
   if os.path.isdir(path + '/' + d):
    remove_cache_dir(path + '/' + d)
   elif os.path.isfile(path + '/' + d):
    os.remove(path + '/' + d)
   os.rmdir(path)
   return
  elif os.path.isfile(path):
   os.remove(path)
  return
 # 為了清晰+代碼比較短,直接寫成內部函數
 def delete_middle_media_file():
  os.remove(self.config_dict["input_file"].split('.')[0] + '.mp3')
  os.remove(self.config_dict["input_file"].split('.')[0] + '.avi')
 # 如果沒配置保留則清除過程文件
 if not self.config_dict["save_cache_flag"]:
  remove_cache_dir(self.config_dict["cache_dir"])
  delete_middle_media_file()

 # 程序主要邏輯
 def main_logic(self):
 # 第一步,將原視頻轉成字符圖片
 vc = self.video_2_txt_jpg(self.config_dict["input_file"])
 # 獲取原視頻幀率
 fps = vc.get(cv2.CAP_PROP_FPS)
 # print(fps)
 vc.release()
 # 第二步,將字符圖片合成新視頻
 self.txt_jpg_2_video(self.config_dict["input_file"].split('.')[0], fps)
 print(self.config_dict["input_file"], self.config_dict["input_file"].split('.')[0] + '.mp3')
 # 第三步,從原視頻中提取出背景音樂
 self.video_extract_mp3(self.config_dict["input_file"])
 # 第四步,將背景音樂添加到新視頻中
 self.video_add_mp3(self.config_dict["input_file"].split('.')[0] + '.avi', self.config_dict["input_file"].split('.')[0] + '.mp3')
 # 第五步,如果沒配置保留則清除過程文件
 self.clean_cache_while_need()

if __name__ == '__main__':
 obj = Video2CodeVideo()
 obj.main_logic()

運行環境:

操作系統:win10

版本:Python 3.8.4

依賴庫:pip install opencv-python pillow

管理員權限安裝,我的已安裝過,顯示這樣:

依賴應用: ffpmeg(下載直接解壓、將bin目錄加到PATH環境變量)

小白式運行(大佬請裝瞎):

將上面的源代碼命名video_2_code_video.py,在同一目錄下新建文件夾video:

在video中放入要轉換的原視頻,命名test.mp4:

打開Python3.8

運行video_2_code_video.py,如下圖顯示表示正在運行:

會產生一些中間文件諸如:

經過漫長的等待,終于得償所愿:

test-txt.mp4就是所要的代碼舞啦:

總結 

到此這篇關于Python抖音快手代碼舞實現的文章就介紹到這了,更多相關Python抖音快手代碼舞內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python制作抖音代碼舞
  • python抖音表白程序源代碼
  • 使用python爬取抖音視頻列表信息
  • python一鍵去抖音視頻水印工具
  • python實現抖音視頻批量下載
  • python實現抖音點贊功能
  • python仿抖音表白神器
  • 我喜歡你 抖音表白程序python版
  • Python爬蟲 批量爬取下載抖音視頻代碼實例
  • python批量下載抖音視頻

標簽:哈爾濱 海南 平頂山 烏蘭察布 大慶 郴州 合肥 烏蘭察布

巨人網絡通訊聲明:本文標題《Python抖音快手代碼舞(字符舞)的實現方法》,本文關鍵詞  Python,抖音,快手,代碼,舞,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python抖音快手代碼舞(字符舞)的實現方法》相關的同類信息!
  • 本頁收集關于Python抖音快手代碼舞(字符舞)的實現方法的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲综合在线第一页| 26uuu久久天堂性欧美| 亚洲国产精品久久不卡毛片| 精品久久久久久亚洲综合网| 777久久久精品| 色婷婷综合五月| 99re成人精品视频| 成人综合激情网| 成人av动漫在线| av电影一区二区| 色拍拍在线精品视频8848| 99国产精品久| 一本一本久久a久久精品综合麻豆| 成人禁用看黄a在线| 成人精品免费看| 91视频免费观看| 色88888久久久久久影院按摩| 91豆麻精品91久久久久久| 欧美在线你懂的| 欧美三区在线视频| 日韩三区在线观看| 欧美精品一区二区三区一线天视频| 日韩欧美国产麻豆| 国产欧美日韩在线视频| 国产精品电影一区二区| 亚洲毛片av在线| 三级精品在线观看| 国产在线播放一区二区三区| 成人中文字幕电影| 在线观看日韩毛片| 精品久久一区二区三区| 国产免费久久精品| 亚洲同性同志一二三专区| 亚洲香蕉伊在人在线观| 琪琪久久久久日韩精品| 成人一级黄色片| 欧美自拍丝袜亚洲| 精品国产乱子伦一区| 国产精品二三区| 亚洲福利视频一区| 国产精品一区二区久激情瑜伽| 99免费精品视频| 欧美日韩国产精品成人| 精品国产精品网麻豆系列| 国产精品美女久久福利网站| 亚洲成人av福利| 国产成人av电影在线播放| 色偷偷成人一区二区三区91| 欧美一级专区免费大片| 国产精品国产自产拍在线| 五月婷婷久久丁香| 大白屁股一区二区视频| 欧美一区二区精品久久911| 欧美国产丝袜视频| 秋霞av亚洲一区二区三| 国产91丝袜在线18| 91精品在线一区二区| 亚洲欧洲日韩综合一区二区| 日本va欧美va精品发布| 99精品视频中文字幕| 欧美一区二区三区喷汁尤物| 国产精品久久久久永久免费观看| 午夜视频在线观看一区二区| 99国产精品久| 国产亚洲午夜高清国产拍精品| 亚洲va在线va天堂| 99国产精品久久久久久久久久久| 日韩精品在线网站| 日韩精品1区2区3区| 99九九99九九九视频精品| 精品福利av导航| 一区二区高清视频在线观看| 国产一区二区三区免费播放| 欧美一区中文字幕| 五月综合激情婷婷六月色窝| 色老综合老女人久久久| 欧美激情一区二区三区不卡| 蜜臀91精品一区二区三区| 欧美日韩一区二区三区免费看 | 麻豆成人免费电影| 欧美视频一区二区三区在线观看 | 2022国产精品视频| 天天亚洲美女在线视频| 极品销魂美女一区二区三区| 欧美日免费三级在线| 一区二区三区在线看| va亚洲va日韩不卡在线观看| 中文字幕乱码亚洲精品一区| 成人久久久精品乱码一区二区三区| 久久色在线视频| 久久精品99国产精品| 日韩精品一区二区在线| 青青青伊人色综合久久| 日韩亚洲欧美在线观看| 国产一区二区三区四区五区入口 | 黑人巨大精品欧美一区| 久久奇米777| 成人免费黄色大片| 亚洲欧洲三级电影| 欧美亚洲禁片免费| 琪琪一区二区三区| 国产欧美一区二区精品仙草咪| 懂色一区二区三区免费观看| 中文字幕一区二区在线播放| 久久青草欧美一区二区三区| 国内精品国产成人| 国产精品久久久99| 欧美色图一区二区三区| 日韩电影在线免费观看| 日韩欧美视频在线| eeuss影院一区二区三区| 亚洲三级小视频| 欧美欧美午夜aⅴ在线观看| 老司机午夜精品| 国产精品久久久久aaaa| 777xxx欧美| 丁香婷婷综合网| 性久久久久久久久久久久| 日韩欧美中文一区| 丁香激情综合五月| 亚洲成人精品一区| 久久久久国产一区二区三区四区| 波波电影院一区二区三区| 亚洲成人黄色影院| 国产性天天综合网| 欧美久久久一区| www.综合网.com| 美国三级日本三级久久99| 国产精品视频在线看| 69久久99精品久久久久婷婷 | 中文字幕一区二区三区不卡| 欧美日韩三级一区| 国产成人综合在线播放| 亚洲一区二区三区四区五区黄| 精品sm捆绑视频| 欧美三级三级三级爽爽爽| 成人午夜精品一区二区三区| 丝袜美腿亚洲一区二区图片| 中文在线一区二区| 日韩欧美一级精品久久| 色8久久精品久久久久久蜜| 国产成人精品影视| 理论片日本一区| 亚洲成av人片观看| 亚洲少妇最新在线视频| 久久精品一区二区三区不卡| 欧美二区在线观看| 91国内精品野花午夜精品| 成人激情午夜影院| 国产一区欧美二区| 日韩成人精品视频| 性感美女久久精品| 亚洲电影视频在线| 一区二区三区四区激情| 国产精品色哟哟网站| 337p日本欧洲亚洲大胆精品| 91精品国产综合久久精品图片| 在线亚洲一区二区| 91在线无精精品入口| 丰满岳乱妇一区二区三区| 国产精品18久久久久久久久久久久| 日本人妖一区二区| 日韩电影在线观看一区| 日韩国产欧美在线播放| 亚洲国产综合91精品麻豆| 亚洲欧洲精品成人久久奇米网| 国产欧美一区二区精品仙草咪| 久久久精品国产免大香伊| 久久一区二区三区四区| 欧美精品一区二区蜜臀亚洲| 精品国产露脸精彩对白| 国产午夜一区二区三区| 国产欧美日韩不卡| 国产精品久久久一区麻豆最新章节| 日本一区二区成人| 国产精品国产a级| 亚洲视频在线观看三级| 亚洲欧美色图小说| 午夜亚洲福利老司机| 日韩电影在线一区二区三区| 蜜桃在线一区二区三区| 精品一区二区三区免费观看| 久久国产日韩欧美精品| 国产成人啪午夜精品网站男同| 国产成人在线免费观看| 99久久久无码国产精品| 日本高清不卡aⅴ免费网站| 欧美男人的天堂一二区| 精品粉嫩超白一线天av| 中文字幕不卡的av| 亚洲激情av在线| 日韩成人精品在线观看| 国产精品一区二区黑丝| 色悠悠亚洲一区二区| 欧美精品久久久久久久久老牛影院| 日韩亚洲欧美在线观看| 国产日韩欧美电影| 亚洲最大成人网4388xx| 久久精品国产第一区二区三区| gogogo免费视频观看亚洲一|