精华内容
下载资源
问答
  • 用matlab实现的一个基于连通域方法切割出二代身份证上数字和汉字并且运用模板法进行识别的程序,效果还可以~文档里面包含了课程的实验报告还有关于连通域切割的一篇论文,我就是基于这个论文的程序!
  • 文字识别(三)--文字定位与切割

    千次阅读 2019-02-18 11:10:30
    要做文字识别,第一步要考虑的就是怎么将每一个字符从图片中切割下来,然后才可以送入我们设计好的模型进行字符识别。现在就以下面这张图片为例,说一说最一般的字符切割的步骤是哪些。 当然,我们实际上要识别的...

    转自:https://www.cnblogs.com/skyfsm/p/8029668.html

    要做文字识别,第一步要考虑的就是怎么将每一个字符从图片中切割下来,然后才可以送入我们设计好的模型进行字符识别。现在就以下面这张图片为例,说一说最一般的字符切割的步骤是哪些。

    当然,我们实际上要识别的图片很可能没上面那张图片如此整洁,很可能是倾斜的,或者是带噪声的,又或者这张图片是用手机拍下来下来的,变得歪歪扭扭,所以需要进行图片预处理,把文本位置矫正,把噪声去除,然后才可以进行进一步的字符分割和文字识别。这些预处理的方法在我的前面几篇博客都有提到了,大家可以参考参考:
    透视矫正
    水平矫正

    在预处理工作做好之后,我们就可以开始切割字符了。最普通的切割算法可以总结为以下几个步骤:

    1. 对图片进行水平投影,找到每一行的上界限和下界限,进行行切割
    2. 对切割出来的每一行,进行垂直投影,找到每一个字符的左右边界,进行单个字符的切割

    一看只有两个步骤,好像不太难,马上编程实现看看效果。

    首先是行切割。这里提到了水平投影的概念,估计有的读者没听过这个名词,我来解释一下吧。水平投影,就是对一张图片的每一行元素进行统计(就是往水平方向统计),然后我们根据这个统计结果画出统计结果图,进而确定每一行的起始点和结束点。下面提到的垂直投影也是类似的,只是它的投影方向是往下的,即统计每一列的元素个数。

    根据上面的解释,我们可以写出一个用于水平投影和垂直投影的函数。

    #define V_PROJECT 1  //垂直投影(vertical)
    #define H_PROJECT 2  //水平投影(horizational)
    
    typedef struct
    {
        int begin;
        int end;
    
    }char_range_t;
    
    
    
    //获取文本的投影以用于分割字符(垂直,水平),默认图片是白底黑色
    int GetTextProjection(Mat &src, vector<int>& pos, int mode)
    {
        if (mode == V_PROJECT)
        {
            for (int i = 0; i < src.rows; i++)
            {
                uchar* p = src.ptr<uchar>(i);
                for (int j = 0; j < src.cols; j++)
                {
                    if (p[j] == 0)  //是黑色像素
                    {
                        pos[j]++;
                    }
                }
            }
        }
        else if (mode == H_PROJECT)
        {
            for (int i = 0; i < src.cols; i++)
            {
    
                for (int j = 0; j < src.rows; j++)
                {
                    if (src.at<uchar>(j, i) == 0)
                    {
                        pos[j]++;
                    }
                }
            }
        }
    
        return 0;
    }

    上面代码提到的vector pos就是用于存储垂直投影和水平投影的位置的,我们可以根据它来确定行的位置。我们先把水平投影画出来。

    下面是画出水平(垂直)投影图的代码实现。

    void draw_projection(vector<int>& pos, int mode)
    {
        vector<int>::iterator max = std::max_element(std::begin(pos), std::end(pos)); //求最大值
        if (mode == H_PROJECT)
        {
            int height = pos.size();
            int width = *max;
            Mat project = Mat::zeros(height, width, CV_8UC1);
            for (int i = 0; i < project.rows; i++)
            {
                for (int j = 0; j < pos[i]; j++)
                {
                    project.at<uchar>(i, j) = 255;
                }
            }
            imshow("horizational projection", project);
    
        }
        else if (mode == V_PROJECT)
        {
            int height = *max;
            int width = pos.size();
            Mat project = Mat::zeros(height, width, CV_8UC1);
            for (int i = 0; i < project.cols; i++)
            {
                for (int j = project.rows - 1; j >= project.rows - pos[i]; j--)
                {
                    //std::cout << "j:" << j << "i:" << i << std::endl;
                    project.at<uchar>(j, i) = 255;
                }
            }
            imshow("vertical projection", project);
        }
    
        waitKey();
    }

    水平投影图:

    通过上面的水平投影图,我们很容易就能确定每一行文字的位置,确定的思路如下:我们可以以每个小山峰的起始结束点作为我们文本行的起始结束点,当然我们要对这些山峰做些约束,比如这些山峰的跨度不能太小。这样子我们就得到每一个文本行的位置,接着我们就根据这些位置将每个文本行切割下来用于接下来的单个字符的切割。

    //获取每个分割字符的范围,min_thresh:波峰的最小幅度,min_range:两个波峰的最小间隔
    int GetPeekRange(vector<int> &vertical_pos, vector<char_range_t> &peek_range, int min_thresh = 2, int min_range = 10)
    {
        int begin = 0;
        int end = 0;
        for (int i = 0; i < vertical_pos.size(); i++)
        {
            if (vertical_pos[i] > min_thresh && begin == 0)
            {
                begin = i;
            }
            else if (vertical_pos[i] > min_thresh && begin != 0)
            {
                continue;
            }
            else if (vertical_pos[i] < min_thresh && begin != 0)
            {
                end = i;
                if (end - begin >= min_range)
                {
                    char_range_t tmp;
                    tmp.begin = begin;
                    tmp.end = end;
                    peek_range.push_back(tmp);
                    begin = 0;
                    end = 0;
                }
    
            }
            else if (vertical_pos[i] < min_thresh || begin == 0)
            {
                continue;
            }
            else
            {
                //printf("raise error!\n");
            }
        }
    
        return 0;
    }

    切割每一行,然后我们得到了一行文本,我们继续对这行文本进行垂直投影。

    紧接着我们根据垂直投影求出来每个字符的边界值进行单个字符切割。方法与垂直投影的方法一样,只不过,因为字符排列得比较紧密,仅通过投影确定字符得到的结果往往不够准确的。不过先不管了,先切下来看看。

    从上图看出,切割效果不太好,那多切割几行再看看。

    效果确实不咋滴,那换成英文文档来测试这个切割算法。

    比如切割这个英语文本图片

    切割效果还是很不错的:

    那为什么英语的切割效果很好,但中文效果一般呢?

    分析其原因,这其实跟中文的字体复杂度有关的,中文的字符的笔画和形态都比英文的多,更重要的是英文字母都是绝大部分都是联通体,切割起来很简单,但是汉字多存在左右结构和上下结构,很容易造成过度切割,即把一个左右偏旁的汉字切成了两份,比如上面的“则”字。

    针对行字符分割,左右偏旁的字难以分割的情况,我觉得可以做以下处理:

    1. 先用通用的分割方法切割字符,得到一堆候选的切割字符集合。
    2. 统计字符集合的大多数字符的尺寸,作为标准尺寸。
    3. 根据标准尺寸选出标准的字符,切割保存。并对切割保存好的字符原位置涂成白色
    4. 对剩下下来的图片进行腐蚀,让字体粘连。
    5. 用1中算法再次分割,得到完整字体集合。

    因为以上的思路可能只适应于纯汉字文本,所以就不贴代码了。

    最后贴几张分割字符的图吧,感觉分割效果不太让人满意,主要是汉字的分割确实很有难度,左右偏旁的字经常分割错误。

    英文的切割还是比较简单的,毕竟英文字母基本都是联通体,而且没有像汉字那样的左右结构。

    对于字体间隔比较宽的汉字文档,总的看来分割任务基本完成,但是左右结构的汉字依然难以正确分割。

     

    最后看一下一些字体较小,字体间隔较窄的情况。这类情况确实分割效果大打折扣,因为每个字体粘连过于接近,字体的波谷很难确定下来,进而造成切割字符失败。

    总结

    汉字字符切割,看似简单,做起来其实很难做得很好,我也对此查阅了很多论文,发现其实很多论文也谈到了,汉字确实很那做到一个高正确率的分割,直至现在还没有一统江湖的解决方案。汉字切割的失败,就会直接导致了后面OCR识别的失败,这也是当前很多一些很厉害的OCR公司都没法把汉字做到100%识别的一个原因吧。所以这个问题就必须得到很好的解决。现在解决汉字切割失败(过切割,一个字被拆成两个)的较好方法是,在OCR识别中再把它修正。比如“刺”字被分为两部分了,那么我们就直接将这两个“字”送去识别,结果当然是得到一个置信度很低的一个反馈,那么我们就将这两个部分往他们身边最近的、而且没被成功识别的部分进行合并,再将这个合并后的字送进OCR识别,这样子我们就可以通过识别反馈来完成汉字的正确分割和识别了。既然一些基于图像处理的方法基本很难把汉字分割的效果做得很好,那深度学习呢?我先去试试,效果好的话再分享给大家。

    展开全文
  • 本文使用C++了一个手动切割的小工具,如截图所示: 第一张图为切割过程的一张截图,其使用方法为将字符框住即可完成切割 下图为切割之后的单字符图片: 为了方便各位实验,本文将在本博客中上传切割好...

    场景中的文字存在字符尺寸大小不一、间隔不等的情况,因此很难采用自动切割的方法将检测出的文本行切割为单字符。

    这种情况下则需要手动切割为单字符,然后在进行归一化等处理。

    本文使用C++写了一个手动切割的小工具,如截图所示:

    第一张图为切割过程的一张截图,其使用方法为将字符框住即可完成切割


    下图为切割之后的单字符图片:


    为了方便各位实验,本文将在本博客中上传切割好的自然场景的英文字符的数据及切割的工具。

    展开全文
  • OCR技术2-文字定位与切割

    千次阅读 2018-10-28 17:03:49
    要做文字识别,第一步要考虑的就是怎么将每一个字符从图片中切割下来,然后才可以送入我们设计好的模型进行字符识别。现在就以下面这张图片为例,说一说最一般的字符切割的步骤是哪些。 当然,我们实际上要识别的...

    要做文字识别,第一步要考虑的就是怎么将每一个字符从图片中切割下来,然后才可以送入我们设计好的模型进行字符识别。现在就以下面这张图片为例,说一说最一般的字符切割的步骤是哪些。

    当然,我们实际上要识别的图片很可能没上面那张图片如此整洁,很可能是倾斜的,或者是带噪声的,又或者这张图片是用手机拍下来下来的,变得歪歪扭扭,所以需要进行图片预处理,把文本位置矫正,把噪声去除,然后才可以进行进一步的字符分割和文字识别。这些预处理的方法在我的前面几篇博客都有提到了,大家可以参考参考:

    透视矫正

    水平矫正

    在预处理工作做好之后,我们就可以开始切割字符了。最普通的切割算法可以总结为以下几个步骤:

    1. 对图片进行水平投影,找到每一行的上界限和下界限,进行行切割
    2. 对切割出来的每一行,进行垂直投影,找到每一个字符的左右边界,进行单个字符的切割

    一看只有两个步骤,好像不太难,马上编程实现看看效果。

    首先是行切割。这里提到了水平投影的概念,估计有的读者没听过这个名词,我来解释一下吧。水平投影,就是对一张图片的每一行元素进行统计(就是往水平方向统计),然后我们根据这个统计结果画出统计结果图,进而确定每一行的起始点和结束点。下面提到的垂直投影也是类似的,只是它的投影方向是往下的,即统计每一列的元素个数。

    根据上面的解释,我们可以写出一个用于水平投影和垂直投影的函数。

    #define V_PROJECT 1  //垂直投影(vertical)
    #define H_PROJECT 2  //水平投影(horizational)
    
    typedef struct
    {
        int begin;
        int end;
    
    }char_range_t;
    
    
    
    //获取文本的投影以用于分割字符(垂直,水平),默认图片是白底黑色
    int GetTextProjection(Mat &src, vector<int>& pos, int mode)
    {
        if (mode == V_PROJECT)
        {
            for (int i = 0; i < src.rows; i++)
            {
                uchar* p = src.ptr<uchar>(i);
                for (int j = 0; j < src.cols; j++)
                {
                    if (p[j] == 0)  //是黑色像素
                    {
                        pos[j]++;
                    }
                }
            }
        }
        else if (mode == H_PROJECT)
        {
            for (int i = 0; i < src.cols; i++)
            {
    
                for (int j = 0; j < src.rows; j++)
                {
                    if (src.at<uchar>(j, i) == 0)
                    {
                        pos[j]++;
                    }
                }
            }
        }
    
        return 0;
    }

    上面代码提到的vector pos就是用于存储垂直投影和水平投影的位置的,我们可以根据它来确定行的位置。我们先把水平投影画出来。

    下面是画出水平(垂直)投影图的代码实现。

    void draw_projection(vector<int>& pos, int mode)
    {
        vector<int>::iterator max = std::max_element(std::begin(pos), std::end(pos)); //求最大值
        if (mode == H_PROJECT)
        {
            int height = pos.size();
            int width = *max;
            Mat project = Mat::zeros(height, width, CV_8UC1);
            for (int i = 0; i < project.rows; i++)
            {
                for (int j = 0; j < pos[i]; j++)
                {
                    project.at<uchar>(i, j) = 255;
                }
            }
            imshow("horizational projection", project);
    
        }
        else if (mode == V_PROJECT)
        {
            int height = *max;
            int width = pos.size();
            Mat project = Mat::zeros(height, width, CV_8UC1);
            for (int i = 0; i < project.cols; i++)
            {
                for (int j = project.rows - 1; j >= project.rows - pos[i]; j--)
                {
                    //std::cout << "j:" << j << "i:" << i << std::endl;
                    project.at<uchar>(j, i) = 255;
                }
            }
            imshow("vertical projection", project);
        }
    
        waitKey();
    }

    水平投影图:

    通过上面的水平投影图,我们很容易就能确定每一行文字的位置,确定的思路如下:我们可以以每个小山峰的起始结束点作为我们文本行的起始结束点,当然我们要对这些山峰做些约束,比如这些山峰的跨度不能太小。这样子我们就得到每一个文本行的位置,接着我们就根据这些位置将每个文本行切割下来用于接下来的单个字符的切割。

    //获取每个分割字符的范围,min_thresh:波峰的最小幅度,min_range:两个波峰的最小间隔
    int GetPeekRange(vector<int> &vertical_pos, vector<char_range_t> &peek_range, int min_thresh = 2, int min_range = 10)
    {
        int begin = 0;
        int end = 0;
        for (int i = 0; i < vertical_pos.size(); i++)
        {
            if (vertical_pos[i] > min_thresh && begin == 0)
            {
                begin = i;
            }
            else if (vertical_pos[i] > min_thresh && begin != 0)
            {
                continue;
            }
            else if (vertical_pos[i] < min_thresh && begin != 0)
            {
                end = i;
                if (end - begin >= min_range)
                {
                    char_range_t tmp;
                    tmp.begin = begin;
                    tmp.end = end;
                    peek_range.push_back(tmp);
                    begin = 0;
                    end = 0;
                }
    
            }
            else if (vertical_pos[i] < min_thresh || begin == 0)
            {
                continue;
            }
            else
            {
                //printf("raise error!\n");
            }
        }
    
        return 0;
    }

    切割每一行,然后我们得到了一行文本,我们继续对这行文本进行垂直投影。

    紧接着我们根据垂直投影求出来每个字符的边界值进行单个字符切割。方法与垂直投影的方法一样,只不过,因为字符排列得比较紧密,仅通过投影确定字符得到的结果往往不够准确的。不过先不管了,先切下来看看。

     从上图看出,切割效果不太好,那多切割几行再看看。

    效果确实不咋滴,那换成英文文档来测试这个切割算法。

    比如切割这个英语文本图片

    切割效果还是很不错的:

     

    那为什么英语的切割效果很好,但中文效果一般呢?

    分析其原因,这其实跟中文的字体复杂度有关的,中文的字符的笔画和形态都比英文的多,更重要的是英文字母都是绝大部分都是联通体,切割起来很简单,但是汉字多存在左右结构和上下结构,很容易造成过度切割,即把一个左右偏旁的汉字切成了两份,比如上面的“则”字。

    针对行字符分割,左右偏旁的字难以分割的情况,我觉得可以做以下处理:

    1. 先用通用的分割方法切割字符,得到一堆候选的切割字符集合。
    2. 统计字符集合的大多数字符的尺寸,作为标准尺寸。
    3. 根据标准尺寸选出标准的字符,切割保存。并对切割保存好的字符原位置涂成白色
    4. 对剩下下来的图片进行腐蚀,让字体粘连。
    5. 用1中算法再次分割,得到完整字体集合。

    因为以上的思路可能只适应于纯汉字文本,所以就不贴代码了。

    最后贴几张分割字符的图吧,感觉分割效果不太让人满意,主要是汉字的分割确实很有难度,左右偏旁的字经常分割错误。

    英文的切割还是比较简单的,毕竟英文字母基本都是联通体,而且没有像汉字那样的左右结构。

     对于字体间隔比较宽的汉字文档,总的看来分割任务基本完成,但是左右结构的汉字依然难以正确分割。

    最后看一下一些字体较小,字体间隔较窄的情况。这类情况确实分割效果大打折扣,因为每个字体粘连过于接近,字体的波谷很难确定下来,进而造成切割字符失败。

    总结

    汉字字符切割,看似简单,做起来其实很难做得很好,我也对此查阅了很多论文,发现其实很多论文也谈到了,汉字确实很那做到一个高正确率的分割,直至现在还没有一统江湖的解决方案。汉字切割的失败,就会直接导致了后面OCR识别的失败,这也是当前很多一些很厉害的OCR公司都没法把汉字做到100%识别的一个原因吧。所以这个问题就必须得到很好的解决。现在解决汉字切割失败(过切割,一个字被拆成两个)的较好方法是,在OCR识别中再把它修正。比如“刺”字被分为两部分了,那么我们就直接将这两个“字”送去识别,结果当然是得到一个置信度很低的一个反馈,那么我们就将这两个部分往他们身边最近的、而且没被成功识别的部分进行合并,再将这个合并后的字送进OCR识别,这样子我们就可以通过识别反馈来完成汉字的正确分割和识别了。既然一些基于图像处理的方法基本很难把汉字分割的效果做得很好,那深度学习呢?我先去试试,效果好的话再分享给大家。

     原文地址:

    http://www.cnblogs.com/skyfsm/p/8029668.html

     

    欢迎扫码关注我的微信公众号

     

    展开全文
  • Tomcat 日志切割

    千次阅读 2019-06-27 16:24:15
    一、前言 随着每天业务的增长,Tomcat 的catalina.out日志 变得越来越大,占用磁盘空间不说。要查看某个时候的日志的...我们采用日期形式切割catalina.out 日志,因此采用cronlog 软件切割: 1、安装 cronlog ...

    一、前言

    随着每天业务的增长,Tomcat 的catalina.out日志 变得越来越大,占用磁盘空间不说。要查看某个时候的日志的时候,庞大的日志让你顿时无从下手,所以日志的切割的变得刻不容缓。而且,切割后的日志,还可以定期清理掉久远的日志……

    二、Tomcat 日志分割

    我们采用日期形式切割catalina.out 日志,因此采用cronlog 软件切割:

    1、安装 cronlog

    yum install -y cronolog httpd
    

    2、修改bin/catalina.sh文件

    第一步:

    if [ -z "$CATALINA_OUT" ] ; then
    
    CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
    fi
    

    改为:

    if [ -z "$CATALINA_OUT" ] ; then
    CATALINA_OUT="$CATALINA_BASE"/logs/%Y-%m-%d.catalina.out
    fi
    

    第二步:

    touch "$CATALINA_OUT"
    

    改为:

    #touch "$CATALINA_OUT"
    

    第三步:

    org.apache.catalina.startup.Bootstrap "$@" start 
    
    >> "$CATALINA_OUT" 2>&1 "&"
    

    改为:

    org.apache.catalina.startup.Bootstrap "$@" start 2>&1 
    | /usr/sbin/cronolog "$CATALINA_OUT" >> /dev/null&
    

    备注:这里有两处这个样子的,似乎改下面那处就可以了,我是把两处都改了…

    Tomcat 日志切割

    3、重启服务即可。

    Tomcat 日志切割

    tips:不能再用原来的catalina.out 来输出日志了哦,因为刚刚不是被我们注释掉了…

    Tomcat 日志切割

    三、定时清理日志

    想要写一个Shell脚本,定期清理掉久远的日志文件 ,避免磁盘不断被占用。

    1、创建Shell 脚本:

    touch auto_del_log.sh
    chmod +x auto_del_log.sh

    #!/bin/sh
    find /usr/local/fz_regulator/logs/ -mtime +60 -name "*.out" -exec rm -rf {} ;
    find /usr/local/fz_middlekey/logs/ -mtime +60 -name "*.out" -exec rm -rf {} ;
    

     

    • find:linux的查找命令,用户查找指定条件的文件;

    • /usr/local/fz_middlekey/logs/:想要进行清理的任意目录;

    • -mtime:标准语句写法;

    • +60:查找60天前的文件,这里用数字代表天数;

    • ".out":希望查找的数据类型,".jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;

    • -exec:固定写法;

    • rm -rf:强制删除文件,包括目录;

    • {} ; :固定写法,一对大括号+空格++;

    2、安装定时器 crontabs

    yum install crontabs
    
    /sbin/service crond start //启动服务
    

    3、加入定时任务

    crontab -e //编辑当前用户的crontab文件,可指定具体的用户

    加入我们的定时任务(表示每天4点10分跑一次脚本):

    10 4 * * * /usr/local/auto_del_log.sh >/dev/null 2>&1

    作者:jmcui 

    展开全文
  • 要做文字识别,第一步要考虑的就是怎么将每一个字符从图片中切割下来,然后才可以送入我们设计好的模型进行字符识别。现在就以下面这张图片为例,说一说最一般的字符切割的步骤是哪些。当然,我们实际上要识别的图片...
  • 极限切割 SDK 技术手册

    千次阅读 2016-12-03 11:27:23
    《极限切割》的第一个版本是我在在外地做项目的时候,利用晚上休息时间在小旅馆的,然后作为免费软件在网上发布。后来在热心客户们的建议和指导下,于2004年完成了《极限切割》的第一个商品化版本并实现销售。经过...
  • 图像处理之行切割&切割不规则行

    千次阅读 2018-07-24 22:24:20
    7、全部的行切割完毕后将图片上下左右的白边掉。 代码 1、获取原图像第一行的部分区域的结束行,开始行设置为0。 /* 获取原图像第一行的部分区域的结束行 @param ImagePixel 保存图像像素的数组 @...
  • 一般来说,现在低价的mp4(一般分辨率都是320*240)图像浏览都不支持对任意区域缩放,看其他图片还是可以,但是看漫画简直是天方夜谭,上面的几乎不可能看清楚。 唯一的办法就是把图片切割,我在网上寻找了一下,并...
  • 上次只了特定目录下的文件切割与合并,有点遗憾, 这次,我了一个图形界面来实现对文件的切割与合并。文件切割: 用户可以自己选择需要切割的文件, 软件会自动将切割后的文件全部放入这目录下的一个新文件夹...
  • input标签用回车或空格切割,支持自定义回车和空格,最大标签数等。 代码注释非常详细,相信你肯定拿到手就会用。也是我下载回来的,但是里面内容太过复杂,代码不清晰,我重新整理了一下,并写入了注释说明,一看就...
  • Openresty学习使用(四)日志切割

    千次阅读 2019-06-22 08:45:26
    Openresty学习使用(四)日志切割说明Logrotate日志切割问题执行时间的问题如何告诉应用程序重新打开日志文件 说明 安装新版nginx的时候,会自动在/etc/logrotate.d目录下面生成一个nginx的文件,每天会自动进行日志...
  • java实现上传图片进行切割

    千次阅读 2014-08-22 13:26:17
    为什么我要进行上传的图片进行切割呢,我这个项目的图片是部门logo,每个部门都可以选择不同的logo,但是要应对浏览器的兼容以及拉伸,我选择了把一张图片成左、中、右和剩下的部分,因为左边和中变可能会有图案...
  • 熔化焊接与热切割试题及解析考前必练!安全生产模拟考试一点通每个月更新熔化焊接与热切割作业考试题库题目及答案!多做几遍,其实通过熔化焊接与热切割实操考试视频很简单。 1、【单选题】 触电金属化后的皮肤...
  • 自然场景下的文本区域检查、切割、识别与这里讨论的内容有一定差别。 ################################ 上半部分 ######################################## 前一段时间几个拍照搜题的软件挺流行(比如:...
  • 前几天做头条笔试合并重复区间需要用到从带有逗号和分号的字符串中提取出数字 比如从字符串: "1,10;...2、16行如果成:char* s=str.c_str();不加char*强制转换的话会报错: 因为此时的...
  • 图片文字切割垂直投影算法

    千次阅读 2019-02-28 19:43:45
    参考了网上的一些切割法,稍微优化了下,加了文字合并的方法,还得改进。有时间再来详细说说流程。 原始图: 切割后如图: 代码如下:(希望能给些建议) import cv2 import numpy as np class fontcut...
  • 学vc也几个星期了 总想个小小的东西出来 但却担心自己懂的还太少 刚好带做项目老师给我出了个题目 就是个能分割文件的小冬冬  并要我2个星期完成 于是便恨下心开始了  想不到不到一星期就完成了 哈哈 ...
  • java切割字符串,以特殊符号为切割符号。
  • 《运维中的日志切割操作梳理(Logrotate/python/shell 脚本实现)》 配置文件介绍 切割介绍 分享一例曾经使用过的 nginx 日志切割处理脚本 logrotate 日志分割配置: 日志分割脚本 crontab 定时执行 php 脚本...
  • java字符串切割、获取对应字符等

    千次阅读 2019-06-03 09:16:53
    之前做过对字符切割等操作,现在也忘了差不多(忘了做笔记),所有再回头总结下。 Matcher(英文解释:匹配器) 常用方法:(我也只了个别的案例用法) find():尝试查找与该模式匹配的输入序列的的下一个子序列...
  • Java split 在特殊业务下切割数组 String ids2 = "100,,,,"; // java 按, 切割成数组。 String[] id = ids1 .split(","); String idA = id[0]; String idB = id[1]; String idC = id[2]; ...
  • 有空隙的图彻底拆开(比如"回"会被拆成大小俩"口") * @param img 需要拆解的图(java.awt.image.BufferedImage) * @param subImgs 用于装填拆解后的图片碎块 */ private static void getImgCell...
  • linux下nohup日志切割方案

    万次阅读 2017-01-07 11:34:14
     我这里用的一般提交命令:nohup ./execute.sh &,这样在当前目录就有nohup.out文件了,这时候可以想办法定时将nohup.out分成,多个小文件,但同时又要使nohup.out不会无限增长下去(一般情况下是程序不能中断的)...
  • Python-opencv进行图片切割与保存

    千次阅读 2019-08-23 12:24:52
    参考他的代码用Python了一个图片切割的代码,来制作数据集。 首先在opencv安装目录下搜索digits得到一张图片“digits.png”,该图片大小为1000×2000。其中包含0~9十个数字,每个数字有500个,各个数字块的大小为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,155
精华内容 15,662
关键字:

切割的切字怎么写