欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python繪制字符畫視頻的示例代碼

 更新時(shí)間:2021年11月14日 11:01:20   作者:微小冷  
網(wǎng)上有很多的字符畫,看起來(lái)很炫酷,本文就通過一則示例實(shí)現(xiàn)字符畫視頻,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

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

 讀取視頻

通過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()

在這里插入圖片描述

轉(zhuǎn)為字符

這個(gè)視頻雖然已被壓縮,但對(duì)于字符畫而言還是太大了,所以轉(zhuǎn)字符畫之前需對(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()

在這里插入圖片描述

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

pixels = "▇圞國(guó)圖囜ⒶⒷⒸ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é)果如下

在這里插入圖片描述

動(dòng)畫

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

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

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

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

在這里插入圖片描述

主程序的代碼如下

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

    # 初始化屏幕
    scr = curses.initscr()
    scr.timeout(40)     #每次等待鍵盤輸入的時(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)于python繪制字符畫視頻的示例代碼的文章就介紹到這了,更多相關(guān)python 字符畫視頻內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一個(gè)非常簡(jiǎn)單好用的Python圖形界面庫(kù)(PysimpleGUI)

    一個(gè)非常簡(jiǎn)單好用的Python圖形界面庫(kù)(PysimpleGUI)

    這篇文章主要介紹了一個(gè)非常簡(jiǎn)單好用的Python圖形界面庫(kù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 用Python實(shí)現(xiàn)局域網(wǎng)控制電腦

    用Python實(shí)現(xiàn)局域網(wǎng)控制電腦

    大家好,本篇文章主要講的是用Python實(shí)現(xiàn)局域網(wǎng)控制電腦,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Python文件去除注釋的方法

    Python文件去除注釋的方法

    這篇文章主要介紹了Python文件去除注釋的方法,涉及Python正則表達(dá)式及文件操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • Python查找算法之分塊查找算法的實(shí)現(xiàn)

    Python查找算法之分塊查找算法的實(shí)現(xiàn)

    這篇文章主要介紹了Python查找算法之分塊查找算法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python使用BeautifulSoup庫(kù)解析HTML基本使用教程

    Python使用BeautifulSoup庫(kù)解析HTML基本使用教程

    這篇文章主要介紹了Python使用BeautifulSoup庫(kù)解析HTML基本使用教程,文中主要對(duì)其適合于制作爬蟲方面的特性進(jìn)行了解析,需要的朋友可以參考下
    2016-03-03
  • 10個(gè)頂級(jí)Python實(shí)用庫(kù)推薦

    10個(gè)頂級(jí)Python實(shí)用庫(kù)推薦

    這篇文章主要推薦了10個(gè)頂級(jí)Python實(shí)用庫(kù),幫助大家更好的理解和學(xué)習(xí)實(shí)用python,感興趣的朋友可以了解下
    2021-03-03
  • Python循環(huán)語(yǔ)句介紹

    Python循環(huán)語(yǔ)句介紹

    大家好,本篇文章主要講的是Python循環(huán)語(yǔ)句介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Python實(shí)現(xiàn)GIF動(dòng)圖加載和降幀的方法詳解

    Python實(shí)現(xiàn)GIF動(dòng)圖加載和降幀的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python和Pygame實(shí)現(xiàn)GIF動(dòng)圖加載和降幀的效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-02-02
  • Python求兩個(gè)list的差集、交集與并集的方法

    Python求兩個(gè)list的差集、交集與并集的方法

    這篇文章主要介紹了Python求兩個(gè)list的差集、交集與并集的方法,是Python集合數(shù)組操作中常用的技巧,需要的朋友可以參考下
    2014-11-11
  • 詳解python中文編碼問題

    詳解python中文編碼問題

    一直以來(lái)python中文編碼是個(gè)及其頭大的問題,需要好好學(xué)習(xí)下,我用python為例,簡(jiǎn)單介紹下python編程時(shí)如何處理好中文編碼的問題,感興趣的朋友們可以參考下
    2021-06-06

最新評(píng)論