电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java利用opencv實現用字符展示視頻或圖片的方法

瀏覽:47日期:2022-08-18 18:26:59

背景:前段時間看到有人將圖片轉成符號,感覺挺有意思的,就結合了一下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.*;/** * 將圖片轉成text文件輸出 * @author Litluecat */public class Image2Text { static { //opencv_java410.dll的所在地址,自己換成自己dll的地址 System.load('D:Sofewareopencvbuildjavax64opencv_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); } /** * 生成JFrame窗口,并返回JTextArea對象 * @param frameTitle 窗口標題 * @param fontName 文本框中字體類型 * @param fontStyle 文本框中字體格式 * @param fontSize 文本框中字體大小 * @param JFWideth 窗口寬度 * @param JFHeight 窗口高度 * @return */ 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; } /** * OpenCV-4.1.0 從視頻文件中讀取 * @param textArea JTextArea文本框對象 * @param targetImgUrl 視頻地址 * @param img2TextSzie 圖片轉文本縮小比例 */ 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; } } } /** *基于openCV實現 * @param image 待處理Mat圖片(視頻中的某一幀) * @param size 對結果進行縮小,1為不縮小 */ 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<rows; x+=size){ for (int y=0; y<cols; y+=size){//獲得圖片的灰度值 x,y 表示像素點的位置(姑且理解為像素點吧)int gray = (int) img_mat.get(x, y)[0];// 得到灰度值int index = Math.round((gray * cs.length -1) / 255);css[x/size][y/size] = cs[index]; } } StringBuffer sb = new StringBuffer(); // 開始拼接內容 for (int x = 0; x < css.length; x++) { for (int y = 0; y < css[0].length; y++) {sb.append(css[x][y]); } sb.append('rn'); } return sb; } /** * @param imageUrl 圖片地址 * @param size 對結果進行縮小,1為不縮小 */ public static StringBuffer image2Text(String imageUrl,int size){ StringBuffer text = null; try { BufferedImage image = ImageIO.read(new File(imageUrl)); int width = image.getWidth(); int height = image.getHeight(); // 圖片轉字符串后的數組 char[][] css = new char[width/size + 1][height/size + 1]; for (int x = 0; x < width; x+=size) {for (int y = 0; y < height; y+=size) { int rgb = image.getRGB(x, y); Color c = new Color(rgb); // 得到灰度值 int cc = (c.getRed() + c.getGreen() + c.getBlue()) / 3; css[x/size][y/size] = cs[(int) ((cc * cs.length - 1) / 255)];} } StringBuffer sb = new StringBuffer(); // 開始拼接內容 for (int y = 0; y < css[0].length; y++) {for (int x = 0; x < css.length; x++) { sb.append(css[x][y]);}sb.append('rn'); } text = sb; } catch (IOException e) { System.out.println(e); } return text; }}

效果如下:

Java利用opencv實現用字符展示視頻或圖片的方法

到此這篇關于Java利用opencv實現用字符展示視頻或圖片的方法的文章就介紹到這了,更多相關java實現展示視頻或圖片內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 施工围挡-施工PVC围挡-工程围挡-深圳市旭东钢构技术开发有限公司 | 陶瓷加热器,履带式加热器-吴江市兴达电热设备厂 | 网站优化公司_北京网站优化_抖音短视频代运营_抖音关键词seo优化排名-通则达网络 | 彼得逊采泥器-定深式采泥器-电动土壤采样器-土壤样品风干机-常州索奥仪器制造有限公司 | 水成膜泡沫灭火剂_氟蛋白泡沫液_河南新乡骏华消防科技厂家 | 体坛网_体坛+_体坛周报新闻客户端 | 设定时间记录电子秤-自动累计储存电子秤-昆山巨天仪器设备有限公司 | 气密性检测仪_气密性检测设备_防水测试仪_密封测试仪-岳信仪器 | 光谱仪_积分球_分布光度计_灯具检测生产厂家_杭州松朗光电【官网】 | 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | 钢绞线万能材料试验机-全自动恒应力两用机-混凝土恒应力压力试验机-北京科达京威科技发展有限公司 | 提升海外网站流量,增加国外网站访客UV,定制海外IP-访客王 | 泰国专线_泰国物流专线_广州到泰国物流公司-泰廊曼国际 | 软文推广发布平台_新闻稿件自助发布_媒体邀约-澜媒宝 | 佛山商标注册_商标注册代理|专利注册申请_商标注册公司_鸿邦知识产权 | 法钢特种钢材(上海)有限公司 - 耐磨钢板、高强度钢板销售加工 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | 消泡剂-水处理消泡剂-涂料消泡剂-切削液消泡剂价格-东莞德丰消泡剂厂家 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | NBA直播_NBA直播免费观看直播在线_NBA直播免费高清无插件在线观看-24直播网 | 多功能三相相位伏安表-变压器短路阻抗测试仪-上海妙定电气 | 逗网红-抖音网红-快手网红-各大平台网红物品导航 | 二维运动混料机,加热型混料机,干粉混料机-南京腾阳干燥设备厂 | 便携式XPDM露点仪-在线式防爆露点仪-增强型烟气分析仪-约克仪器 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 粘度计维修,在线粘度计,二手博勒飞粘度计维修|收购-天津市祥睿科技有限公司 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 应急灯_消防应急灯_应急照明灯_应急灯厂家-大成智慧官网 | 氨水-液氨-工业氨水-氨水生产厂家-辽宁顺程化工 | 清水-铝合金-建筑模板厂家-木模板价格-铝模板生产「五棵松」品牌 | 茅茅虫AI论文写作助手-免费AIGC论文查重_写毕业论文降重 | 线材成型机,线材折弯机,线材成型机厂家,贝朗自动化设备有限公司1 | 润滑油加盟_润滑油厂家_润滑油品牌-深圳市沃丹润滑科技有限公司 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 开平机_纵剪机厂家_开平机生产厂家|诚信互赢-泰安瑞烨精工机械制造有限公司 | HDPE储罐_厂家-山东九州阿丽贝防腐设备 | 北京公司注册_代理记账_代办商标注册工商执照-企力宝 | 新材料分散-高速均质搅拌机-超声波分散混合-上海化烁智能设备有限公司 | 玖容气动液压设备有限公司-气液增压缸_压力机_增压机_铆接机_增压器 | 辐射色度计-字符亮度测试-反射式膜厚仪-苏州瑞格谱光电科技有限公司 | 苹果售后维修点查询,苹果iPhone授权售后维修服务中心 – 修果网 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 新能源汽车电机定转子合装机 - 电机维修设备 - 睿望达 |