精华内容
下载资源
问答
  • 我有数百张手写笔记的图像。它们是由不同的人编写的,但是它们是按顺序排列的,因此您知道例如person1编写了img1.jpg-> img100.jpg。手写样式因人而异,但笔记的某些部分始终是固定的,我想这可以帮助一种算法(对...

    我有数百张手写笔记的图像。它们是由不同的人编写的,但是它们是按顺序排列的,因此您知道例如person1编写了img1.jpg-> img100.jpg。手写样式因人而异,但笔记的某些部分始终是固定的,我想这可以帮助一种算法(对我有帮助!)。

    我尝试了tesseract,但它在识别文本方面非常失败。我在想,因为每个人都有100张图像,是否有一种算法可以通过提供少量示例(例如5个或更少)来进行训练,并且可以从中学习?还是数据不足?从周围搜索看来,我似乎需要实现CNN(例如this paper)。

    我对ai的了解有限,这是我仍然可以使用图书馆和一些学习方法吗?如果是这样,我应该怎么做?

    参考方案

    这称为OCR,并且已经取得了进展。实际上,这是一个使用tesseract将图像文件解析为文本的过程的简单示例:

    try:

    from PIL import Image

    except ImportError:

    import Image

    import pytesseract

    def ocr_core(file):

    text = pytesseract.image_to_string(file)

    return text

    print(ocr_core('sample.png'))

    我不太确定它能否识别不同类型的笔迹。您可以自己尝试一下以找出答案。如果要尝试python示例,则需要导入tesseract,但首先要在操作系统上安装tesseract并将其添加到PATH中。

    Java:找到特定字符并获取子字符串 - java

    我有一个字符串4.9.14_05_29_16_21,我只需要获取4.9。数字各不相同,所以我不能简单地获得此char数组的前三个元素。我必须找到最正确的.并将其子字符串化直到那里。我来自Python,因此我将展示Python的实现方法。def foobar(some_string): location = some_string.rfind('.&…java:继承 - java

    有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…Java:BigInteger,如何通过OutputStream编写它 - java

    我想将BigInteger写入文件。做这个的最好方式是什么。当然,我想从输入流中读取(使用程序,而不是人工)。我必须使用ObjectOutputStream还是有更好的方法?目的是使用尽可能少的字节。谢谢马丁 参考方案 Java序列化(ObjectOutputStream / ObjectInputStream)是将对象序列化为八位字节序列的一种通用方法。但…Java-如何将此字符串转换为日期? - java

    我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…Java:从类中查找项目名称 - java

    仅通过类的实例,如何使用Java反射或类似方法查找项目名称?如果不是,项目名称(我真正想要的是)可以找到程序包名称吗? 参考方案 项目只是IDE使用的简单组织工具,因此项目名称不是类或JVM中包含的信息。要获取软件包,请使用Class#getPackage()。然后,可以调用Package#getName()将包作为您在代码的包声明中看到的String来获取…

    展开全文
  • java手写笔记

    千次阅读 2018-03-22 09:41:05
  • Java代码生成手写笔记

    2020-06-05 13:15:24
    看完本文章让你告别手写笔记 话不多说,先来看一下效果图 是不是跟手写的一样 接下来直接上代码,由于没有啥技术含量,无非就是给图片添加水印 代码我就不再细说了 有兴趣的朋友可以自己看一下源码 主函数和实现...

    Java小白修炼手册


    在家上网课时老师会不会需要你拍照上传你的笔记呢?
    看完本文章让你告别手写笔记
    话不多说,先来看一下效果图
    在这里插入图片描述
    是不是跟手写的一样
    接下来直接上代码,由于没有啥技术含量,无非就是给图片添加水印
    代码我就不再细说了
    有兴趣的朋友可以自己看一下源码
    主函数和实现方法不在同一个class,注意!!
    主函数如下
    起始的bg.jpg和biji.txt和ss2.ttf文件我会上传在笔记生成文件里,包括源码

    import come.MainFuncation.WorkWrite;
    import java.awt.*;
    import java.util.Scanner;
    public class StartFunction {
    
        public static void main(String[] args) {
            System.out.print("请输入你的作业题目:");
            Scanner scanner = new Scanner(System.in);
            String fileName=scanner.next();
            System.out.println("开始生成笔记...");
            //启动
            WorkWrite workWrite = new WorkWrite();
            String backgroundImgPath="bg2.jpg"; //纸张图片地址
            String bijiPath="biji.txt";//你的笔记文本的地址
            String fontPath="ss2.ttf";//你的自定义字体文件的地址
            Font newFont=workWrite.newFont(fontPath,110);//自定义字体和大小,未设置大小则默认90
            String[] txt=workWrite.MarkContent(bijiPath);//笔记文本
            workWrite.setRowlen(120);//设置行间距,未设置默认为100
            Color color= new Color(Color.black.getRGB());//文字为黑色
            workWrite.addWaterMark(backgroundImgPath, fileName,txt,color,newFont);//生成
            System.out.println("完成");
        }
    }
    

    你可以自定义bg.jpg,即更换纸张图片
    将你网上白嫖来的笔记内容复制粘贴在biji.txt中
    字体文件我已经提供2种(代码里用的第二种手写体,个人感觉比另一种真实),不需要更改,你也可以网上下载个其他的手写体

    实现方法代码:
    这部分代码是干活的

    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.*;
    import javax.imageio.ImageIO;
    public class WorkWrite {
    
        private float fontSize=90;//字体大小
        private int rowlen=100;//行间距
        private int page=0;//页码
        /**
         * 绘制水印
         * @param split
         * @param markContentColor
         * @param font
         */
        public void addWaterMark(String backgroundImgPath, String resultImgPath, String[] split,Color markContentColor,Font font) {
    
            try {
                // 读取原图片信息
                File srcImgFile = new File(backgroundImgPath);//得到文件
                Image srcImg = ImageIO.read(srcImgFile);//文件转化为图片
                int srcImgWidth = srcImg.getWidth(null);//获取图片的宽
                int srcImgHeight = srcImg.getHeight(null);//获取图片的高
                BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);
                Graphics2D g;
                g = bufImg.createGraphics();
                g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
                g.setColor(markContentColor); //设置水印颜色
                g.setFont(font);              //设置字体
    
                //内容起始坐标
                int x = 100;
                int y = 100;
                int maxWord= (int) (srcImgWidth/fontSize);//每行最多的字数
                for (int i=0;i<split.length;i++) {
                    //字符串可能会出现��,导致出现一些空白,所以为了保险起见将这些字符替换成空字符串
                    split[i]=split[i].replace("��","");
                    //获取字符串的字数
                    int collen=split[i].length();
                    /*
                    对每行的字符数进行规范
                     */
    
                    if(collen>maxWord){//如果大于每行规定的字数
                        String substring = split[i].substring(0, maxWord);
                        g.drawString(substring, x, y);  //绘制从0截取到最大字数的字符串
                        y += rowlen;//换行
                        String more=split[i].substring(maxWord,collen);//截取多出来的字符串
                        g.drawString(more, x, y);//绘制多出来的字符串
                        y += rowlen;//换行
                    }else {
                        //直接绘制
                        g.drawString(split[i], x, y);
                        y += rowlen;
                    }
                    //内容超出页面高度则分页
                    if(y>=srcImgHeight-1.5*rowlen) {
                        g.dispose();
                        //导出已经写满的笔记
                        productImage(bufImg,resultImgPath,++page);
                        y=rowlen;
                        g = bufImg.createGraphics();
                        g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
                        g.setColor(markContentColor); //设置水印颜色
                        g.setFont(font);              //设置字体
                    }
                }
                //将最后一张笔记生成
                g.dispose();
                productImage(bufImg,resultImgPath,++page);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 生产笔记图片
         * @param image
         * @param tarImgPath
         * @param page
         */
        public void productImage(BufferedImage image,String tarImgPath,int page){
            try {
                tarImgPath=tarImgPath+page+".jpg";
                FileOutputStream outImgStream = new FileOutputStream(tarImgPath);
                ImageIO.write(image, "jpg", outImgStream);
                outImgStream.flush();
                outImgStream.close();
            }catch (Exception e){
                e.printStackTrace();
            }
    
        }
    
        /**
         * 获取笔记所有内容,存入字符串数组
         * @param path path
         * @return String[]
         */
        public String[] MarkContent(String path){
            StringBuilder builder = new StringBuilder();
            try {
                FileInputStream inputStream = new FileInputStream(path);
                byte[] bytes = new byte[1024];
                int temp;
                while ((temp=inputStream.read(bytes))!=-1){
                    builder.append(new String(bytes,0,temp));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return builder.toString().split("。");
        }
    
        /**
         * 采用自定义手写字体,看起来更真实
         * @param path path
         * @param fontSize fontSize
         * @return Font
         */
        public Font newFont(String path,float fontSize){
            Font font = null;                     //水印字体
            try {
                font = Font.createFont(Font.TRUETYPE_FONT,new File(path));
                font=font.deriveFont(fontSize);
                setFontSize(fontSize);
            } catch (FontFormatException | IOException e) {
                e.printStackTrace();
            }
            return font;
        }
        public void setFontSize(float size){
            this.fontSize=size;
        }
        public void setRowlen(int rowlen){
            this.rowlen=rowlen;
        }
    }
    

    整体运行一下
    这是biji.txt的内容
    在这里插入图片描述
    运行时输入作业名称
    在这里插入图片描述
    回车运行
    在这里插入图片描述
    运行完成后会在桌面生成一个output的文件夹

    在这里插入图片描述
    里面的图片就是你的笔记,笔记名字就是你开始时输入的
    在这里插入图片描述
    大功告成!
    相信老师应该看不出来,哈哈
    如果有疑问可以评论区留言,包回复
    如果有不足之处望指出,感谢阅读!!

    展开全文
  • 老家没得空调, 久坐电脑旁迟早会热死,扭扭歪歪写了几个字,发现真的丑,字还得练练,所以试试手写笔记拍照上传博客,希望别喷我字丑,谢谢!

    老家没得空调, 久坐电脑旁迟早会热死,扭扭歪歪写了几个字,发现真的丑,字还得练练,所以试试手写笔记拍照上传博客,希望别喷我字丑,谢谢!

    在这里插入图片描述

    关于String的常用方法:

    在这里插入图片描述

    关于从控制台读取字符串/字符:

    在这里插入图片描述

    关于字符串比较:

    在这里插入图片描述

    关于字符串截取:

    在这里插入图片描述

    关于格式化输出printf():

    在这里插入图片描述
    在这里插入图片描述

    一些代码练习:

    // 姓名分割
    public  void stringTest(){
     
            Scanner in = new Scanner(System.in);
            System.out.print("enter a string of you name:");
            String s = in.nextLine();
            int k = s.indexOf(' ');
            String firstName = s.substring(0, k);
            String lastName = s.substring(k+1);
            System.out.println("The firstName is "+ firstName +"\nThe lastName is " + lastName);
        }
        
    
    // 十六进制转化十进制
    public static void main(String[] args){
            Scanner in = new Scanner(System.in);
            System.out.print("Enter a hex digit:");
            String hexDigit = in.nextLine();
    
            // 如果输入不是单个字符
            if (hexDigit.length() != 1){
                System.out.println("You must enter one character");
                System.exit(1);
            }
            // 数值转换
            char ch = Character.toUpperCase(hexDigit.charAt(0));
            if (ch >= 'A' && ch <= 'F'){
                int values = ch - 'A' + 10;
                System.out.println("The change values for hex digit" + ch + " is " + values);
            }
            else if(Character.isDigit(ch)){
                System.out.println("The change values for hex digit" + ch + " is " + ch);
            }else {
                System.out.println("The " + ch + "char not hex digit, is error enter!");
            }
    
        }
    

    我java很捞逼,还在探索,轻点喷。

    展开全文
  • :cherry_blossom: DSLearning :cherry_blossom: 总结 ... :cherry_blossom: Java闲杂点 :cherry_blossom: :cherry_blossom: 框架 :cherry_blossom: 弹簧靴 :cherry_blossom: IO :cherry_blossom:
  • ---------------------- ASP.Net+Android+IOS开发、href="http://edu.csdn.net"target="blank">.Net培训、期待与您交流! ---------------------- ---------------------- ASP.Net+Android+IOS开发、
  • Java 线程 本章内容:创建和运行线程、查看线程、线程 API、线程状态 在这里插入图片描述 4. 共享模型之管程 本章内容:共享问题、synchronized、线程安全分析、Monitor、wait/notify、线程状态转换、活跃性、Lock ...
  • 背包问题 题目 有 N 件物品和一个容量是V 的背包。每件物品只能使用一次。 第 ii 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,... } } 下一篇:(完全背包问题(Java)
  •   本文是对高淇版Java三百集,LinkedList内容学习的记录。java中LinkedList本质是双向链表,LinkedList中包含三个属性,Node first,Node previous,int size分别记录双链表的头,尾和数据的大小。 一、LinkedList...
  •   本文是对高淇版Java三百集,容器部分ArrayList内容学习的记录。java中ArrayList本质是一个数组,该类中包含两个属性Object[] elementData,int size,恰如字面意思,前一个数组用于存储数据,后者的size记录有多少...
  •   本文是对高淇版Java三百集,HashSer内容学习的记录。Set接口实现类有HashSet,TreeSet。   HashMap的本质是一个HashMap,其中HashMap的Key作为存储数据,Value设置为一个常量,private static final Object ...
  •   本文是对高淇版Java三百集,HashMap内容学习的记录。Map接口实现类有HashMap,TreeMap,HashTable和Properties等。 一、Map常用方法 1.1 put()方法 public V put(K key, V value) 1.2 get()方法 public V get...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 414
精华内容 165
关键字:

java手写笔记

java 订阅