سؤال

لذلك كنت أحاول تطبيق مرشح غاوسي على صورة أستخدمها 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