# 基于 opencv 将视频转化为字符串 Java 版
先上一个效果图吧
![](https://www.writebug.com/myres/static/uploads/2021/12/8/7cde13a8f2ad9f5884c6da3746e61d72.writebug)
## 首先,弄清一下原理
我们要将视频转化为字符画,那么就需要获取画面的每一帧,也就是每一张图片,然后将图片进行转化,变成字符串,然后进行打印。
### 1.获取视频
在 opencv 中提供了一个 `函数` 去获取视频
```java
VideoCapture capture = new VideoCapture("");//里面放图片的地址
//ps:如果里面为0[不要"",就是整数0],则就对默认摄像头进行抓取
Mat mat = new Mat();
//读取下一帧
capture.read(mat);//返回值为boolean类型
```
设想一下,如果我们使用循环去读取下一帧,那么就可以源源不断的得到 `视频画面` 了
### 2.灰度转换
先说一下图片的转换原理:我们是根据图片像素点上面颜色的深浅来使用不同复杂程度的字符来替代它.那么这时候我们就可以将图片进行灰度转换,颜色深的地方放复杂的字符就行了.
```Java
Mat img_mat = new Mat();
//mat表示要要转换的图片[Mat类型],img_mat表示转换后的图片
Imgproc.cvtColor(mat, img_mat, Imgproc.COLOR_RGB2GRAY);
//获得图片的灰度值 i,j 表示像素点的位置(姑且理解为像素点吧)
int gray = (int) img_mat.get(i, j)[0];
```
### 3.字符串转换
我们会根据灰度的大小放不同的字符
```java
String ascii = "#8XOHLTI)i=+;:,. ";//字符串由复杂到简单
StringBuilder result = new StringBuilder();
//使用for循环获得图像每一个地方的灰度值
for (int i = 0; i < img_mat.rows(); i+=14) {
//i+14 j+14 每隔14取一个点 是防止视频过大,产生的result过长,整个屏幕无法显示完全
for (int j = 0; j < img_mat.cols(); j+=14) {
StringBuilder result = new StringBuilder();
int gray = (int) img_mat.get(i, j)[0];
//Math.round进行四舍五入
int index = Math.round(gray * (ascii.length() + 1) / 255);
result.append(index >= ascii.length() ? "." : String.valueOf(ascii.charAt(index)));
}
result = result.append("\n");
}
//Ubuntu 进行清屏操作
System.out.print("\033c");
System.out.println(result);
```
`注意`:不要使用 `result+=""`,因为这个在很长的字符串上连接效率太慢.
## 总结
总的来说,就是根据视频的灰度的大小,用不同复杂度的字符串来替代。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
我们要将视频转化为字符画,那么就需要获取画面的每一帧,也就是每一张图片,然后将图片进行转化,变成字符串,然后进行打印。 1.获取视频 在 opencv 中提供了一个 函数 去获取视频 VideoCapture capture = new VideoCapture("");//里面放图片的地址 //ps:如果里面为0[不要"",就是整数0],则就对默认摄像头进行抓取 Mat mat = new Mat(); //读取下一帧 capture.read(mat);//返回值为boolean类型设想一下,如果我们使用循环去读取下一帧,那么就可以源源不断的得到 视频画面 了 2.灰度转换 先说一下图片的转换原理:我们是根据图片像素点上面颜色的深浅来使用不同复杂程度的字符来替代它.那么这时候我们就可以将图片进行灰度转换,颜色深的地方放复杂的字符就行了. Mat img_mat = new Mat(); //mat表示要要转换的图片[Mat类型],img_mat表示转换后的图片 Imgproc.cvtColor(mat, img_mat, Imgproc.COLOR_RGB2GRAY); //获得图
资源推荐
资源详情
资源评论
收起资源包目录
spzh-master.zip (14个子文件)
spzh
opencvstr_py.py 690B
01.jpg 1.73MB
src
Data
ImageGui.java 1KB
Data.java 4KB
LICENSE 1KB
out
production
openCV
Data
Data.class 5KB
ImageGui.class 2KB
.idea
.name 6B
libraries
bin.xml 445B
workspace.xml 20KB
misc.xml 273B
modules.xml 252B
openCV.iml 484B
README.md 2KB
共 14 条
- 1
资源评论
- qq_398191992024-01-08视频内容的字符串在哪里?自己瞎拼瞎转的字符串吗,服了,这点钱也忽悠,标题党么 #标题与内容不符 #毫无价值
甜辣uu
- 粉丝: 9443
- 资源: 1102
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功