opencv4 java投影
工程下载
https://download.csdn.net/download/qq_16596909/11505994
比较适合与验证码的处理,毕竟八邻域降噪不能消除比较大的噪点,为了尽量减少噪点对后续识别精度产生负面影响,
最好还是把文字拆分为单个的字符图像,然后再去识别,精度会更高一些
垂直投影和水平投影结合起来分割,可以做到截取最小的分辨率,减少干扰

垂直投影
private org.opencv.core.Mat projectionVerticality(org.opencv.core.Mat mat) {
org.opencv.core.Mat projectionMat = mat.clone();//曲线救国,获取同样一个mat
projectionMat.setTo(new org.opencv.core.Scalar(255));//然后再把颜色换成白色
Double[] dotList = new Double[mat.cols()];//创建一个list用于存储每一列的黑点数量
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
System.out.println(mat.dump());
int col = mat.cols();
int row = mat.rows();
for (int x = 0; x < col; x++) {
dotList[x] = 0.0;
for (int y = 0; y < row; y++) {
double binData = mat.get(y, x)[0];
if (binData == 0) {//黑色
dotList[x]++;
}
}
}
//然后生成投影图
for (int x = 0; x < mat.cols(); x++) {
for (int y = 0; y < mat.rows(); y++) {
if (x == 147) {
System.out.println("下一行将会出现错误");
}
if (y < dotList[x]) {
projectionMat.put(y, x, 0);
System.out.println(x + "列" + y + "行");
}
}
}
return projectionMat;
}
水平投影
private org.opencv.core.Mat projectionHorizontal(org.opencv.core.Mat mat) {
org.opencv.core.Mat projectionMat = mat.clone();//曲线救国,获取同样一个mat
projectionMat.setTo(new org.opencv.core.Scalar(255));//然后再把颜色换成白色
Double[] dotList = new Double[mat.rows()];//创建一个list用于存储每一列的黑点数量
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
System.out.println(mat.dump());
int col = mat.cols();
int row = mat.rows();
for (int y = 0; y < row; y++) {
dotList[y] = 0.0;
for (int x = 0; x < col; x++) {
double binData = mat.get(y, x)[0];
if (binData == 0) {//黑色
dotList[y]++;
}
}
}
//然后生成投影图
for (int y = 0; y < mat.rows(); y++) {
for (int x = 0; x < mat.cols(); x++) {
try {
if (x < dotList[y]) {
projectionMat.put(y, x, 0);
}
} catch (Exception e) {
System.out.println("正在处理第:" + y + "行,第" + x + "列");
}
}
}
return projectionMat;
}
opencv4 java投影的更多相关文章
- opencv4 java 验证码噪点 8邻域降噪
工程下载地址https://download.csdn.net/download/qq_16596909/11503962 程序运行后,同样会把图片存放在以下路径 首先来看一下原图 二值化后,可以把这 ...
- OPENCV 图像缩放
工程下载地址 https://download.csdn.net/download/qq_16596909/11522434 opencv4 java netbeans开发,基于maven 可以按照倍 ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- [原创]java WEB学习笔记90:Hibernate学习之路-- -HQL检索方式,分页查询,命名查询语句,投影查询,报表查询
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Java基于opencv实现图像数字识别(五)—投影法分割字符
Java基于opencv实现图像数字识别(五)-投影法分割字符 水平投影法 1.水平投影法就是先用一个数组统计出图像每行黑色像素点的个数(二值化的图像): 2.选出一个最优的阀值,根据比这个阀值大或小 ...
- Ubuntu16桌面版编译OpenCV4的java库和so库
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)
轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Jav ...
- 【Java EE 学习 48】【Hibernate学习第五天】【抓取策略】【二级缓存】【HQL】
一.抓取策略. 1.hibernate中提供了三种抓取策略. (1)连接抓取(Join Fetch):这种抓取方式是默认的抓取方式.使用这种抓取方式hibernate会在select中内连接的方式获取 ...
- 【Java EE 学习 36】【struts2】【struts2系统验证】【struts2 ognl值栈】【struts2 ongl标签】【struts2 UI标签】【struts2模型驱动和令牌机制】
一.struts2系统验证 1.基于struts2系统验证的方式实际上就是通过配置xml文件的方式达到验证的目的. 2.实际上系统校验的方法和手工校验的方法在底层的基本实现是相同的.但是使用系统校验的 ...
随机推荐
- VS2010-MFC(对话框:属性页对话框及相关类的介绍)
转自:http://www.jizhuomi.com/software/164.html 一 属性页对话框的分类 属性页对话框想必大家并不陌生,XP系统中桌面右键点属性,弹出的就是属性页对话框,它通过 ...
- (34)C#异常
一.异常的层次结构 二.异常格式 异常的一般格式 try { //可能会抛出异常的代码 } catch { //发现错误后会运行这里面的代码 } finally { //写不论是否出现异常都执行的代码 ...
- Selenium+Webdriver被检测识别出来的应对方案
在写爬虫,面对很多js 加载的页面,很多人束手无策,更多的人喜欢用Senlenium+ Webdriver,古语有云:道高一尺魔高一丈.已淘宝为首,众多网站都针对 Selenium的js监测机制, 比 ...
- 重写、super关键字、final关键字、多态、子类型转换、抽象的初步了解
重写 含义 在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法.但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写.方法重写又称方法覆盖. 重写与重载的 ...
- C++的注释
### 1.2 注释 **作用**:在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码 **两种格式** 1. **单行注释**:// 描述信息 - 通常放在一行代码的上方,或者一条语句的 ...
- SUMMARY | 二分查找
package Search; public class biSearch { //标准的二分查找 public static int stdBiSearch(int[] array,int keyV ...
- SUMMARY | JAVA中的数据结构
String String类是不可修改的,创建需要修改的字符串需要使用StringBuffer(线程同步,安全性更高)或者StringBuilder(线程非同步,速度更快). 可以用“+”连接Stri ...
- godaddy账号以及域名被盗找回经历以及网络信息安全的思考
本案涉及到公司的一些机密信息,因此涉及到机密信息,我都将会用一些其他的代号进行替代.不影响读者理解本案.我会按照时间顺序讲述本案经过,是如何一步步找回godaddy账号的. 我供职的公司是一家网络科技 ...
- Tomasulo algorithm
https://en.wikipedia.org/wiki/Tomasulo_algorithm#Applications_and_legacy 1, what is Tomasulo algori ...
- csps模拟测试74梦境,玩具,飘雪圣域题解
题面:https://www.cnblogs.com/Juve/articles/11679226.html 梦境: 其实还是挺水的,排序错了过不了样例,打了个二分图匹配就跑了 #include< ...