문제

그래서 나는 Java를 사용하는 이미지에 가우스 필터를 적용하려고했습니다. 그러나 이미지는 필터에 의해 전혀 영향을받지 않습니다. 내장 컨볼 루션 연산자를 사용하고 있습니다. 어떤 일이 잘못되고 있는지 나에게 한 가지가있을 수 있습니까?

public static void main(String[] args) {
  File img = new File( "C:\\Users\\Aditya\\Pictures\\20130729_140153.jpg" );
  BufferedImage a = null;
  try{ 
      a= ImageIO.read( img );
  }
  catch( Exception e ){
      System.out.print( e.toString() );
      return;
  }
  BufferedImage a9 = new BufferedImage( a.getWidth() , a.getHeight() , a.getType() ); 
  float[] matrix = {
    1f/273,4f/273,7f/273,4f/273,1f/273,
    4f/273,16f/273,26f/273,16f/273,4f/273,
    7f/273,26f/273,41f/273,26f/273,7f/273,
    4f/273,16f/273,26f/273,16f/273,4f/273,
    1f/273,4f/273,7f/273,4f/273,1f/273
    };
    BufferedImageOp op = new ConvolveOp( new Kernel( 5, 5, matrix ) );
    a9 = op.filter( a, a9 );
    try{
        ImageIO.write( a9 , "jpg" ,new File( "C:\\Users\\Aditya\\Pictures\\jim.jpg" ));
    }catch( Exception e ){
        System.out.println( e );
    }
    }
}

작동하지 않음으로써 A와 A9의 이미지에는 전혀 차이가 없음을 의미합니다. 그들이 복사 한 것처럼!

도움이 되었습니까?

해결책

코드에 아무런 문제가 없으며, 실행했고 출력 이미지에서 약간의 흐림이 보입니다. 보다 두드러진 효과를보고 싶다면 예를 들어 사용하여 가장자리 감지 커널로 변경하십시오.

    float[] matrix = {
             1,  0, -1,
             0,  0,  0,
            -1,  0,  1
    };
    BufferedImageOp op = new ConvolveOp(new Kernel(3, 3, matrix));
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top