基于opencv将视频转化为字符串Java版

基于opencv将视频转化为字符串Java版

先上一个效果图吧

首先,弄清一下原理

我们要将视频转化为字符画,那么就需要获取画面的每一帧,也就是每一张图片,然后将图片进行转化,变成字符串,然后进行打印。

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);
//获得图片的灰度值  i,j 表示像素点的位置(姑且理解为像素点吧)
int gray = (int) img_mat.get(i, j)[0];

3.字符串转换

我们会根据灰度的大小放不同的字符

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+="",因为这个在很长的字符串上连接效率太慢.

总结

总的来说,就是根据视频的灰度的大小,用不同复杂度的字符串来替代。
如果你喜欢这篇文章的话,就给个start✮吧,项目下载地址:GitHub⊙﹏⊙∥∣°

≡(▔﹏▔)≡

opencv 在Ubuntu环境下的搭建我会在下篇讲哦
<(‵^′)>

转载于:https://www.cnblogs.com/xiaohuiduan/p/9867646.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCvSharp是一个基于OpenCV的开源计算机视觉库,可用于图像处理和计算机视觉任务。PaddleOCR是一个开源的OCR(Optical Character Recognition,光学字符识别)工具,基于飞桨(PaddlePaddle)深度学习框架,用于文本检测和识别任务。 OpenCvSharp可以与PaddleOCR结合使用来进行更高级的OCR任务。使用OpenCvSharp,我们可以对图像进行预处理,如图像去噪、调整亮度和对比度等。然后,使用PaddleOCR库进行文本检测,它可以检测图像中的文本区域,并返回检测到的区域的坐标和边界框。接下来,可以使用OpenCvSharp将检测到的文本区域提取出来,进行图像增强和剪裁等操作,以提高识别的准确性。最后,使用PaddleOCR进行文本识别,它可以将提取出的文本区域转换为文本字符串。 通过结合OpenCvSharp和PaddleOCR,我们可以实现更复杂的OCR任务,例如批量处理多个图像文件,识别印刷体和手写体等。另外,OpenCvSharp和PaddleOCR都有比较完善的文档和示例代码,因此学习和使用它们相对较为简单。此外,OpenCvSharp是一个跨平台的库,可以在不同的操作系统上使用,而PaddleOCR也可以在多种环境和设备上部署。 综上所述,OpenCvSharp和PaddleOCR是两个功能强大的开源库,通过它们的结合使用,我们可以实现更高级的OCR任务,为图像处理和计算机视觉领域的研究和应用提供了便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值