一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類(lèi)導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 通過(guò)python繪制華強(qiáng)買(mǎi)瓜的字符畫(huà)視頻的步驟詳解

通過(guò)python繪制華強(qiáng)買(mǎi)瓜的字符畫(huà)視頻的步驟詳解

2022-03-01 11:44微小冷 Python

要把華強(qiáng)賣(mài)瓜做成字符視頻大概分為三步,通過(guò)讀取視頻,把每一幀轉(zhuǎn)為字符畫(huà),接著把字符畫(huà)表現(xiàn)出來(lái),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧

已經(jīng)11月了,不知道還有沒(méi)有人看華強(qiáng)買(mǎi)瓜。。。要把華強(qiáng)賣(mài)瓜做成字符視頻,總共分為三步:

  • 讀取視頻
  • 把每一幀轉(zhuǎn)為字符畫(huà)
  • 把字符畫(huà)表現(xiàn)出來(lái)

 

讀取視頻

通過(guò)imageio讀取視頻,除了pip install imageio之外,還需要pip install imageio-ffmpeg。

由于視頻中的圖像都是彩色的,故而需要將rgb三色轉(zhuǎn)為單一的強(qiáng)度,并將轉(zhuǎn)化后的圖像裝入一個(gè)列表中。

import imageio
import numpy as np
import matplotlib.pyplot as plt
video = imageio.get_reader('test.mp4')
imgs = []
for img in video:
  imgs.append(np.mean(img,2))
plt.imshow(imgs[0])
plt.show()

通過(guò)python繪制華強(qiáng)買(mǎi)瓜的字符畫(huà)視頻的步驟詳解

 

轉(zhuǎn)為字符

這個(gè)視頻雖然已被壓縮,但對(duì)于字符畫(huà)而言還是太大了,所以轉(zhuǎn)字符畫(huà)之前需對(duì)其進(jìn)一步壓縮。這里采取最簡(jiǎn)單的方法――即對(duì)相鄰的像素取平均值。

#將圖像寬度縮小至width
from itertools import product   #用于循環(huán)嵌套
def resizeImg(img,w,h=None):
  m,n = img.shape
  if n<w:
      return img
  if not h:
      h = int(m*w/n)
  im = np.zeros([h,w])
  rw,rh = n/w,m/h         #縮放比例
  dw,dh = int(rw),int(rh) #取均值的步長(zhǎng)
  for i,j in product(range(h),range(w)):
      I,J = int(i*rh),int(j*rw)
      im[i,j] = np.mean(img[I:I+dh,J:J+dw])
  return im
# 測(cè)試一下
im = resizeImg(imgs[0],160)
plt.imshow(im)
plt.show()

通過(guò)python繪制華強(qiáng)買(mǎi)瓜的字符畫(huà)視頻的步驟詳解

接下來(lái),就可以生成字符畫(huà)了,所謂字符畫(huà),無(wú)非是將像素值映射成一個(gè)字符,方法非常簡(jiǎn)單

pixels = "~K圖???B8&WMZO0QJX@%&jfoavunxr#t/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ^`'. " #用于映射的字符
def im2txt(img):
  im = np.floor(img/255*len(pixels)).astype(int)
  txts = ""
  for line in im:
      txts += "".join([pixels[i] for i in line])
      txts += '\r\n'    #像素?fù)Q行時(shí)文本也要換行
  return txts
#測(cè)試
txt = im2txt(im)
print(txt)

結(jié)果如下

通過(guò)python繪制華強(qiáng)買(mǎi)瓜的字符畫(huà)視頻的步驟詳解

 

動(dòng)畫(huà)

讓命令行繪制字符視頻,聽(tīng)上去可能有些不可思議,但這個(gè)功能可以?xún)H憑python內(nèi)置的模塊實(shí)現(xiàn)――即curses,唯一可惜的是,Windows下的Python并不內(nèi)置這個(gè)模塊,需要額外安裝。

先下載和自己python版本相符的curses,然后通過(guò)pip命令安裝

>pip install "curses-2.2.1+utf8-cp310-cp310-win_amd64.whl"

然后就可以在python中調(diào)用了。由于視頻太大,所以這里只演示一小段,效果如下

通過(guò)python繪制華強(qiáng)買(mǎi)瓜的字符畫(huà)視頻的步驟詳解

主程序的代碼如下

if __name__ == "__main__":
  video = imageio.get_reader('test.mp4')
  txts = []
  # 生成字符畫(huà)
  for img in video:
      im = resizeImg(np.mean(img,2),120,30)
      txts.append(im2txt(im))

  # 初始化屏幕
  scr = curses.initscr()
  scr.timeout(40)     #每次等待鍵盤(pán)輸入的時(shí)間為40ms
  #scr.
  for txt in cycle(txts):
      scr.addstr(0,0,txt)
      scr.border(0)
      scr.refresh()
      #curses.delay_output(25)
      if scr.getch()==27: #如果按下`esc`則退出`
          break

完整代碼

到此這篇關(guān)于通過(guò)python繪制華強(qiáng)買(mǎi)瓜的字符畫(huà)視頻的文章就介紹到這了,更多相關(guān)python華強(qiáng)買(mǎi)瓜字符畫(huà)視頻內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/m0_37816922/article/details/121296343

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本黄大片影院一区二区 | 国产一级在线观看视频 | 毛片一级毛片 | 99热久久这里只精品国产www | 国产精品久久久久久影视 | 国产欧美日韩成人 | 嫩草影院永久在线播放 | 四虎精品成人免费影视 | 日本一区三区 | 网红刘婷hd国产高清 | 九九在线精品视频 | 太紧太深了受不了黑人 | 高清视频在线观看+免费 | 星空无限传媒xk8027穆娜 | 国产激情视频 | 国产亚洲福利精品一区 | 吉泽明步高清无码中文 | 草草视频免费看 | 国产a一级毛片爽爽影院 | 精品国产麻豆AV无码 | 北条麻妃一区 | 成年人免费观看视频网站 | 国产永久一区二区三区 | 大伊香蕉在线精品不卡视频 | 国产婷婷综合丁香亚洲欧洲 | 亚洲国产精品综合久久一线 | 九九九九九九精品免费 | 91在线老王精品免费播放 | 欧洲网色偷偷亚洲男人的天堂 | 日本道色综合久久影院 | 日韩成人影视 | 万域之王动漫在线观看全集免费播放 | 国精视频一区二区视频 | 激情婷婷综合久久久久 | 我们中文在线观看免费完整版 | 免费国产成人高清视频网站 | 欧美成人三级伦在线观看 | 成人国产在线视频 | 99精品影院| 久久九九久精品国产尤物 | 免费理伦片在线观看全网站 |