程序員挑戰(zhàn)龍拳 | 用代碼實現(xiàn)劉畊宏龍拳
Hi 大家好,我是 DHL。分享有用、有趣的硬核原創(chuàng)內(nèi)容,Kotlin、Jetpack、性能優(yōu)化、系統(tǒng)源碼、算法及數(shù)據(jù)結(jié)構(gòu)、動畫、大廠面經(jīng)。
程序員來挑戰(zhàn)龍拳了,我用代碼實現(xiàn)了劉畊宏的龍拳,對比原版,來看看字符版龍拳怎么樣。
我相信有很多小伙伴會好奇,視頻中的字符是如何做出來的。難道是程序員一個一個字符敲出來的?
No,No,No,這肯定不是一個一個字符敲出來的,如果真是一個一個字符敲出來的,那么不吃不喝也得花好幾年的時間,如果不是敲出來的那么肯定是通過某些軟件或者技術(shù)實現(xiàn)的。我們先來看看如何實現(xiàn)一個字符視頻。大概分為三步。
- 將視頻的每一幀轉(zhuǎn)成圖片
- 將生成圖片轉(zhuǎn)成 ASCII 圖形(字符化)
- 最后將步驟 2 生成的圖片作為序列幀,一幀一幀播放
想要實現(xiàn)上面三步,大概有兩種方式:
- 通用方式,通過軟件實現(xiàn)(適合所有人)
- 通過代碼實現(xiàn)(適合程序員)
通用方式,通過軟件實現(xiàn)字符視頻
這里需要用到兩款軟件 Adobe Premiere Pro? 、Ascgen2
- 首先,使用 Adobe Premiere Pro 將視頻每一幀轉(zhuǎn)成圖片
- 然后,通過 Ascgen2 將上一步生成的圖片轉(zhuǎn)換為 ASCII 文本圖形(字符化),如下圖所示:
- 最后將生成的 ASCII 文本圖形,通過 Adobe Premiere Pro 以序列幀的方式導(dǎo)入
這種方式適用于所有人,但是費電腦,因為 Adobe Premiere Pro? 對電腦的配置有要求,另外 Adobe Premiere Pro 是收費軟件,如果對這種方式感興趣的小伙伴,可以在后臺回復(fù),我會在出一期教程。今天這篇文章主要介紹如何通過代碼實現(xiàn)字符視頻。
通過代碼實現(xiàn)字符視頻
這里我直接使用開源庫中的 python? 腳本 video2chars.py,如果下面的地址下載不了,可以在公眾號:ByteCode 后臺回復(fù) "video", 即可下載 。
??https://git.1024dhl.com/https://github.com/ryan4yin/video2chars/blob/v0.3/src/video2chars.py??
PS:前綴 ??https://git.1024dhl.com?? 是 GitHub 的加速器,在 GitHub 地址前面添加這個前綴,提高 GitHub 訪問速度和下載速度,我會在后面的文章和視頻中介紹
想要運行上面的 python? 腳本,還需要安裝 opencv-python,執(zhí)行下面的命令即可安裝。
pip3 install opencv-python===3.4.13.47 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
opencv-python? 安裝成功之后,執(zhí)行下面命令,運行 python 腳本即可。
pthton3 video2chars.py
我將安裝過程中遇到的錯誤,做了一個匯總,如果你在安裝過程中遇到了其他問題,可以在評論區(qū)分享,一起討論。
安裝 opencv-python 遇到的錯誤
錯誤一
ERROR: No matching distribution found for numpy
出現(xiàn)這個問題,我猜測是因為國內(nèi)網(wǎng)絡(luò)環(huán)境的原因,通過 -i? 指定 aliyun 的倉庫下載即可。
pip3 install opencv-python===3.4.13.47 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
錯誤二
ERROR: Could not build wheels for opencv-python which use PEP 517 and cannot be installed directly
上面的錯誤,是因為沒有指定 opencv-python 版本號,默認(rèn)使用最新版本導(dǎo)致的,執(zhí)行下面命令即可解決。
pip3 install opencv-python===3.4.13.47 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com