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 ...
随机推荐
- svn使用方法以及使用教程
一.什么是svnSVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS. 二.svn的下载安装下载地址:https: ...
- System.Web.Mvc.FileContentResult.cs
ylbtech-System.Web.Mvc.FileContentResult.cs 1.程序集 System.Web.Mvc, Version=5.2.3.0, Culture=neutral, ...
- js 实现横向轮播效果
参考:https://www.cnblogs.com/LIUYANZUO/p/5679753.html html: <!DOCTYPE html> <html> <hea ...
- pandas一些基本操作(DataFram和Series)_2
import numpy as nparr1 = np.arange(32).reshape(8,4)print(arr1)arr1 = arr1.reshape(-1);print(arr1)arr ...
- 数据挖掘-diabetes数据集分析-糖尿病病情预测_线性回归_最小平方回归
# coding: utf-8 # 利用 diabetes数据集来学习线性回归 # diabetes 是一个关于糖尿病的数据集, 该数据集包括442个病人的生理数据及一年以后的病情发展情况. # 数据 ...
- Ubuntu 卸载nvidia驱动
1.切换为集成显卡 如果没有,那么先切换到字符界面 2.卸载驱动 sudo apt-get --purge remove nvidia* sudo apt autoremove To remove C ...
- Jqgrid 序号列宽度调整
// 遍历jqgrid 使其序号列宽度为45 function setwidth() { $("table[role='grid']").each(function () {//j ...
- spring中的ResponseEntity理解
参考: https://blog.csdn.net/weixin_37869477/article/details/82762976 https://blog.csdn.net/sswqzx/arti ...
- Unity 用代码设置UGUI的渲染层级
用代码设置UGUI渲染无非和三个API有关: 1.SetAsFirstSibling(); 2.SetAsLastSibling(); 3.SetSiblingIndex(n) SetAsFirstS ...
- Activiti 使用小结
自定义表单类型 使用动态表单,需要定义表单的字段以及属性,在WEB流程设计器中没有Default字段(Eclipse中有),给设计带来了一定的困难,下面介绍如何在WEB流程设计器中扩展表单. 首先在s ...