欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 编程语言 > java >内容正文

java

java 去除干扰-ag凯发k8国际

发布时间:2024/10/14 java 32 豆豆
ag凯发k8国际 收集整理的这篇文章主要介绍了 java 去除干扰_【selenium-webdriver实战篇】java丨验证码图片去除干扰像素,方便验证码的识别(转)... 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1、先来看看效果:

原图

除去干扰像素后

2、解析代码:

1)、读取文件夹里面的图片

1 string filename = "picture";

2 bufferedimage img = imageio.read(new file("img//" filename ".jpg"));

2)、获取图片的宽度和高度

1 int width = img.getwidth();

2 int height = img.getheight();

3)、循环执行除去干扰像素

按 ctrl c 复制代码

按 ctrl c 复制代码

4)、图片背景变黑,验证码变白色

按 ctrl c 复制代码

按 ctrl c 复制代码

5)、保存图片

1      file file = new file("img\\temp\\" filename ".jpg");

2 if (!file.exists())

3 {

4 file dir = file.getparentfile();

5 if (!dir.exists())

6 {

7 dir.mkdirs();

8 }

9 try

10 {

11 file.createnewfile();

12 }

13 catch (ioexception e)

14 {

15 e.printstacktrace();

16 }

17 }

18 imageio.write(img, "jpg", file);

3、重要代码:

bufferedimage img = imageio.read(new file("img//" filename ".jpg"));

color color1 = new color(img.getrgb(i, 1));

int num1 = color1.getred() color1.getgreen() color1.getblue();

getred()、getgreen()、getblue()这三个方法分别是获取图片每一个像素的三原色(注释:每一种颜色都是由红、绿、蓝组成的)

4、原理:

1)、获取图片的高度和宽度

2)、循环获取图片的每一个像素的值

3)、把每一排的像素值用来作为对比的标准从而替代颜色相同的为白色(横向和纵向都可以循环一次,这里我只循环了横向的像素)

4)、循环获取像素,替代验证码背景为黑色(在这个步骤验证码的背景已经是白色的,数字的颜色还没有替换,所以我们循环一次把白色换为黑色,不是白色的换成白色)

5、所有代码:

1 package com.haojieli.main;

2

3 import java.awt.color;

4 import java.awt.image.bufferedimage;

5 import java.io.file;

6 import java.io.ioexception;

7

8 import javax.imageio.imageio;

9

10 public class pictureremove {

11

12 public static void main(string[] args) throws ioexception {

13 //读取文件夹里面的图片

14 string filename = "picture";

15 bufferedimage img = imageio.read(new file("img//" filename ".jpg"));

16 //获取图片的高宽

17 int width = img.getwidth();

18 int height = img.getheight();

19

20 //循环执行除去干扰像素

21 for(int i = 1;i < width;i ){

22 color colorfirst = new color(img.getrgb(i, 1));

23 int numfirstget = colorfirst.getred() colorfirst.getgreen() colorfirst.getblue();

24 for (int x = 0; x < width; x )

25 {

26 for (int y = 0; y < height; y )

27 {

28 color color = new color(img.getrgb(x, y));

29 system.out.println("red:" color.getred() " | green:" color.getgreen() " | blue:" color.getblue());

30 int num = color.getred() color.getgreen() color.getblue();

31 if(num >= numfirstget){

32 img.setrgb(x, y, color.white.getrgb());

33 }

34 }

35 }

36 }

37

38 //图片背景变黑色

39 for(int i = 1;i

40 color color1 = new color(img.getrgb(i, 1));

41 int num1 = color1.getred() color1.getgreen() color1.getblue();

42 for (int x = 0; x < width; x )

43 {

44 for (int y = 0; y < height; y )

45 {

46 color color = new color(img.getrgb(x, y));

47 system.out.println("red:" color.getred() " | green:" color.getgreen() " | blue:" color.getblue());

48 int num = color.getred() color.getgreen() color.getblue();

49 if(num==num1){

50 img.setrgb(x, y, color.black.getrgb());

51 }else{

52 img.setrgb(x, y, color.white.getrgb());

53 }

54 }

55 }

56 }

57 //保存图片

58 file file = new file("img\\temp\\" filename ".jpg");

59 if (!file.exists())

60 {

61 file dir = file.getparentfile();

62 if (!dir.exists())

63 {

64 dir.mkdirs();

65 }

66 try

67 {

68 file.createnewfile();

69 }

70 catch (ioexception e)

71 {

72 e.printstacktrace();

73 }

74 }

75 imageio.write(img, "jpg", file);

76 }

77 }

以上代码只限于这类验证码

的干扰像素的去除 ,其他的验证码类型还待测试!

总结

以上是ag凯发k8国际为你收集整理的java 去除干扰_【selenium-webdriver实战篇】java丨验证码图片去除干扰像素,方便验证码的识别(转)...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

网站地图