opencv4 java 验证码噪点 8邻域降噪
工程下载地址https://download.csdn.net/download/qq_16596909/11503962

程序运行后,同样会把图片存放在以下路径

首先来看一下原图

二值化后,可以把这些颜色都去掉

噪点还是非常多的,不太利于识别
所以还需要降噪
至于什么连通域 水波填充,网上没有opencv+java的案例
所以采用8邻域降噪

可以看到效果还可以,把单个像素的噪点都消除了
还有大块的噪点无法解决
这种,计算连通域然后再消除,应该没问题
不过目前还不会
看代码
首先需要去边框
private org.opencv.core.Mat removeBorder(org.opencv.core.Mat target) {
        int row = target.rows();//获取行
        int col = target.cols();//获取列数
        for (int i = ; i < col; i++) {
            target.put(, i, );//第一行
            target.put(row - , i, );//最后一行
        }
        for (int i = ; i < row; i++) {
            target.put(i, , );//第一列,左边框
            target.put(i, col - , );//最后一列
        }
        return target;
    }
然后8邻域去噪点
  private org.opencv.core.Mat removeNoisePixel(org.opencv.core.Mat target, double pNum) {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        int col = target.cols();
        int row = target.rows();
        //因为去了边框,所以,行列数,做减2处理,即不处理边框上的像素
        for (int x = ; x < col - ; x++) {
            for (int y = ; y < row - ; y++) {
                double[] binDataList = target.get(y, x);
                double binData = binDataList[];
                if (binData == ) {//黑色
                    double[] x1list = target.get(y - , x - );
                    double[] x2list = target.get(y - , x);
                    double[] x3list = target.get(y - , x + );
                    double[] x4list = target.get(y, x - );
                    double[] x6list = target.get(y, x + );
                    double[] x7list = target.get(y + , x - );
                    double[] x8list = target.get(y + , x);
                    double[] x9list = target.get(y + , x + );
                    double x1 = x1list[];
                    double x2 = x2list[];
                    double x3 = x3list[];
                    double x4 = x4list[];
                    double x6 = x6list[];
                    double x7 = x7list[];
                    double x8 = x8list[];
                    double x9 = x9list[];
                    if (x1 + x2 + x3 + x4 + x6 + x7 + x8 + x9 >= ) {
                        target.put(y, x, );//画一个白点
                    }
                }
            }
        }
        return target;
    }
opencv4 java 验证码噪点 8邻域降噪的更多相关文章
- Python图片验证码降噪 — 8邻域降噪
		简介 图片验证码识别的可以分为几个步骤,一般用 Pillow 库或 OpenCV 来实现,这几个过程是: 1.灰度处理&二值化 2.降噪 3.字符分割 4.标准化 5.识别 所谓降噪就是把不需 ... 
- opencv4 java投影
		工程下载 https://download.csdn.net/download/qq_16596909/11505994 比较适合与验证码的处理,毕竟八邻域降噪不能消除比较大的噪点,为了尽量减少噪点对 ... 
- Java 验证码、二维码
		Java 验证码.二维码 资源 需要: jelly-core-1.7.0.GA.jar网站: http://lychie.github.io/products.html将下载下来的 jelly ... 
- springMVC+Java验证码完善注册功能
		这篇文章简单的写了一个java验证码,为之前写过的springMVC注册功能加上验证码,验证码的作用就不多说了,防止机器人程序恶意注册什么的.. 其中User.java,加上了password和cod ... 
- java制作验证码(java验证码小程序)
		手动制作java的验证码 Web应用验证码的组成: (1)输入框 (2)显示验证码的图片 验证码的制作流程: 生成验证码的容器使用 j2ee的servlet 生成图片需要的类: (1) Buffere ... 
- Java 验证码识别库 Tess4j 学习
		Java 验证码识别库 Tess4j 学习 [在用java的Jsoup做爬虫爬取数据时遇到了验证码识别的问题(基于maven),找了网上挺多的资料,发现Tess4j可以自动识别验证码,在这里简单记录下 ... 
- JAVA 验证码生成(转)
		最近做了一下验证码的功能,网上找了一篇还不错,引用下:http://blog.csdn.net/ruixue0117/article/details/22829557 这篇文章非常好,但是web和js ... 
- Java 验证码工具类
		package com.wuyu.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import ... 
- java 验证码
		package lizikj.bigwheel.pcsystem.util;import javax.imageio.ImageIO; import java.awt.*; import java.a ... 
随机推荐
- HashMap数据结构
			2.1 HashMap 2.1.1 HashMap介绍 先看看HashMap类头部的源码: public class HashMap<K,V> extends AbstractMap< ... 
- JavaSE_10_IO流
			1.1 什么是IO 把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input 和输出output ,即流向内存是输入流,流出内存的输出流. 1.2 IO的分类 输入 ... 
- 洛谷P4550 【收集邮票】
			题目链接: 神仙题QAQ 题目分析: 概率期望题是不可能会的,一辈子都不可能会的QAQ 这个题也太仙了 首先明确一下题意里面我感觉没太说清楚的地方,这里是抽到第\(i\)次要\(i\)元钱,不是抽到第 ... 
- MyEclipse使用总结——MyEclipse安装maven插件[转]
			打开 myeclipse, MyEclipse --> Preferences -->Maven4MyEclipse 确定jdk是可用的 选择自己安装的maven: 点击Add选中我们的 ... 
- FreeMarker 自定义 TemplateDirectiveModel(二)
			FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker 与 Web 容器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP.它不 ... 
- java面向对象特征 — 一句话概括
			java基础学习总结之基本特征,最开始学习的时候,是形而上的理解,用了3年多,再回头看,理解起来颇为顺理成章 语言学习大概就是这样一种规律,学习,不甚解,应用,应用,渐深入人心,回头一看,恍然一悟 最 ... 
- java基础之完数判断
			完数: 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身.如果一个数恰好等于它的因子之和,则称该 ... 
- Mybatis Plus 入坑(含最新3.X配置)
			简介 Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 使用它可以简化单表的操作, 节省开发时间, 国人 ... 
- Anaconda如何配置多版本Python
			https://blog.csdn.net/guanmaoning/article/details/80031279 
- 嘴巴题5 「BZOJ1864」[ZJOI2006] 三色二叉树
			1864: [Zjoi2006]三色二叉树 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1195 Solved: 882 [Submit][Status ... 
