[源码分享]视频转字符动画,50行代码搞定
C语言题库
共 2624字,需浏览 6分钟
· 2022-11-21
1 视频转字符动画
在计算机逐步渗入社会生活各个层面的今天,计算机已经成为人们日常生活的一分,越来越多的人使用计算机办公、娱乐等等。可以把视频转成动起来的动画哦~视频背景最好颜色单调一点
2 背景知识
视频转字符动画其实很简单,首先需要了解图片在内存里面是怎么存储的,然后对每一个像素点进行操作,转成相应的字符,输出到屏幕上即可。
表白程序设计原理:
第一步,配置OpenCV和easyx环境,配置easyx主要是为了显示字符动画时流畅的显示(如果不使用,直接输出到控制待也是可以的)
第二步,准备好不同颜色需要替换的字符
第三步,打开视频,逐帧获取图片,并转成灰度图
第四步,获取到图片的每个像素点的颜色值
第五步,然后根据颜色值得比例转成字符输出即可
3 错误及解决方案
此程序使用Vs209+OpenCV+easyx开发。刚开始学习C语言或者没接触过OpenCV和easyx的伙伴,拿到代码之后肯定有很多的错误,这就是所谓的给了源码也不能运行,所以配置环境和查看报错也是作为编程学习者,必须要掌握的技能。
vs安装使用教程:[点击查看教程]
OpenCV安装使用教程:[点击查看教程]
easyx安装使用教程:[点击查看教程]
4. 话不多说上代码
先看代码,然后自己去敲代码练习哦~
#include<opencv2/opencv.hpp>
#include<iostream>
#include<Windows.h>
#include<mmsystem.h>
#include<graphics.h>
#include<string>
#pragma comment(lib,"winmm.lib")
using namespace cv;
using namespace std;
int main()
{
initgraph(960, 640);
VideoCapture mvideo("./极乐净土.mp4");
mciSendString("open ./干坤坤.mp3 alias bgm", 0, 0, 0);
const char* str = "@#$%&eb!*,';+^~. = ";
int len = strlen(str);
BeginBatchDraw();
while (1)
{
Mat frame;//视频帧
mvideo >> frame;//获取每一张图片
if (frame.empty())//如果读完就退出
break;
cvtColor(frame, frame, COLOR_BGR2GRAY);
resize(frame, frame, Size(150, 50));
String text;//保存转换后的字符串
cleardevice();
int index = 0;
//遍历图片像素的行和列
for (int x = 0; x < frame.rows; x++)
{
for (int y = 0; y < frame.cols; y++)
{
int grayval = frame.at<uchar>(x, y);
index = grayval / 256.0 * len;//通过颜色比例,把颜色转成字符
text += str[index];
}
settextstyle(10, 0, "楷体");
outtextxy(0, x * textheight(str[index]), text.data());//逐行输出
text.clear();//每一行清除一次
}
imshow(" ", frame);
int key = cv::waitKey(10);
if (key == 32)//按空格退出
break;
mciSendString("play bgm", 0, 0, 0);
FlushBatchDraw();
}
cv::waitKey(0);
return 0;
}
评论
FasterTransformer Decoding 源码分析(三)-LayerNorm介绍
作者丨进击的Killua来源丨https://zhuanlan.zhihu.com/p/669440844编辑丨GiantPandaCV本文是FasterTransformer Decoding 源码分析的第三篇,主要介绍FasterTransformer中LayerNorm是如何实现及优化的。首先
GiantPandaCV
0
阿里的同事,写的代码真 TMD 优雅!
通过这篇文章你将了解到整洁的代码对项目、公司和你的重要性,以及如何书写整洁的代码.通过命名、类、函数、测试这四个章节,使我们的代码变得整洁.1、为什么要保持代码整洁?不整洁的代码随着时间的增加而增加时,生产力会随之降低.导致的结果就是:代码不易扩展或扩展容易引发其他问题程序崩溃加班增加公司成本(加人
Java专栏
1
老爸嘲讽我了,写破代码一年就挣十几万,他在工地带50个工人,一个月光人头费就3万,让我滚回去跟他干!
点击上方 "大数据肌肉猿"关注, 星标一起成长点击下方链接,进入高质量学习交流群今日更新| 1052个转型案例分享-大数据交流群来自:网络,侵删有个网友的父亲是做工程的,天天就嘲笑他,说他天天写着破代码有啥用,一年就拿个十多万的死工资,然后告诉他自己在工地里面带了50个工人,一个月能抽三万
程序源代码
0
微软开源MS-DOS操作系统源码,冲到GitHub第一了!
大家好,我是轩辕。这两天逛GitHub的时候,突然发现一个叫 MS-DOS的项目冲到Trending榜首了!定睛一看,微软官方啊,搜了一下才知道,原来前两天,微软把MS-DOS 4.0系统开源了!关于这个系统,估计现在很多程序员都不知道了,或者只在古老的教科书上看过这玩意儿。MS-DOS,全称为Mi
编程技术宇宙
6
中国人民大学《大语言模型》书籍中文版开放下载!还配套代码工具库~
大语言模型综述文章《A Survey of Large Language Models》团队终于出书啦!而且是中文版——《大语言模型》!这本书整理呈现了大模型技术框架和路线图,是一本非常好的入门书籍。🧿🧿🧿
此外,官方不仅发布了电子版 PDF 下载链接,还提供了配套资源。点赞 👍图书下载 → [大
机器学习算法与Python实战
0
15种时间序列预测方法总结(包含多种方法代码实现)
向AI转型的程序员都关注了这个号👇👇👇在这篇文章中,我们将深入探讨时间序列预测的基本概念和方法。我们将首先介绍单元预测和多元预测的概念,然后详细介绍各种深度学习和传统机器学习方法如何应用于时间序列预测,包括循环神经网络(RNN)、一维卷积神经网络(1D-CNN)、Transformer、自回归模型(
机器学习AI算法工程
0
大厂都在用的 Git 代码管理规范 !
👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目正在酝酿中
小哈学Java
2
Open-Sora全面开源升级:支持16s视频生成和720p分辨率
机器之心发布 机器之心编辑部Open-Sora 在开源社区悄悄更新了,现在单镜头支持长达16秒的视频生成,分辨率最高可达720p,并且可以处理任何宽高比的文本到图像、文本到视频、图像到视频、视频到视频和无限长视频的生成需求。我们来试试效果。生成个横屏圣诞雪景,发b站再生成个竖屏,发抖音还能
机器学习算法与Python实战
0