如何通过命令行将图像转换为卡通?

如何通过命令行将图像转换为卡通?

我想仅使用命令行从照片创建这种卡通效果。

期望效果示例:

  • 在此处输入图片描述

您能描述一下实现这种卡通效果的过程或给出一些提示吗?

信息:

答案1

我找到了一个 bash脚本Fred Weinhaus 编写的 imagemagick 可以实现这个功能。他的脚本仅供非商业用途免费使用。

命令行用法:

USAGE: cartoon [-p pattern] [-n numlevels] [-m method] [-e edgeamount] 
[-b brightness] [-s saturation] infile outfile

USAGE: cartoon [-h or -help]

-p ... pattern ...... segmentation pattern (shape); 0<=integer<=100;
..................... default=70
-n ... numlevels .... number of desired segmentation levels; integer>=2;
..................... default=6
-m ... method ....... edge method; 1 or 2; default=1
-e ... edgeamount ... amount of edges; float>=0; default=4
-b ... brightness ... brightness of cartoon; integer>=0; default=100
-s ... saturation ... saturation of cartoon; integer>=0; default=150

PURPOSE: To create a cartoon-like appearance to an image.

(更多内容请见网站本身。)该脚本的作用是……

(Optionally) applies a median filter to the image
Reduces the number of colors in the filtered image
Converts the original image to grayscale
(Optionally) applies a median filter to the grayscale image
Applies a gradient edge detector to the grayscale image
Thresholds the edge image to binary
Composites the edge image with the color reduced image

他的网站上有示例,但这些示例与您的示例不太一样。您可能需要调整设置才能使其显示的图像与您显示的图像一样。

答案2

您可能已经发现,各种图像处理解决方案的色调分离滤镜的卡通可能需要对原始源进行相当多的调整,然后我们才能获得与您的示例类似的结果。

从命令行操作的两个解决方案可能会给您提供接近示例的结果,但我们得到的结果仍然在很大程度上取决于所使用的源图像。

图像魔术师

使用convertmogrify工具,我们可以将-paint平面卡通风格的过滤器应用于我们的源:

convert -paint <strength> <source> <output>

用整数替换<strength>以指定画笔大小。 越小,保留的细节越多。 在您的示例中,我使用了强度,4结果如下:

在此处输入图片描述

追踪至矢量图形

比位图操作更好的结果可能是将位图跟踪为矢量图形例如使用 Inkscape。然后我们还可以添加描边或调整生成的颜色以更好地满足我们的需求。

可以使用以下命令行跟踪器进行安装自动跟踪(遗憾的是,该软件包仅存在于 Ubuntu 18.04 或更早版本的存储库中)。

很多选择调整使用 autotrace 获得的结果。以下示例是使用这些选项生成的:

autotrace -color-count 6 -filter-iterations 8 -remove-adjacent-corners -output-format svg input.png > output.svg

在此处输入图片描述

相关内容