最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

 讀取視頻

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

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

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)為字符

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

#將圖像寬度縮小至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) #取均值的步長
    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
# 測試一下
im = resizeImg(imgs[0],160)
plt.imshow(im)
plt.show()

在這里插入圖片描述

接下來,就可以生成字符畫了,所謂字符畫,無非是將像素值映射成一個字符,方法非常簡單

pixels = "▇圞國圖囜ⒶⒷⒸ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'    #像素換行時文本也要換行
    return txts
#測試
txt = im2txt(im)
print(txt)

結(jié)果如下

在這里插入圖片描述

動畫

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

先下載和自己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)     #每次等待鍵盤輸入的時間為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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實現(xiàn)自動玩連連看的腳本分享

    Python實現(xiàn)自動玩連連看的腳本分享

    最近女朋友在玩連連看,玩了一個星期了還沒通關(guān),真的是菜。實在是看不過去了,直接用python寫了個腳本代碼可以自動玩連連看,感興趣的可以了解一下
    2022-04-04
  • 清理pip和conda緩存的方法示例

    清理pip和conda緩存的方法示例

    本文主要介紹了清理pip和conda緩存的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • Python實現(xiàn)隨機從圖像中獲取多個patch

    Python實現(xiàn)隨機從圖像中獲取多個patch

    經(jīng)常有一些圖像任務(wù)需要從一張大圖中截取固定大小的patch來進行訓(xùn)練。本文就來和大家聊聊如何用Python實現(xiàn)隨機從圖像中獲取多個patch,感興趣的可以了解一下
    2022-08-08
  • 使用pytorch 篩選出一定范圍的值

    使用pytorch 篩選出一定范圍的值

    這篇文章主要介紹了使用pytorch 篩選出一定范圍的值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python實現(xiàn)用于測試網(wǎng)站訪問速率的方法

    python實現(xiàn)用于測試網(wǎng)站訪問速率的方法

    這篇文章主要介紹了python實現(xiàn)用于測試網(wǎng)站訪問速率的方法,涉及Python中urllib2模塊及時間的相關(guān)操作技巧,需要的朋友可以參考下
    2015-05-05
  • python__new__內(nèi)置靜態(tài)方法使用解析

    python__new__內(nèi)置靜態(tài)方法使用解析

    這篇文章主要介紹了python__new__內(nèi)置靜態(tài)方法使用解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • 淺談Python中的生成器和迭代器

    淺談Python中的生成器和迭代器

    這篇文章主要介紹了Python中的生成器和迭代器的的相關(guān)資料,文中講解非常細致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Python操作SQLite/MySQL/LMDB數(shù)據(jù)庫的方法

    Python操作SQLite/MySQL/LMDB數(shù)據(jù)庫的方法

    這篇文章主要介紹了Python操作SQLite/MySQL/LMDB數(shù)據(jù)庫的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • Python實現(xiàn)文件下載、Cookie以及重定向的方法代碼

    Python實現(xiàn)文件下載、Cookie以及重定向的方法代碼

    本文主要介紹了如何使用 Python 的 requests 模塊進行網(wǎng)絡(luò)請求操作,涵蓋了從文件下載、Cookie 處理到重定向與歷史請求等多個方面,通過詳細的示例代碼,展示了如何高效地實現(xiàn)各種網(wǎng)絡(luò)操作,幫助開發(fā)者更輕松地進行 HTTP 請求的處理和數(shù)據(jù)管理
    2025-02-02
  • 深入理解NumPy簡明教程---數(shù)組3(組合)

    深入理解NumPy簡明教程---數(shù)組3(組合)

    本篇文章對NumPy數(shù)組進行較深入的探討。首先介紹自定義類型的數(shù)組,接著數(shù)組的組合,最后介紹數(shù)組復(fù)制方面的問題,有興趣的可以了解一下。
    2016-12-12

最新評論

西青区| 塘沽区| 玉龙| 宜昌市| 六安市| 阳山县| 民丰县| 清远市| 独山县| 北京市| 屏东县| 准格尔旗| 防城港市| 蓝田县| 玛沁县| 渭源县| 平塘县| 泗水县| 曲阜市| 福清市| 莆田市| 正蓝旗| 聂荣县| 南丹县| 洪泽县| 昆明市| 二连浩特市| 旬阳县| 洪江市| 赞皇县| 太康县| 民和| 红原县| 海门市| 营山县| 商都县| 抚州市| 垣曲县| 庆安县| 青州市| 湘潭县|