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.实际上系统校验的方法和手工校验的方法在底层的基本实现是相同的.但是使用系统校验的 ...
随机推荐
- 安装Docker 服务
curl -fsSL https://get.docker.com/ | sh 执行到这一部分出错: The program 'curl' is currently not installed. Yo ...
- 修改 ulimit 参数
sudo vim /etc/security/limits.conf 文件下加: * hard nofile 999999 * soft nofile 999999 * soft nproc 1024 ...
- 初识OpenCV-Python - 007: 平滑图像
本节内容主要将如何平滑图像.如通过低通道滤波模糊图像.或者自定义滤波处理图像. import cv2import numpy as npfrom matplotlib import pyplot as ...
- POJ 2318 /// 判断点与直线的位置关系
题目大意: n块玩具箱隔板 m个玩具落地点 给定玩具箱的左上和右下两个端点 接下来给定n块隔板的上点的x和下点的x(因为y就是玩具箱的上下边缘) 接下来给定m个玩具落地点 输出n+1个区域各有的玩具数 ...
- P1736 创意吃鱼法 /// DP
题目大意: https://www.luogu.org/problemnew/show/P1736 题解 dplr[][] 当前点左边(副对角线时为右边)有多少个连续的0 dpup[][] 当前点上边 ...
- js 实时监听textarea输入
html: <textarea class="area" name="" id="text1" maxlength="100 ...
- websocket 实现消息推送(转)
介绍 现很多网站为了实现即时通讯,所用的技术都是轮询(polling).轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器. ...
- naptime
naptime 有一个长度为n的序列\(a_i\),首尾相接组成了一个环,现在要在这个环上选出若干个区间,使区间长度之和恰好为b,然后忽略区间的顺时针开头元素,权值累加区间中所有的数字,问权值的最大值 ...
- 动态设置背景图片,class,style
1.动态设置背景图片<div v-if='img ' :style="{background: 'url('+ img +')',backgroundSize:cover }" ...
- cache方法用于查询缓存操作,也是连贯操作方法之一。
cache方法用于查询缓存操作,也是连贯操作方法之一. cache可以用于select.find和getField方法,以及其衍生方法,使用cache方法后,在缓存有效期之内不会再次进行数据库查询操作 ...