过滤卷积Java-它是如何工作的?

过滤卷积Java-它是如何工作的?,java,bufferedimage,graphics2d,Java,Bufferedimage,Graphics2d,我正在制作一个应用程序,将一些过滤器应用于java上加载的图像 我被困在创建兼容的缓冲图像、获取graphics2d对象并渲染新图像的地方 这是我创建BuffereImage兼容的代码 pbi=obi.getSubimage(0, 0, obi.getWidth(),obi.getHeight()); int altoImagen=pbi.getHeight(); int anchoImagen=pbi.getWidth();

我正在制作一个应用程序,将一些过滤器应用于java上加载的图像

我被困在创建兼容的缓冲图像、获取graphics2d对象并渲染新图像的地方

这是我创建BuffereImage兼容的代码

pbi=obi.getSubimage(0, 0, obi.getWidth(),obi.getHeight());
            int altoImagen=pbi.getHeight();
            int anchoImagen=pbi.getWidth();
            pbi=new BufferedImage(anchoImagen,altoImagen,BufferedImage.TYPE_INT_RGB);
            g2=pbi.createGraphics();
之后,我将过滤器应用于obi OriginalBuffereImage和原始图像

float ninth=1.0f/9.0f;
        float[]blurKernel={
            ninth,ninth,ninth,
            ninth,ninth,ninth,
            ninth,ninth,ninth
        };
        ConvolveOp op=new ConvolveOp(new Kernel(3,3,blurKernel));
        obi=op.filter(obi,null);    
        lienzo.repaint();
        g2.drawImage(obi, null,null);
问题来了,我知道是什么。。新图像未渲染

我想当我做
g2=pbi.createGraphics
时就会发生这种情况。。但在许多教程中,这一步必须完成

有人可以向我解释渲染是如何工作的


我没有使用组件,而是使用Graphics2d.drawImage()将图像(和图形)渲染到JPanel中。

您想实现什么?当您写入
obi=op.filter(obi,null)
时,您已经在创建过滤后的图像;没有必要在第三张图片上画它..是的,我注意到。。你知道的。。我的项目是基于我的导师所做的指导。。。我只是注意到有很多错误。。