程序员 PK 刘畊宏,我用代码实现龙拳了

程序员 PK 刘畊宏,我用代码实现龙拳了

  • 如果评论区没有及时回复,欢迎来公众号:ByteCode 咨询
  • 公众号:ByteCode。致力于分享最新技术原创文章,涉及 Kotlin、Jetpack、算法、译文、系统源码相关的文章

程序员来挑战刘畊宏健身操了,我用代码实现了刘畊宏的龙拳和周大侠,对比原版,来看看代码版本健身操怎么样。

我相信有很多小伙伴会好奇,视频中的字符是如何做出来的。难道是程序员一个一个字符敲出来的?

No,No,No,这肯定不是一个一个字符敲出来的,如果真是一个一个字符敲出来的,那么不吃不喝也得花好几年的时间,如果不是敲出来的那么肯定是通过某些软件或者技术实现的。我们先来看看如何实现一个字符视频。大概分为三步。

  1. 将视频的每一帧转成图片
  2. 将生成图片转成 ASCII 图形(字符化)
  3. 最后将步骤 2 生成的图片作为序列帧,一帧一帧播放

想要实现上面三步,大概有两种方式:

  • 通用方式,通过软件实现(适合所有人)
  • 通过代码实现(适合程序员)

通用方式,通过软件实现字符视频

这里需要用到两款软件 Adobe Premiere ProAscgen2

  • 首先使用 Adobe Premiere Pro 将视频每一帧转成图片

  • 然后通过 Ascgen2 将上一步生成的图片转换为 ASCII 文本图形(字符化),如下图所示

  • 最后将生成的 ASCII 文本图形,通过 Adobe Premiere Pro 以序列帧的方式导入

这种方式适用于所有人,但是费电脑,因为 Adobe Premiere Pro 对电脑的配置有要求,另外 Adobe Premiere Pro 是收费软件,如果对这种方式感兴趣的小伙伴,可以在后台回复,我会在出一期教程。今天这篇文章主要介绍如何通过代码实现字符视频。

Adobe Premiere Pro 破解版仅供学习使用,如果需要的小伙伴,可以在公众号:ByteCode 后台回复 “pr”, 即可下载

通过代码实现字符视频

这里我直接使用开源库中的 python 脚本 video2chars.py如果下面的地址下载不了,可以在公众号:ByteCode 后台回复 “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,执行下面的命令即可安装。

pip3 install opencv-python===3.4.13.47 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

注意这里需要指定 opencv-python 版本号,如果不指定默认安装最新版本,最新版本无法正常编译。我将安装过程中遇到的错误,做了一个汇总,放在文末了,如果你在安装过程中遇到了问题,可以在评论区分享。

opencv-python 安装成功之后,执行下面命令,运行 python 脚本即可。

pthton3 video2chars.py

我将安装过程中遇到的错误,做了一个汇总,如果你在安装过程中遇到了其他问题,可以在评论区分享,一起讨论。

安装 opencv-python 遇到的错误

错误一

ERROR: No matching distribution found for numpy

出现这个问题,我猜测是因为国内网络环境的原因,通过 -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 版本号,默认使用最新版本导致的,执行下面命令即可解决。

pip3 install opencv-python===3.4.13.47 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

如果有帮助点个赞就是对我最大的鼓励

欢迎关注公众号:ByteCode,分享有趣硬核原创内容


最后推荐长期更新和维护的项目:

  • 个人博客,将所有文章进行分类,欢迎前去查看 https://hi-dhl.com

  • KtKit 小巧而实用,用 Kotlin 语言编写的工具库,欢迎前去查看 KtKit

  • 计划建立一个最全、最新的 AndroidX Jetpack 相关组件的实战项目以及相关组件原理分析文章,正在逐渐增加 Jetpack 新成员,仓库持续更新,欢迎前去查看 AndroidX-Jetpack-Practice

  • LeetCode / 剑指 offer / 国内外大厂面试题 / 多线程题解,语言 Java 和 kotlin,包含多种解法、解题思路、时间复杂度、空间复杂度分析

近期必读热门文章

致力于分享一系列 Android 系统源码、逆向分析、算法、翻译、Jetpack 源码相关的文章,在技术的道路上一起前进

Android10 源码分析

正在写一系列的 Android 10 源码分析的文章,了解系统源码,不仅有助于分析问题,在面试过程中,对我们也是非常有帮助的,如果你同我一样喜欢研究 Android 源码,可以关注我 GitHub 上的 Android10-Source-Analysis

算法题库的归纳和总结

由于 LeetCode 的题库庞大,每个分类都能筛选出数百道题,由于每个人的精力有限,不可能刷完所有题目,因此我按照经典类型题目去分类、和题目的难易程度去排序。

  • 数据结构: 数组、栈、队列、字符串、链表、树……
  • 算法: 查找算法、搜索算法、位运算、排序、数学、……

每道题目都会用 Java 和 kotlin 去实现,并且每道题目都有解题思路,如果你同我一样喜欢算法、LeetCode,可以关注我 GitHub 上的 LeetCode 题解:Leetcode-Solutions-with-Java-And-Kotlin

精选国外的技术文章

目前正在整理和翻译一系列精选国外的技术文章,不仅仅是翻译,很多优秀的英文技术文章提供了很好思路和方法,每篇文章都会有译者思考部分,对原文的更加深入的解读,可以关注我 GitHub 上的 Technical-Article-Translation

评论