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 ...
随机推荐
- myeclipse14 破解教程
myeclipse14 破解教程 注意:先不要打开myeclipse,破解完成之后再打开 Myeclipse-2014-GA-破解文件 链接: https://pan.baid ...
- 《DSP using MATLAB》Problem 8.3
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- windows server 文件夹和搜索选项被禁用了
当我们需要调整 windows 文件夹相关的配置时,却发现“文件夹和搜索选项”被禁用了,下图是恢复正常的情况.被禁用时显示灰色,不能点击. 下面给出解决步骤: 打开“组策略”. 然后依次展开“用户配置 ...
- SVN 环境搭建
安装配置 安装环境 #查看系统版本环境 [root@svn ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [root@svn ~]# u ...
- [转]Visual Studio 2010生成解决方案时,提示磁盘空间不足!
最近几天,使用VS调试时总是出现提示:磁盘空间不足.我觉得可能有两种可能: 1.系统盘已被木马侵袭.历时4小时的全盘扫描没有病毒提示,只好删除了一些不必要的软件: 2.使用VS2010调试 ...
- [转]【全面解禁!真正的Expression Blend实战开发技巧】第六章 认识ListBox
反反复复考虑后,准备把这一章的切入点瞄准ListBox.并用了一个看起来有点别扭的标题“认识ListBox",许多人看到这里就不爱看了,即使是大学里用winform的学生也会说ListBox ...
- Java开源诊断工具 Arthas 发布v3.1.0
Arthas 自2018年9月份上线以来「传送门」,已收获近万个star,感谢开发者们的认可.此次Arthas 3.1.0版本的发布,不仅带来大家投票出来的新LOGO,还带来强大的新功能和更好的易用性 ...
- phpqrcode.php 生成二维码图片用于推广
<?php /* * PHP QR Code encoder * * This file contains MERGED version of PHP QR Code library. * It ...
- Django项目:CRM(客户关系管理系统)--60--50PerfectCRM实现CRM客户报名流程学生合同URL随机码
# sales_urls.py # ————————47PerfectCRM实现CRM客户报名流程———————— from django.conf.urls import url from bpm. ...
- git add命令后出现Another git process seems to be running in this repositor...错误提示
问题原因 在控制台使用git命令操作时,使用了 git commit 进入了commit信息书写页面,大多数人因为不太熟悉vim的操作导致不知怎么结束编写,就进行了直接关闭控制台的操作,但是此时git ...