欢迎来到天天文库
浏览记录
ID:1204987
大小:99.50 KB
页数:7页
时间:2017-11-08
《java识别图形验证码》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、最近一直在开发一个用于自动发帖的工具,用HttpClient模拟客户端浏览器注册发帖。但是碰到了图形验证码的问题了,对单数字的验证码,通过一些OCR引擎,如:tesseract,AspriseOCR很容易解决问题。但碰到如CSDN论坛这中图形验证码就比较麻烦,必须先通过预处理。使图象二值化,黑白灰度,增加亮度。我的代码如下:[java] viewplaincopy1.package myfilter; 2.import java.io.*; 3.import java.awt.image.*; 4.import java.awt.geom.AffineTransform; 5.
2、import java.awt.color.ColorSpace; 6.import java.awt.image.ConvolveOp; 7.import java.awt.image.Kernel; 8.import java.awt.image.BufferedImage; 9.import javax.imageio.ImageIO; 10.import java.awt.Toolkit; 11.import java.awt.Image; 12. 13./** 14. *
Title: Image Filter
De
3、scription: image processing by filters
Copyright: Copyright (c) 2010
4、28. 29. public MyImgFilter(BufferedImage image) { 30. this.image = image; 31. iw = image.getWidth(); 32. ih = image.getHeight(); 33. pixels = new int[iw * ih]; 34. 35. } 36. 37. /** 图像二值化 */ 1. public BufferedImage changeGrey() { 2. 3. 4.
5、 PixelGrabber pg = new PixelGrabber(image.getSource(), 0, 0, iw, ih, pixels,0, iw); 5. try { 6. pg.grabPixels(); 7. } catch (InterruptedException e) { 8. e.printStackTrace(); 9. } 10. // 设定二值化的域值,默认值为100 11. int grey = 100; 12.
6、 // 对图像进行二值化处理,Alpha值保持不变 13. ColorModel cm = ColorModel.getRGBdefault(); 14. for (int i = 0; i < iw * ih; i++) { 15. int red, green, blue; 16. int alpha = cm.getAlpha(pixels[i]); 17. if (cm.getRed(pixels[i]) > grey) { 18.
7、red = 255; 19. } else { 20. red = 0; 21. } 22. if (cm.getGreen(pixels[i]) > grey) { 23. green = 255; 24. } else { 25. green = 0;
此文档下载收益归作者所有