作者devlish (灰色地带)
看板java
标题Re: [问题] 关於灰阶影像处理..
时间Wed Dec 13 05:23:59 2006
※ 引述《[email protected] ()》之铭言:
: 提供一个方法 很久以前写的
: 变数的命名实在是...自已都要看不懂噜
: 总之把这当黑盒子用就好..
: 不要管里面写什麽了XD
: BufferedImage -> double[][]
: -----------------------------------------------------
: double[][] transfer(BufferedImage img){
: int w=img.getWidth();
: int h=img.getHeight();
: int X3_1=0;
: int X3_2=0;
: double[][] temp = new double[h][w*3];
: double[] a=img.getRaster().getPixels(0, 0, w, h, a);
: for(int j=0;j<h;j++){
: for(int i=0;i<w;i++){
: X3_1=(j*w+i)*3;
: X3_2=i*3;
: temp[j][X3_2]=a[X3_1];
: temp[j][X3_2+1]=a[X3_1+1];
: temp[j][X3_2+2]=a[X3_1+2];
: }
: }
: return temp;
: }
: m*[1;37;40m-----------------------------------------------------*[m*[mm
: m*[1;37;40m-----------------------------------------------------*[m*[mm
: 转灰阶
: void doGray(double[][] da,int x ,int y,int w,int h){
: int X3=0;
: int gray=0;
: for(int j=y;j<h;j++){
: for(int i=x;i<w;i++){
: X3=i*3;
: gray=(int)(0.299*da[j][X3]+0.587*da[j][X3+1]+0.114*da[j][X3+2]);
: da[j][X3]=da[j][X3+1]=da[j][X3+2]=gray;
: }
: }
: }
: m*[1;37;40m-----------------------------------------------------*[m*[mm
: ※ [email protected] (灰色地带) wrote:
: > 小弟最近要写一个影像处理的程式,目前的进度卡在要将图片转为灰阶阵列显示出来
: > 目前我已经能够抓到图片的Pixel值了,想请问是否有能够用灰阶的方式将抓到的值
: > 表达并显示出来?
: > 可以顺便问一下,我目前抓到的值是以一维的方式显示出来的,但我还不懂如何将一维
: > 转为二维,是否可以指点一下迷津?
: > public static void main(String[] args) throws Exception {
: > JFrame window = new JFrame("图片");
: > window.setSize(700,700);
: > window.setLocation(50,50);
: > Container c = window.getContentPane();
: > new DemoImages();
: > Image image = DemoImages.getImage("4.jpg",window);
: > ImagePanel ip = new ImagePanel();
: > ip.setImage(image);
: > c.add(ip);
: > window.setVisible(true);
: > PixelGrabber pixel = new PixelGrabber(image,0,0,image.getWidth(null),image.getHeight(null),false);
: > pixel.startGrabbing();
: > while(!pixel.grabPixels()) {
: > }
: > 以上是程式码...请哪个好心人告诉我一下吧,目前Error一大堆,接近崩溃边缘>"<..
请问,如果以用BufferImage来做处理为概念,要将小弟所写的上面的程式码继续往下写
先将Load的图片转为灰阶,然後再将其中的影像转为二维的灰阶阵列,并且将结果与原先
的图片一同显示於两个不同的window,也就是说,除了原先显示的图片之外,还要多显示
一个处理过的灰阶影像图片(已抓到Pixel值的)
小弟在书上看到一个Utilities的方法,但试下来的结果就只有
image=Utilities.makeBufferedImage(image);
这一条成功而已,而且原先会显示的Pixel值也不再显示了.......= "=
上面的叙述有点乱,可能因为我的脑袋也是一团乱....
想请教,以这样的叙述下来,有什麽好的方法可以呈现出来....
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.130.211.243