我想创建一个图像过滤器来创建卡通化效果。我正在尝试的是这样的 -
请帮助实现这一目标的程序。我需要用 Java 完成此操作。
如果无法使用工作代码,至少让我知道这些事情的完成情况。由于现在有很多网站都这样做,所以我认为这应该不会太困难。
到目前为止我试过的是这个 -
BufferedImage in = ImageIO.read(new File(basePath + "in11.jpg"));
BufferedImage out = new BufferedImage(in.getWidth(), in.getHeight(), BufferedImage.TYPE_INT_ARGB);
EdgeFilter edgeFilter = new EdgeFilter();
edgeFilter.filter(in, out);
GrayscaleFilter grayscaleFilter = new GrayscaleFilter();
grayscaleFilter.filter(out, out);
InvertFilter invertFilter = new InvertFilter();
invertFilter.filter(out, out);
但这是用于创建草图效果的代码(我正在使用此 link 中的 JHLabs 过滤器)。输出是这样的——
现在我的假设是,如果我能够实现一个滤镜来减少图像中的颜色数量,然后如果我将它与草图图像叠加,我可能会得到我想要的效果。但我不知道如何实现它。
最佳答案
- 使用少量颜色的调色板重新绘制对象(k-means 方法适用于查找要使用的颜色,但您应该确定颜色的数量)
- 可选:使用形态学操作过滤噪声(膨胀+腐 eclipse )
- 寻找边缘(Canny 等)
- 使用任何轮廓简化算法简化边缘
另一种方法是对其极端参数使用双边平滑滤波器(非常平滑):see example and code .
OpenCV lib 对此没问题,它还支持 Java,或者您可以使用 JavaCV 作为 Java-openCV 代理。
关于Java应用卡通效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27199864/