亲品藏
^
高手支招:12306验证码识别知多少

  // 将数组中的象素产生一个图像

  Image tempImg = Toolkit.getDefaultToolkit().createImage(new MemoryImageSource(iw, ih, pixels, 0, iw));

  image = new BufferedImage(tempImg.getWidth(null), tempImg.getHeight(null), BufferedImage.TYPE_INT_BGR);

  image.createGraphics().drawImage(tempImg, 0, 0, null);

  return image;

  }

  /** 中值滤波 */

  public BufferedImage getMedian() {

  PixelGrabber pg = new PixelGrabber(image.getSource(), 0, 0, iw, ih, pixels, 0, iw);

  try {

  pg.grabPixels();

  } catch (InterruptedException e) {

  e.printStackTrace();

  }

  // 对图像进行中值滤波,Alpha值保持不变

  ColorModel cm = ColorModel.getRGBdefault();

  for (int i = 1; i < ih - 1; i++) {

  for (int j = 1; j < iw - 1; j++) {

  int red, green, blue;

  int alpha = cm.getAlpha(pixels[i * iw + j]);

  // int red2 = cm.getRed(pixels[(i - 1) * iw + j]);

  int red4 = cm.getRed(pixels[i * iw + j - 1]);

  int red5 = cm.getRed(pixels[i * iw + j]);

  int red6 = cm.getRed(pixels[i * iw + j + 1]);

  // int red8 = cm.getRed(pixels[(i + 1) * iw + j]);

  // 水平方向进行中值滤波

  if (red4 >= red5) {

  if (red5 >= red6) {

  red = red5;

  } else {

  if (red4 >= red6) {

  red = red6;

  } else {

  red = red4;

  }

  }

  } else {

  if (red4 > red6) {

  red = red4;

  } else {

  if (red5 > red6) {

  red = red6;

  } else {

  red = red5;

  }

  }

  }

  int green4 = cm.getGreen(pixels[i * iw + j - 1]);

  int green5 = cm.getGreen(pixels[i * iw + j]);

  int green6 = cm.getGreen(pixels[i * iw + j + 1]);

  // 水平方向进行中值滤波

  if (green4 >= green5) {

  if (green5 >= green6) {

  green = green5;

  } else {

  if (green4 >= green6) {

  green = green6;

  } else {

  green = green4;

  }

  }

  } else {

  if (green4 > green6) {

  green = green4;

  } else {

  if (green5 > green6) {

  green = green6;

  } else {

  green = green5;

  }

  }

  }

相关阅读