1、java图像处理实例一 读取bmp图片数据/ 获取待检测图像,数据保存在数组 nData,nB,nG,nR中public void getBMPImage(String source) throws Exception clearNData(); /清除数据保存区 FileInputStream fs = null; try fs = new FileInputStream(source); int bfLen = 14; byte bf = new bytebfLen; fs.read(bf, 0, bfLen); / 读取14字节BMP文件头 int biLen = 40; byte bi
2、 = new bytebiLen; fs.read(bi, 0, biLen); / 读取40字节BMP信息头 / 源图宽度 nWidth = (int) bi7 & 0xff) 24) | (int) bi6 & 0xff) 16) | (int) bi5 & 0xff) 8) | (int) bi4 & 0xff; / 源图高度 nHeight = (int) bi11 & 0xff) 24) | (int) bi10 & 0xff) 16) | (int) bi9 & 0xff) 8) | (int) bi8 & 0xff; / 位数 nBitCount = (int) bi15 & 0
3、xff) 8) | (int) bi14 & 0xff; / 源图大小 int nSizeImage = (int) bi23 & 0xff) 24) | (int) bi22 & 0xff) 16) | (int) bi21 & 0xff) 8) | (int) bi20 & 0xff; / 对24位BMP进行解析 if (nBitCount = 24) int nPad = (nSizeImage / nHeight) - nWidth * 3; nData = new intnHeight * nWidth; nB=new intnHeight * nWidth; nR=new intn
4、Height * nWidth; nG=new intnHeight * nWidth; byte bRGB = new byte(nWidth + nPad) * 3 * nHeight; fs.read(bRGB, 0, (nWidth + nPad) * 3 * nHeight); int nIndex = 0; for (int j = 0; j nHeight; j+) for (int i = 0; i nWidth; i+) nDatanWidth * (nHeight - j - 1) + i = (255 & 0xff) 24 | (int) bRGBnIndex + 2 &
5、 0xff) 16) | (int) bRGBnIndex + 1 & 0xff) 8) | (int) bRGBnIndex & 0xff; nBnWidth * (nHeight - j - 1) + i=(int) bRGBnIndex& 0xff; nGnWidth * (nHeight - j - 1) + i=(int) bRGBnIndex+1& 0xff; nRnWidth * (nHeight - j - 1) + i=(int) bRGBnIndex+2& 0xff; nIndex += 3; nIndex += nPad; / Toolkit kit = Toolkit.
6、getDefaultToolkit();/ image = kit.createImage(new MemoryImageSource(nWidth, nHeight,/ nData, 0, nWidth);/* /调试数据的读取 FileWriter fw = new FileWriter(C:/Documents and Settings/Administrator/My Documents/nDataRaw.txt);/创建新文件 PrintWriter out = new PrintWriter(fw); for(int j=0;jnHeight;j+) for(int i=0;inW
7、idth;i+) out.print(65536*256+nDatanWidth * (nHeight - j - 1) + i)+_ +nRnWidth * (nHeight - j - 1) + i+_ +nGnWidth * (nHeight - j - 1) + i+_ +nBnWidth * (nHeight - j - 1) + i+ ); out.println(); out.close();*/ catch (Exception e) e.printStackTrace(); throw new Exception(e); finally if (fs != null) fs.
8、close(); / return image; 二由r g b 获取灰度数组 public int getBrightnessData(int rData,int gData,int bData) int brightnessData=new intrData.length; if(rData.length!=gData.length | rData.length!=bData.length | bData.length!=gData.length) return brightnessData; else for(int i=0;i0.5?1:0); return brightnessDat
9、a; 三 直方图均衡化 public int equilibrateGray(int PixelsGray,int width,int height) int gray; int length=PixelsGray.length; int FrequenceGray=new intlength; int SumGray=new int256; int ImageDestination=new intlength; for(int i = 0; i length ;i+) gray=PixelsGrayi; FrequenceGraygray+; / 灰度均衡化 SumGray0=FrequenceGray0; for(int i=1;i256;i+) SumGrayi=SumGrayi-1+FrequenceGrayi; for(int i=0;i256;i+) SumGrayi=(int)(SumGrayi*255/length);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1