public static void main(String[] args) throws FileNotFoundException, IOException
{
String savepath = "D:\\myworkspace\\Ftp\\csdn\\44.bmp";
//打开图片
IJ.open("D:\\myworkspace\\Ftp\\csdn\\4.bmp");
//设置大小
//IJ.run("Size...", "width=30 height=30 constrain interpolate");
//去噪
//IJ.run("Remove Outliers...", "radius=2 threshold=50 which=Dark");
IJ.run("Despeckle");
//二值
IJ.run("Make Binary");
//另存图片
IJ.save(savepath);
//读取另存图片
BufferedImage img = ImageIO.read(new FileInputStream(savepath));
//切割
BufferedImage[] bimg = cutter(img);
for(int i = 0; i < bimg.length; i++)
{
if(bimg[i] != null)
ImageIO.write(bimg[i], "BMP", new File("D:\\myworkspace\\Ftp\\checkCode\\" + (i+1) + ".bmp"));
}
}
/**
* 切割图片(对于数据不重叠有效)
* @param img
* @return
* @throws IOException
*/
public static BufferedImage[] cutter(BufferedImage image) throws IOException
{
BufferedImage checkCode[] = null;
int height = image.getHeight();
int width = image.getWidth();
List<List<Integer>> all = new ArrayList<List<Integer>>();
List<Integer> tmp = null;
//纵向扫描
for(int w = 0; w < width - 0; w++)
{
int h = 0;
for(; h < height - 0; h++)
{
int px = image.getRGB(w, h);
//System.out.print(px == -1 ? "-" : "0");
//如果遇到非白 色,则记录该y值的值
if(px != -1)
{
if(tmp == null)
{
tmp = new ArrayList<Integer>();
}
tmp.add(w);
break;
}
}
//如果tmp有记录值,并且上一次扫描中纵向没有任何颜色,那么将记录加入all并截段重计
//或者最后一个数据超过边框
if((tmp != null && (h == height)) || (w == (width - 1)))
{
all.add(tmp);
tmp = null;
}
//System.out.println();
}
checkCode = new BufferedImage[all.size()];
for(int i = 0; i < all.size(); i++)
{
List<Integer> list = all.get(i);
if(list == null) continue;
//开始y轴
int yStart = list.get(0);
//结束y轴
int yEnd = list.get(list.size() - 1);
System.out.println(yStart + "," + yEnd);
//截取开始与结束的记录
BufferedImage bimg = image.getSubimage(yStart, 0, yEnd - yStart, height);
checkCode[i] = bimg;
}
return checkCode;
}
分享到:
相关推荐
本代码修改了ImageJ的java代码,使其可以在C++上也能运行,只有少部分代码是基于OpenCV,大部分是基于STL
[Packt Publishing] ImageJ 图片处理教程 英文版 [Packt Publishing] Image Processing with ImageJ E Book ☆ 图书概要:☆ Discover the incredible possibilities of ImageJ from basic image processing to...
ImageJ 查看RAW图像工具,ImageJ 查看RAW图像工具,ImageJ 查看RAW图像工具
ImageJ能够显示,编辑,分析,处理,保存,打印8位,16位,32位的图片, 支持TIFF, PNG, GIF, JPEG, BMP, DICOM, FITS等多种格式。ImageJ支持图像栈功能,即在一个窗口里以多线程的形式层叠多个图像, 并行处理。...
ImageJ中的MTF计算插件
image j条带灰度值分析软件,科研必备
第一步先通过二值化处理把干扰线去掉: from PIL import Image # 二值化处理 def two_value(): for i in range(1,5): # 打开文件夹中的图片 image=Image.open('./Img/'+str(i)+'.jpg') # 灰度图 lim=image....
利用image j 分析protein array的灰度值和面积,可以定量完成分析
imagej的源码
对图片的分割,和保存,因为是新手有可能会存在BUG,希望大家多多指教。
非常好用的一款java开发的图片识别软件,功能强大,简单易用。
ImageJ 二次开发jar包,Java开发使用,可用做imageJ二次开发参考使用,官方网址:https://imagej.nih.gov/ij/
ImageJ用户手册中文版,共59页。详细介绍了ImageJ软件各菜单功能解释,是ImageJ软件一份很好的速查手册。
非常好用的IMAGEJ工具,大小非常小,非常适合工作使用。可以放在SD卡中直接运行,用于查看raw图
基于离散余弦变换的图像去噪和基于小波变换的图像去噪
ImageJ2 is a new version of ImageJ seeking to strengthen both the software and its community. Internally, it is a total redesign of ImageJ, but it is backwards compatible with ImageJ 1.x via a "legacy...
imagej教程.pdf
mageJ是一个基于java的公共的图像处理软件,它是由...除了基本的图像操作, 比如缩放,旋转, 扭曲, 平滑处理外,ImageJ还能进行图片的区域和像素统计, 间距,角度计算, 能创建柱状图和剖面图,进行傅里叶变换。
ImageJ是一款基于JAVA开发的图像处理工具,Fiji(Fiji is just ImageJ)集成了更强大的图像处理功能。版本为windows 64位。
利用imageJ平台的插件,获取图像的SFR信息。