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

Python實(shí)現(xiàn)視頻轉(zhuǎn)換為字符畫詳解

 更新時間:2021年12月14日 10:58:46   作者:微小冷  
這篇文章主要介紹了如何通過Python實(shí)現(xiàn)讀取視頻并將其轉(zhuǎn)換為字符畫的示例代碼,文中講解詳細(xì),對我們的學(xué)習(xí)和工作有一點(diǎn)的價值,感興趣的小伙伴可以了解一下

上次寫了個華強(qiáng)買瓜字符視頻的帖子,下面有人問如何保存,所以這次就寫一個能將字符畫視頻保存下來的帖子,然而時不待我,華強(qiáng)紀(jì)元已經(jīng)結(jié)束,現(xiàn)在是穿山甲的時代了。

首先讀取視頻,并轉(zhuǎn)為字符。視頻是從B站下載的,地址《激戰(zhàn)江南》穿山甲名場面

由于B站直接下載的視頻為flv格式,而imageio并不支持,盡管可以用opencv來讀取,但相比之下,用ffmepg轉(zhuǎn)個碼也不復(fù)雜,這樣可以最大限度地利用華強(qiáng)買瓜的代碼。

另外,視頻素材過長不適合代碼演示,所以從第2:10進(jìn)行截取15s。

在命令行中輸入

>pip install ffmpeg
>ffmpeg  -i soup.flv -ss 00:02:10 -t 15 seg.mp4 -y

很快就得到了seg.mp4,接下來就是讀取視頻并轉(zhuǎn)為字符,有關(guān)這部分代碼的解析,可出門左轉(zhuǎn)華強(qiáng)買瓜。

import imageio
import numpy as np
import matplotlib.pyplot as plt
video = imageio.get_reader('seg.mp4')
imgs = [np.mean(im,2) for im in video]
plt.imshow(imgs[30])
plt.show()

這個視頻對于字符畫而言太大了,所以轉(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[30],160)
plt.imshow(im)
plt.show()

接下來生成字符畫,在此使用matplotlib中的text來進(jìn)行繪制,出于觀感考慮,取消了坐標(biāo)軸??紤]到字符畫需要寬度一致,故啟用本地字體。

關(guān)于繪圖字體,可參考python畫圖時調(diào)用本地字體

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'    #像素?fù)Q行時文本也要換行
    return txts

#測試
txt = im2txt(im)

plt.figure(figsize=(8,4.5))
plt.rcParams['font.sans-serif'] = 'SIMSUN'  #SIMSUN為宋體
plt.axis([0,10,0,10])
_ = plt.text(5, 5, txt, fontsize=6, linespacing=0.6,ha='center', va='center',wrap=True)
plt.gca().set_axis_off()
plt.show()

結(jié)果如下

接下來就是動起來,對于老粉來說這個顯然很簡單,屬于PythonArt這個系列的傳統(tǒng)藝能了。。。

from matplotlib import animation
fig = plt.figure(figsize=(8,4.5))
plt.rcParams['font.sans-serif'] = 'SIMSUN'
ax = fig.add_subplot(xlim=(0,10),ylim=(0,10))
ax.set_axis_off()

text = ax.text(5, 5, txt, fontsize=6, linespacing=0.6,  ha='center', va='center',wrap=True)

def animate(im):
    text.set_text(im2txt(im))
    return [text]

imgs = [resizeImg(im,160) for im in imgs]

ani = animation.FuncAnimation(fig, animate, imgs[:200], interval=10, blit=True)

plt.show()

最終得到

到此這篇關(guān)于Python實(shí)現(xiàn)視頻轉(zhuǎn)換為字符畫詳解的文章就介紹到這了,更多相關(guān)Python視頻轉(zhuǎn)字符畫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python筆記(叁)繼續(xù)學(xué)習(xí)

    Python筆記(叁)繼續(xù)學(xué)習(xí)

    最近時間擠來擠去,看英文的文檔,順便熟悉英語,需要反復(fù)好幾遍,才能做點(diǎn)筆記。讀的是《Beginning.Python.From.Novice.to.Professional》,大家可以下載看一下
    2012-10-10
  • Python 異常處理實(shí)例詳解

    Python 異常處理實(shí)例詳解

    python提供了兩個非常重要的功能(異常處理和斷言(Assertions))來處理python程序在運(yùn)行中出現(xiàn)的異常和錯誤,你可以使用該功能來捕捉python程序的異常
    2014-03-03
  • Flask使用Pyecharts在單個頁面展示多個圖表的方法

    Flask使用Pyecharts在單個頁面展示多個圖表的方法

    這篇文章主要介紹了Flask使用Pyecharts在單個頁面展示多個圖表的方法,在Flask頁面展示echarts,主要有兩種方法,文中給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2019-08-08
  • Keras預(yù)訓(xùn)練的ImageNet模型實(shí)現(xiàn)分類操作

    Keras預(yù)訓(xùn)練的ImageNet模型實(shí)現(xiàn)分類操作

    這篇文章主要介紹了Keras預(yù)訓(xùn)練的ImageNet模型實(shí)現(xiàn)分類操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python如何一行輸入多個數(shù),并存入列表

    Python如何一行輸入多個數(shù),并存入列表

    這篇文章主要介紹了Python如何一行輸入多個數(shù),并存入列表,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python使用__slots__讓你的代碼更加節(jié)省內(nèi)存

    python使用__slots__讓你的代碼更加節(jié)省內(nèi)存

    如果要限制添加的屬性,例如,Student類只允許添加 name、gender和score 這3個屬性,就可以利用Python的一個特殊的slots來實(shí)現(xiàn)。這篇文章主要給大家介紹了關(guān)于python如何使用__slots__讓你的代碼更加節(jié)省內(nèi)存的相關(guān)資料,需要的朋友可以參考下
    2018-09-09
  • 對Python 2.7 pandas 中的read_excel詳解

    對Python 2.7 pandas 中的read_excel詳解

    今天小編就為大家分享一篇對Python 2.7 pandas 中的read_excel詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python實(shí)戰(zhàn)之markdown轉(zhuǎn)pdf(包含公式轉(zhuǎn)換)

    Python實(shí)戰(zhàn)之markdown轉(zhuǎn)pdf(包含公式轉(zhuǎn)換)

    由于我們markdown編輯器比較特殊,不是很方便瀏覽,如果轉(zhuǎn)換成pdf的話,就不需要可以的去安裝各種編輯器才可以看了。所以本文將介紹如何通過Python實(shí)現(xiàn)md轉(zhuǎn)pdf或者是docx,需要的朋友可以參考一下
    2021-12-12
  • Python獲取指定文件夾下的文件名的方法

    Python獲取指定文件夾下的文件名的方法

    本篇文章主要介紹了Python獲取指定文件夾下的文件名的方法,本文采用os.walk()和os.listdir()兩種方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Pycharm安裝各種庫(第三方庫)的兩種方法

    Pycharm安裝各種庫(第三方庫)的兩種方法

    這篇文章主要給大家介紹了關(guān)于Pycharm安裝各種庫(第三方庫)的兩種方法,Pycharm中通常需要安裝很多第三方庫,才可以使用相應(yīng)的拓展功能,需要的朋友可以參考下
    2024-01-01

最新評論

阳曲县| 两当县| 南皮县| 浠水县| 佛山市| 苍梧县| 长寿区| 安新县| 红桥区| 枞阳县| 阳城县| 阿拉尔市| 土默特右旗| 合水县| 宁强县| 德阳市| 武平县| 霍林郭勒市| 油尖旺区| 浏阳市| 洪泽县| 榕江县| 桐梓县| 浦江县| 历史| 独山县| 木里| 郓城县| 凤阳县| 贵阳市| 新闻| 方山县| 论坛| 射洪县| 永清县| 夹江县| 铁力市| 美姑县| 乌拉特中旗| 沙洋县| 油尖旺区|