版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、最近一直在开发一个用于自动发帖的工具,用 HttpClient 模拟客户端浏览器注册发帖。但是碰到了 图形验证码的问题了,对单数字的验证码,通过一些 OCR 引擎,如:tesseract , AspriseOCR 很容 易解决问题。但碰到如 CSDN 论坛这中图形验证码就比较麻烦,必须先通过预处理。使图象二值化,黑 白灰度,增加亮度。我的代码如下:002003 package myfilter;004 import java.io.*;005 import java.awt.image.*;006 import java.awt.geom.AffineTransform;007 import
2、java.awt.color.ColorSpace;008 import java.awt.image.ConvolveOp;009 import java.awt.image.Kernel;010 import java.awt.image.BufferedImage;011 import javax.imageio.ImageIO;012 import java.awt.Toolkit;013 import java.awt.Image;014 public class MyImgFilter 015 BufferedImage image;016 private int iw, ih;0
3、17 private int pixels;018 public MyImgFilter(BufferedImage image 019 this .image = image;020 iw = image.getWidth(;021 ih = image.getHeight(;022 pixels = new int iw * ih;023 024 public BufferedImage changeGrey( 025 PixelGrabber pg = new PixelGrabber(image.getSource(, 0, 0, iw, ih, pixels,0, iw;026 tr
4、y 027 pg.grabPixels(;028 catch (InterruptedException e 029 e.printStackTrace(;030 031 / 设定二值化的域值,默认值为 100032 int grey = 100;033 / 对图像进行二值化处理, Alpha 值保持不变034 ColorModel cm = ColorModel.getRGBdefault(;035 for (int i = 0; i < iw * ih; i+ 036 int red, green, blue;037 int alpha = cm.getAlpha(pixelsi;0
5、38 if (cm.getRed(pixelsi > grey 039 red = 255;040 else 041 red = 0;042 043 if (cm.getGreen(pixelsi > grey 044 green = 255;045 else 046 green = 0;047 048 if (cm.getBlue(pixelsi > grey 049 blue = 255;050 else 051 blue = 0;052 053 pixelsi = alpha << 24 | red << 16 | green <<
6、8 | blue; /通过移位重新构成某一 点像素的 RGB 值054 055 / 将数组中的象素产生一个图像056 Image tempImg=Toolkit.getDefaultToolkit(.createImage(new MemoryImageSource(iw,ih, pixels, 0, iw;057 image = new BufferedImage(tempImg.getWidth(null ,tempImg.getHeight(null , BufferedImage.TYPE_INT_BGR ;058 image.createGraphics(.drawImage(tem
7、pImg, 0, 0, null ;059 return image;060 061 public BufferedImage getMedian( 062 PixelGrabber pg = new PixelGrabber(image.getSource(, 0, 0, iw, ih, 063 pixels,064 0, iw;065 try 066 pg.grabPixels(;067 catch (InterruptedException e 068 e.printStackTrace(;069 070 / 对图像进行中值滤波, Alpha 值保持不变071 ColorModel cm
8、 = ColorModel.getRGBdefault(;072 for (int i = 1; i < ih - 1; i+ 073 for (int j = 1; j < iw - 1; j+ 074 int red, green, blue;075 int alpha = cm.getAlpha(pixelsi * iw + j;076 / int red2 = cm.getRed(pixels(i - 1 * iw + j;077 int red4 = cm.getRed(pixelsi * iw + j - 1;078 int red5 = cm.getRed(pixel
9、si * iw + j;079 int red6 = cm.getRed(pixelsi * iw + j + 1; 080 / int red8 = cm.getRed(pixels(i + 1 * iw + j; 081 / 水平方向进行中值滤波082 if (red4 >= red5 083 if (red5 >= red6 084 red = red5;085 else 086 if (red4 >= red6 087 red = red6;088 else 089 red = red4;090 091 092 else 093 if (red4 > red6
10、094 red = red4;095 else 096 if (red5 > red6 097 red = red6;098 else 099 red = red5;100 101 102 103 int green4 = cm.getGreen(pixelsi * iw + j - 1; 104 int green5 = cm.getGreen(pixelsi * iw + j; 105 int green6 = cm.getGreen(pixelsi * iw + j + 1; 106 / 水平方向进行中值滤波107 if (green4 >= green5 108 if (g
11、reen5 >= green6 109 green = green5;110 else 111 if (green4 >= green6 112 green = green6;113 else 114 green = green4;115 116 117 else 118 if (green4 > green6 120 else 121 if (green5 > green6 122 green = green6;123 else 124 green = green5;125 126 127 128 / int blue2 = cm.getBlue(pixels(i -
12、 1 * iw + j; 129 int blue4 = cm.getBlue(pixelsi * iw + j - 1; 130 int blue5 = cm.getBlue(pixelsi * iw + j;131 int blue6 = cm.getBlue(pixelsi * iw + j + 1; 132 / int blue8 = cm.getBlue(pixels(i + 1 * iw + j; 133 / 水平方向进行中值滤波134 if (blue4 >= blue5 135 if (blue5 >= blue6 136 blue = blue5;137 else
13、 138 if (blue4 >= blue6 140 else 141 blue = blue4;142 143 144 else 145 if (blue4 > blue6 146 blue = blue4;147 else 148 if (blue5 > blue6 149 blue = blue6;150 else 151 blue = blue5;152 153 154 155 pixelsi * iw +156 j = alpha << 24 | red << 16 | green << 8 | blue; 157 158 15
14、9 / 将数组中的象素产生一个图像160 Image tempImg=Toolkit.getDefaultToolkit(.createImage(new MemoryImageSource(iw,ih, pixels, 0, iw;161 image = new BufferedImage(tempImg.getWidth(null ,tempImg.getHeight(null , BufferedImage.TYPE_INT_BGR ;162 image.createGraphics(.drawImage(tempImg, 0, 0, null ;163 return image;164
15、 165 public BufferedImage getGrey( 166 ColorConvertOpccp=new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY,null ;167 return image=ccp.filter(image,null ;168 169 /Brighten using a linear formula that increases all color values170 public BufferedImage getBrighten( 171 RescaleOp rop=new Resc
16、aleOp(1.25f, 0, null ;172 return image=rop.filter(image,null ;173 174 /Blur by "convolving" the image with a matrix175 public BufferedImage getBlur( 176 float data = 177 .1111f, .1111f, .1111f,178 .1111f, .1111f, .1111f,179 .1111f, .1111f, .1111f, ;180 ConvolveOp cop = new ConvolveOp(new K
17、ernel(3, 3, data; 181 return image=cop.filter(image,null ;182 183 / Sharpen by using a different matrix184 public BufferedImage getSharpen( 185 float data = 186 0.0f, -0.75f, 0.0f,187 -0.75f, 4.0f, -0.75f,188 0.0f, -0.75f, 0.0f;189 ConvolveOp cop = new ConvolveOp(new Kernel(3, 3, data; 190 return im
18、age=cop.filter(image,null ;191 192 / 11 Rotate the image 180 degrees about its center point 193 public BufferedImage getRotate( 19 4 AffineTransformOpatop=new AffineTransformOp(AffineTransform.getRotateInstance(Math.PI,image.get Width(/2,image.getHeight(/2,195 AffineTransformOp.TYPE_NEAREST_NEIGHBOR; 196 return image=atop.filter(image,null ;197 198 public BufferedImage getProcessedImg( 199 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年边缘计算产业价值重心从硬件转向软件与服务趋势
- 江苏省扬州市田家炳实验中学2026年初三下学期联合考试化学试题含解析
- 2026年国家-省-市三级平台体系构建与协同联动机制
- 2026年智能体跨应用调用多窗口多Agent并行任务拆解执行
- 四川省成都市名校2026届初三下学期中考模拟(二)化学试题试卷含解析
- 2026年浙江省台州市仙居县初三下学期第一次阶段测试化学试题试卷含解析
- 天津河北区2026年下学期期中考初三试卷化学试题含解析
- 江苏省泰州市兴化市2026年5月初三压轴卷生物试题试卷含解析
- 江苏省淮安市-2025-2026学年初三下学期教学质量检查化学试题含解析
- 2026年山东省青州市市级名校初三第一次模拟(期末)化学试题含解析
- GB/T 9867-2008硫化橡胶或热塑性橡胶耐磨性能的测定(旋转辊筒式磨耗机法)
- GB/T 3195-2008铝及铝合金拉制圆线材
- 整形美容医院与公立整形医院合作方案
- 合理安排课余生活-完整版公开课件
- bbf-dhda双轴交流伺服驱动器说明书
- 《电视摄像教程》课件第6章
- 人大换届选举培训提纲汇编课件
- 2022青岛版科学五年级下册全册优质教案教学设计
- Unit10Lesson2Communityspirit课件-高中英语北师大版(2019)选择性必修第四册
- 建设项目全过程跟踪审计底稿(综合类、工程类、财务类)
- 2020 新ACLS-PCSA课前自我测试-翻译版玉二医【复制】附有答案
评论
0/150
提交评论