Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java应用卡通效果_Java_Android_Image Processing_Imagefilter - Fatal编程技术网

Java应用卡通效果

Java应用卡通效果,java,android,image-processing,imagefilter,Java,Android,Image Processing,Imagefilter,我想创建一个图像过滤器,将创建一个卡通效果。我想做的是这样的- 请帮助完成此步骤。我需要这是在Java中完成的 如果一个工作代码是不可能的,至少让我知道这些事情通常是如何完成的。由于现在有很多网站每天都这样做,我想这应该不会太难 到目前为止我试过的是- BufferedImage in = ImageIO.read(new File(basePath + "in11.jpg")); BufferedImage out = new BufferedImage(in.getWidth(), in.

我想创建一个图像过滤器,将创建一个卡通效果。我想做的是这样的-

请帮助完成此步骤。我需要这是在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);
但这是一个创建草图效果的代码(我使用的是JHLAB过滤器)。输出结果如下-

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);

现在我的假设是,如果我能够实现一个过滤器,它将减少我的图像中的颜色数量,然后如果我将其与草图图像叠加,我可能会得到我想要的效果。但我不知道该怎么做

  • 使用带有少量颜色的调色板重新绘制对象(k-means方法适用于找到要使用的颜色,但您应该确定一些颜色)
  • 可选:使用形态操作过滤噪声(膨胀+侵蚀)
  • 寻找边缘(精明的等)
  • 使用任意轮廓简化算法简化边
另一种方法是对其极端参数使用双边平滑滤波器(非常平滑):


OpenCV库对此没有问题,它也支持Java,或者您可以使用JavaCV作为Java OpenCV代理。

您好,谢谢您的回复。但是你能详细解释一下吗。我不可能把它们都弄清楚。详细的解释需要几页纸,但不值得,因为到处都有详细的描述。术语包括:k-均值聚类、形态学、Canny边缘检测、轮廓简化。例如,在调色板缩小后,您可以使用.Hi Vit找到简化的轮廓,谢谢。我试试看。你能为我推荐一本关于图像处理新手的书或教程吗。我觉得我应该知道这个术语的一些细节。这可能对我的其他项目有所帮助。我从不读书,只读文章和文档。试试这个