栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java利用opencv实现用字符展示视频或图片的方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java利用opencv实现用字符展示视频或图片的方法

背景:前段时间看到有人将图片转成符号,感觉挺有意思的,就结合了一下opencv。
代码如下:

package org.fxd.utils;

import org.opencv.core.Mat;
import org.opencv.imgproc.Imgproc;
import org.opencv.videoio.VideoCapture;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;


public class Image2Text {

  static {
    //opencv_java410.dll的所在地址,自己换成自己dll的地址
    System.load("D:\Sofeware\opencv\build\java\x64\opencv_java410.dll");
  }

  
  private static char[] cs = new char[] {'0','1','.',' '};

  public static void main(String[] args) throws IOException {
    //String imageUrl = "E:\1.png";
    // 设置Jtextarea,用于展示字符
    Jtextarea textarea = getJframe("XXTop", "宋体", 0, 2, 900, 900);
    // 将图片转成字符
    //textarea.setText(image2Text(imageUrl,1).toString());
    //将视频转成字符
    video2TextByOpenCV(textarea, "E:\1.mp4", 1);
  }

  
  public static Jtextarea getJframe(String frameTitle,String fontName, int fontStyle, int fontSize, int JFWideth, int JFHeight){
    Jframe frame = new Jframe();
    //创建一个窗口对象
    JPanel panel = new JPanel();
    Jtextarea textarea = new Jtextarea();
    // name:字体类型 style:0,表示字形;1,粗体;2,斜体  size:字体大小
    textarea.setFont(new Font(fontName,fontStyle,fontSize));
    panel.setLayout(new GridLayout());
    //当textarea里的内容过长时生成滚动条
    panel.add(new JScrollPane(textarea));
    frame.add(panel);
    //对窗口设置标题
    frame.setTitle(frameTitle);
    //设置窗口的大小
    frame.setSize(JFWideth,JFHeight);
    //设置窗口界面的关闭按钮真的生效(也可以直接传一个3进去,Jframe.EXIT_ON_CLOSE==3,效果一样)
    frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
    //设置窗口居中显示
    frame.setLocationRelativeTo(null);
    //设置窗口置顶显示
    frame.setAlwaysonTop(true);
    //设置窗口显示
    frame.setVisible(true);
    return textarea;
  }

  
  public static void video2TextByOpenCV(Jtextarea textarea, String targetImgUrl, int img2TextSzie) {
    VideoCapture capture=new VideoCapture();
    //1 读取视频文件的路径
    capture.open(targetImgUrl);
    if(!capture.isOpened()){
      System.out.println("读取视频文件失败!");
      return;
    }
    Mat video=new Mat();
    while(capture.isOpened()) {
      //2 视频文件的视频写入 Mat video 中
      capture.read(video);
      try{
 textarea.setText(image2TextByOpenCV(video,img2TextSzie).toString());
      }catch (Exception e){
 System.out.println("图片识别异常");
 break;
      }
    }
  }

  
  public static StringBuffer image2TextByOpenCV(Mat image,int size) throws Exception{
    StringBuffer text = null;
    Mat img_mat = new Mat();
    //mat表示要要转换的图片[Mat类型],img_mat表示转换后的图片
    Imgproc.cvtColor(image, img_mat, Imgproc.COLOR_RGB2GRAY);
    int rows = img_mat.rows();
    int cols = img_mat.cols();
    // 图片转字符串后的数组
    char[][] css = new char[rows/size + 1][cols/size + 1];
    for(int x=0; x

效果如下:

到此这篇关于Java利用opencv实现用字符展示视频或图片的方法的文章就介绍到这了,更多相关java实现展示视频或图片内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/129633.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号