亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

超不清視頻播放器-用Python將視頻轉(zhuǎn)成字符

DobbyKim / 1853人閱讀

摘要:一幅圖像全部轉(zhuǎn)成字符序列后,就可以直接在控制臺(tái)輸出了。讀取視頻使用了,并直接用它提供的方法轉(zhuǎn)了灰度圖,在之前的文章中也有過(guò)介紹,計(jì)算機(jī)視覺(jué)開(kāi)發(fā)利器這一步比較重要,因?yàn)橛械囊曨l分辨率很高,直接一個(gè)像素轉(zhuǎn)一個(gè)字符的話(huà)量太大,所以先縮小圖片。

今天分享的這段代碼,看起來(lái)沒(méi)啥實(shí)際用處,而且有些反潮流,因?yàn)楝F(xiàn)如今大家看視頻都追求更高分辨率的超清畫(huà)質(zhì),而我們這個(gè),是 一個(gè)“超不清”的視頻播放器

在控制臺(tái)里播放視頻,用字符來(lái)表示畫(huà)面

不過(guò)我覺(jué)得它至少可以有三個(gè)作用:1.用來(lái) 練習(xí)視頻和圖像處理 的編程開(kāi)發(fā);2. 在沒(méi)有圖形界面的服務(wù)器上播放視頻 (雖然效果不咋地);3.作為一種獨(dú)特的 藝術(shù)風(fēng)格化 處理

程序的原理其實(shí)很簡(jiǎn)單,關(guān)鍵是你要理解 計(jì)算機(jī)中一張圖像的組成:一堆像素點(diǎn)。 我們平常說(shuō)的 1920*1080 之類(lèi)的分辨率,也就是指這個(gè)像素點(diǎn)的多少。我們想做成字符畫(huà),也就是考慮如何用不同的字符來(lái)表示一個(gè)像素。

通常 一個(gè)像素點(diǎn)由3個(gè)0~255的值表示 ,分別表示 紅、綠、藍(lán)三種顏色值 ,值越大表示顏色越深。但字符畫(huà)是沒(méi)有顏色的,所以需要將圖像 轉(zhuǎn)成灰度圖 ,這樣就可以跟一組從深到淺的字符形成一種對(duì)應(yīng)關(guān)系。比如深的點(diǎn)就是 @,淺色的點(diǎn)就是 .。

一幅圖像全部轉(zhuǎn)成字符序列后,就可以直接在控制臺(tái)輸出了。對(duì)于一個(gè)視頻來(lái)說(shuō),只需要將每一幀都轉(zhuǎn)換后輸出,并按照一定的時(shí)間間隔清屏、輸出下一幀,即可達(dá)到我們的需要的效果。

轉(zhuǎn)換后的效果:

代碼:


# coding: utf8
import cv2 as cv
import os
import time
# 替換字符列表
ascii_char = list(r"$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~<>i!lI;:,"^`". ")
char_len = len(ascii_char)
# 加載視頻
cap = cv.VideoCapture("video.mp4")
while True:
    # 讀取視頻每一幀
    hasFrame, frame = cap.read()
    if not hasFrame:
        break
    # 視頻長(zhǎng)寬
    width = frame.shape[0]
    height = frame.shape[1]
    # 轉(zhuǎn)灰度圖
    img_gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
    # 縮小圖片并調(diào)整長(zhǎng)寬比
    img_resize = cv.resize(img_gray, (int(width / 10), int(height / 10)))

    text = ""
    # 遍歷圖片中的像素
    for row in img_resize:
        for pixel in row:
            # 根據(jù)像素值,選取對(duì)應(yīng)的字符
            text += ascii_char[int(pixel / 256 * char_len)]
        text += "
"
    # 清屏
    os.system("cls")  # mac是"clear"
    # 輸出生成的字符方陣
    print(text)
    # 適當(dāng)暫停一下
    time.sleep(0.03)

代碼不長(zhǎng),稍微解釋下其中幾處:

ascii_char 這個(gè)字符序列并不是必須這樣,只要大致上滿(mǎn)足其中的 字符看起來(lái)從深到淺 即可,字符越多越準(zhǔn)確,效果就越好。

讀取視頻使用了 opencv-python ,并直接用它提供的方法轉(zhuǎn)了灰度圖,在之前的文章中也有過(guò)介紹:OpenCV-Python,計(jì)算機(jī)視覺(jué)開(kāi)發(fā)利器

resize 這一步比較重要,因?yàn)橛械囊曨l分辨率很高,直接一個(gè)像素轉(zhuǎn)一個(gè)字符的話(huà)量太大,所以 先縮小圖片 。另一個(gè)原因是字符一般都不是正方形,所以在 圖片長(zhǎng)寬比上要做一定的調(diào)整 ,這樣最終效果比較好。(實(shí)際中要根據(jù)你自己控制臺(tái)中的字體效果來(lái)調(diào)整縮放比例)

ascii_char[int(pixel / 256 * char_len)] 是整個(gè)轉(zhuǎn)換的核心,因?yàn)橐粋€(gè)像素的顏色范圍是 0~255,通過(guò) pixel / 256 * char_len 可以 將一個(gè)像素值對(duì)應(yīng)于字符序列中灰度相當(dāng)?shù)淖址?/strong> 。

關(guān)于輸出,有幾個(gè)值得注意的點(diǎn): 輸出一幀前需要清屏 ,不同平臺(tái)命令有區(qū)別; 時(shí)間間隔、控制臺(tái)的字體大小、縮放比例都要根據(jù)實(shí)際情況作調(diào)整 ;如果計(jì)算時(shí)間過(guò)長(zhǎng)、刷新太慢而屏幕閃爍,可以考慮進(jìn)一步縮小圖片,或者先將所以幀轉(zhuǎn)換完畢后再統(tǒng)一輸出。

最后請(qǐng)各位欣賞最終的視頻效果:

《極樂(lè)凈土》字符版 https://www.zhihu.com/video/1063899647084568576

文中完整代碼已上傳,包括 轉(zhuǎn)單張圖片轉(zhuǎn)視頻 兩份代碼。
獲取地址請(qǐng)?jiān)诠娞?hào)“ Crossin的編程教室 ”里回復(fù)關(guān)鍵字 播放器

════

其他文章及回答:

如何自學(xué)Python | 新手引導(dǎo) | 精選Python問(wèn)答 | Python單詞表 | 人工智能 | 爬蟲(chóng) | 我用Python | requests | 計(jì)算機(jī)視覺(jué)

歡迎搜索及關(guān)注公眾號(hào): Crossin的編程教室

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/42928.html

相關(guān)文章

  • video在微信和QQ瀏覽器中不全屏播放解決

    摘要:在網(wǎng)上看到好論壇類(lèi)似的基本問(wèn)題,以前有申請(qǐng)白名單的,在白名單的視頻鏈接或者騰訊旗下的視頻鏈接是原生播放,否則安卓會(huì)被劫持成騰訊家的播放器播放并且默認(rèn)全屏,目前通過(guò)白名單的方法是解決不了的。 最近公司做一個(gè)視頻活動(dòng)的HTML5頁(yè)面,頁(yè)面并不復(fù)雜,但是要求視頻播放的時(shí)候不全屏。在網(wǎng)上看到好論壇類(lèi)似的基本問(wèn)題,以前有申請(qǐng)白名單的,在白名單的視頻鏈接或者騰訊旗下的視頻鏈接是原生播放,否則安卓會(huì)...

    zr_hebo 評(píng)論0 收藏0
  • 碼神軍訓(xùn)(四,五)——代碼跳舞軍體拳

    摘要:吹水今天,碼神依舊涼爽,軍體拳,摸魚(yú)一天,所以早上就在操場(chǎng)趴著,不過(guò),我學(xué)會(huì)了,信不信看到抖音小姐姐的舞蹈,用代碼做出來(lái),還挺好看,我也想試一下,不會(huì),學(xué)莫,反正假酒已經(jīng)醒了。 ...

    mayaohua 評(píng)論0 收藏0
  • 關(guān)于 video 播放的新探索

    摘要:使用標(biāo)簽這是關(guān)于給出的基本用例。其實(shí)我們也是在這種背景下研究出來(lái)新的技術(shù)問(wèn)題解決清晰度無(wú)縫切換的。這樣之前說(shuō)的所有成本問(wèn)題都不存在,還能做到相同體驗(yàn)的無(wú)縫切換。所有代碼來(lái)自帶解析器能節(jié)省流量的西瓜播放器 前端同學(xué)要使用 HTML5 播放器視頻,必然會(huì)使用 video 標(biāo)簽,不過(guò)大多數(shù)同學(xué)只是使用了較簡(jiǎn)單的功能,其實(shí)它本身?yè)碛胁环仓τ写覀儼l(fā)現(xiàn)。 首先,我們先來(lái)看下 video 最基礎(chǔ)...

    Shihira 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<