Belzer
13-01-2007, 19:18
Sto realizzando un programma in java (sono ancora agli inizi) che dove applicare una maschera convolutiva o kernel a un'immagine, in questo caso sto applicando Sobelx (kernel 3x3):
Compilando il codice non riscontro nessun errore, ma al momento di eseguirlo mi da il seguente errore :mc: :
Exception in thread "main" java.awt.image.ImagingOpException: Unable to convolve src image
at java.awt.image.ConvolveOp.filter(ConvolveOp.java:180)
at Sobelx.converti(Sobelx.java:39)
at Sobelx.main(Sobelx.java:59)
La sintassi è la seguene:
...$ java Sobelx nome_sorgente_immagine.jpg nome_destinazione_immagine.jpg
e questo è il codice:
import javax.imageio.*;
import java.io.*;
import java.awt.*;
import java.awt.image.*;
public class Sobelx {
public static BufferedImage apri(String path)throws Exception {
BufferedImage imm1=ImageIO.read(new File(path));
return imm1;
}
public static BufferedImage crea(BufferedImage imm)throws Exception {
BufferedImage imm2=new BufferedImage(imm.getWidth(null),imm.getHeight(null),imm.getType());
return imm2;
}
public static void salva(BufferedImage imm2,String path)throws Exception
{
ImageIO.write(imm2,"jpg",new File(path));
}
public static BufferedImage converti(BufferedImage imm1, BufferedImage imm2)throws Exception
{
float [] data={-1.0f, -2.0f, -1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 2.0f, 1.0f};
Kernel kernel= new Kernel(3,3,data);
BufferedImageOp op= new ConvolveOp(kernel);
return imm2= op.filter(imm1,null);
}
public static void main(String args[])throws Exception
{
if (args.length !=2){
System.out.println("Errore");
return;
}
BufferedImage imm1=apri(args[0]);
BufferedImage imm2=crea(imm1);
converti (imm1,imm2);
salva(imm2,args[1]);
}
}
Qualcuno può darmi una mano. Grazie :rolleyes:
Compilando il codice non riscontro nessun errore, ma al momento di eseguirlo mi da il seguente errore :mc: :
Exception in thread "main" java.awt.image.ImagingOpException: Unable to convolve src image
at java.awt.image.ConvolveOp.filter(ConvolveOp.java:180)
at Sobelx.converti(Sobelx.java:39)
at Sobelx.main(Sobelx.java:59)
La sintassi è la seguene:
...$ java Sobelx nome_sorgente_immagine.jpg nome_destinazione_immagine.jpg
e questo è il codice:
import javax.imageio.*;
import java.io.*;
import java.awt.*;
import java.awt.image.*;
public class Sobelx {
public static BufferedImage apri(String path)throws Exception {
BufferedImage imm1=ImageIO.read(new File(path));
return imm1;
}
public static BufferedImage crea(BufferedImage imm)throws Exception {
BufferedImage imm2=new BufferedImage(imm.getWidth(null),imm.getHeight(null),imm.getType());
return imm2;
}
public static void salva(BufferedImage imm2,String path)throws Exception
{
ImageIO.write(imm2,"jpg",new File(path));
}
public static BufferedImage converti(BufferedImage imm1, BufferedImage imm2)throws Exception
{
float [] data={-1.0f, -2.0f, -1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 2.0f, 1.0f};
Kernel kernel= new Kernel(3,3,data);
BufferedImageOp op= new ConvolveOp(kernel);
return imm2= op.filter(imm1,null);
}
public static void main(String args[])throws Exception
{
if (args.length !=2){
System.out.println("Errore");
return;
}
BufferedImage imm1=apri(args[0]);
BufferedImage imm2=crea(imm1);
converti (imm1,imm2);
salva(imm2,args[1]);
}
}
Qualcuno può darmi una mano. Grazie :rolleyes: