日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 去除干扰_【Selenium-WebDriver实战篇】Java丨验证码图片去除干扰像素,方便验证码的识别(转)...

發布時間:2024/10/14 java 75 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 }

以上代碼只限于這類驗證碼

的干擾像素的去除 ,其他的驗證碼類型還待測試!

總結

以上是生活随笔為你收集整理的java 去除干扰_【Selenium-WebDriver实战篇】Java丨验证码图片去除干扰像素,方便验证码的识别(转)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。