




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
最近一直在开发一个用于自动发帖的工具,用HttpClient模拟客户端浏览器注册发帖。但是碰到了图形验证码的问题了,对单数字的验证码,通过一些OCR引擎,如:tesseract,AspriseOCR很容易解决问题。但碰到如CSDN论坛这中图形验证码就比较麻烦,必须先通过预处理。使图象二值化,黑白灰度,增加亮度。我的代码如下:javaview plaincopy1. packagemyfilter;2. importjava.io.*;3. importjava.awt.image.*;4. importjava.awt.geom.AffineTransform;5. importjava.awt.color.ColorSpace;6. importjava.awt.image.ConvolveOp;7. importjava.awt.image.Kernel;8. importjava.awt.image.BufferedImage;9. importjavax.imageio.ImageIO;10. importjava.awt.Toolkit;11. importjava.awt.Image;12. 13. /*14. *Title:ImageFilter15. *16. *Description:imageprocessingbyfilters17. *Copyright:Copyright(c)201018. *19. *20. *sincejdk1.5.021. *version1.022. */23. publicclassMyImgFilter24. BufferedImageimage;25. privateintiw,ih;26. privateintpixels;27. 28. 29. publicMyImgFilter(BufferedImageimage)30. this.image=image;31. iw=image.getWidth();32. ih=image.getHeight();33. pixels=newintiw*ih;34. 35. 36. 37. /*图像二值化*/38. publicBufferedImagechangeGrey()39. 40. 41. PixelGrabberpg=newPixelGrabber(image.getSource(),0,0,iw,ih,pixels,0,iw);42. try43. pg.grabPixels();44. catch(InterruptedExceptione)45. e.printStackTrace();46. 47. /设定二值化的域值,默认值为10048. intgrey=100;49. /对图像进行二值化处理,Alpha值保持不变50. ColorModelcm=ColorModel.getRGBdefault();51. for(inti=0;igrey)55. red=255;56. else57. red=0;58. 59. if(cm.getGreen(pixelsi)grey)60. green=255;61. else62. green=0;63. 64. if(cm.getBlue(pixelsi)grey)65. blue=255;66. else67. blue=0;68. 69. pixelsi=alpha24|red16|green8|blue;/通过移位重新构成某一点像素的RGB值70. 71. /将数组中的象素产生一个图像72. ImagetempImg=Toolkit.getDefaultToolkit().createImage(newMemoryImageSource(iw,ih,pixels,0,iw);73. image=newBufferedImage(tempImg.getWidth(null),tempImg.getHeight(null),BufferedImage.TYPE_INT_BGR);74. image.createGraphics().drawImage(tempImg,0,0,null);75. returnimage;76. 77. 78. 79. /*中值滤波*/80. publicBufferedImagegetMedian()81. PixelGrabberpg=newPixelGrabber(image.getSource(),0,0,iw,ih,82. pixels,83. 0,iw);84. try85. pg.grabPixels();86. catch(InterruptedExceptione)87. e.printStackTrace();88. 89. /对图像进行中值滤波,Alpha值保持不变90. ColorModelcm=ColorModel.getRGBdefault();91. for(inti=1;iih-1;i+)92. for(intj=1;j=red5)104. if(red5=red6)105. red=red5;106. else107. if(red4=red6)108. red=red6;109. else110. red=red4;111. 112. 113. else114. if(red4red6)115. red=red4;116. else117. if(red5red6)118. red=red6;119. else120. red=red5;121. 122. 123. 124. 125. intgreen4=cm.getGreen(pixelsi*iw+j-1);126. intgreen5=cm.getGreen(pixelsi*iw+j);127. intgreen6=cm.getGreen(pixelsi*iw+j+1);128. 129. /水平方向进行中值滤波130. if(green4=green5)131. if(green5=green6)132. green=green5;133. else134. if(green4=green6)135. green=green6;136. else137. green=green4;138. 139. 140. else141. if(green4green6)142. green=green4;143. else144. if(green5green6)145. green=green6;146. else147. green=green5;148. 149. 150. 151. 152. /intblue2=cm.getBlue(pixels(i-1)*iw+j);153. intblue4=cm.getBlue(pixelsi*iw+j-1);154. intblue5=cm.getBlue(pixelsi*iw+j);155. intblue6=cm.getBlue(pixelsi*iw+j+1);156. /intblue8=cm.getBlue(pixels(i+1)*iw+j);157. 158. /水平方向进行中值滤波159. if(blue4=blue5)160. if(blue5=blue6)161. blue=blue5;162. else163. if(blue4=blue6)164. blue=blue6;165. else166. blue=blue4;167. 168. 169. else170. if(blue4blue6)171. blue=blue4;172. else173. if(blue5blue6)174. blue=blue6;175. else176. blue=blue5;177. 178. 179. 180. pixelsi*iw+181. j=alpha24|red16|green8|blue;182. 183. 184. 185. /将数组中的象素产生一个图像186. ImagetempImg=Toolkit.getDefaultToolkit().createImage(newMemoryImageSource(iw,ih,pixels,0,iw);187. image=newBufferedImage(tempImg.getWidth(null),tempImg.getHeight(null),BufferedImage.TYPE_INT_BGR);188. image.createGraphics().drawImage(tempImg,0,0,null);189. returnimage;190. 191. 192. 193. 194. 195. 196. publicBufferedImagegetGrey()197. ColorConvertOpccp=newColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY),null);198. returnimage=ccp.filter(image,null);199. 200. 201. /Brightenusingalinearformulathatincreasesallcolorvalues202. publicBufferedImagegetBrighten()203. RescaleOprop=newRescaleOp(1.25f,0,null);204. returnimage=rop.filter(image,null);205. 206. /Blurbyconvolvingtheimagewithamatrix207. publicBufferedImagegetBlur()208. floatdata=209. .1111f,.1111f,.1111f,210. .1111f,.1111f,.1111f,211. .1111f,.1111f,.1111f,;212. ConvolveOpcop=newConvolveOp(newKernel(3,3,data);213. returnimage=cop.filter(image,null);214. 215. 216. 217. /Sharpenbyusingadifferentmatrix218. publicBufferedImagegetSharpen()219. floatdata=220. 0.0f,-0.75f,0.0f,221. -0.75f,4.0f,-0.75f,222. 0.0f,-0.75f,0.0f;223. ConvolveOpcop=newConvolveOp(newKernel(3,3,data);224. returnimage=cop.filter(image,null);225. 226. /11)Rotatetheimage180degreesaboutitscenterpoint227. publicBufferedImagegetRotate()228. AffineTransformOpatop=newAffineTransformOp(AffineTransform.getRotateInstance(Math.PI,image.getWidth()/2,image.getHeight()/2),229. AffineTransformOp.TYPE_NEAREST_NEIGHBOR);230. returnimage=atop.filter(image,null);231. 232. 233. 234. publicBufferedImagegetProcessedImg()235. 236. returnimage;237. 238. 239. publicstaticvoidmain(Stringargs)throwsIOException240. FileInputStreamfin=newFileInputStream(args0);241. BufferedImagebi=ImageIO.read(fin);242. MyImgFilterflt=newMyImgFilter(bi);243. flt.changeGrey();244. flt.getGrey();245. flt.getBrighten();246. bi=flt.getProcessedImg();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版师生教育信息化应用合作协议范本
- 2025年酒店内部员工饭堂承包经营合同范本
- 2025年新能源设备采购合同谈判与签订服务协议
- 2025版航空设备定期检修与维修合同
- 2025年度新型节能环保项目保证合同范本
- 2025年二手车维修保养服务买卖合同书规范文本
- 2025年度新能源电动车关键配件经销合同范本
- 2025年度城市绿化建设项目房屋拆迁安置合同
- 2025版铝单板仓储物流与销售代理合同
- 2025版智能水电系统施工维护劳务服务合同模板
- 厨房刀具安全培训课件
- 私密抗衰培训课件
- 2025年全国高中物理竞赛试题及答案
- 2024风电项目开工管理办法
- 供热企业运营管理制度
- 2025年高考真题-英语(全国一卷) 含答案
- RocketMQ分布式消息中间件:核心原理与最佳实践
- 绿色矿山服务合同协议书
- T/CIE 170-2023企业级固态硬盘测试规范第6部分:环境适应性测试
- 院感各类应急预案培训
- 2025年云南省事业单位考试c类真题及答案
评论
0/150
提交评论