最近我琢磨着,手机里那些照片是真不少,但总感觉差点意思。平时拍了就放那儿,看来看去就那样。有一天刷朋友圈,看到有个朋友分享了几张把照片P成素描风格的,瞬间觉得——诶,这有意思!比普通照片好看多了,还挺有艺术感。当时我就在想,要是能有个工具,能让我自己也把这些照片搞成素描、漫画那种风格,那得多好玩儿!
本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址:www.gm89.icu
有了这个想法,我心里就开始痒痒了。作为一个喜欢瞎折腾的人,我第一个念头就是:与其找别人做的软件,不如自己动手做一个!这样玩起来更有成就感。说干就干,我立马就开始琢磨起来。
从零开始,先搞清楚怎么“画”出来
一开始我是真没头绪,照片变素描,这技术听起来挺高大上的。我就去网上瞎查,搜“照片转素描算法”、“图像处理素描效果”之类的关键词。看了好一阵子,大概明白了点门道。
- 照片得变成黑白的,也就是灰度图。彩色素描也有,但黑白是基础。
- 然后,得想办法把照片的边缘线给抠出来,素描嘛不就看线条感吗?
- 还得处理一下明暗和纹理,让它看起来不是简单的黑白照片,而是有点铅笔画那样的质感。
我当时就想,这肯定得用编程来实现,手动去P那得P到猴年马月去。我想到了以前玩过一点的Python,这玩意儿处理图像还挺方便的,听说有个库叫OpenCV,专门搞图像处理的,感觉就是它了!
动手捣鼓,遇到坑是常事儿
我立马就动手搭环境,装Python,装OpenCV。这中间倒没啥大问题,因为之前弄过一些小项目,轻车熟路。装好之后,真正的挑战才开始。
我先找了一张自己的照片,打算拿它开刀。第一步就是把照片转成灰度图。OpenCV里头有现成的函数,几行代码一跑,照片立马变黑白了。一看,有点素描那意思了,但还差得远,就是个普通的黑白照片。
接下来是关键的“抠线条”和“上纹理”。我试了好几种方法。我尝试了直接用边缘检测,比如Canny算子。结果出来的照片,线条是有了,但是显得太硬了,像电路板一样,一点都不像手绘的素描。而且原图的细节也丢失了很多。
我意识到,光是边缘检测不行,还得考虑明暗关系。我学着教程上说的,尝试了“反转”、“高斯模糊”和“颜色减淡”这些操作。这几个概念听着挺专业,但就是几个图像处理的步骤,相当于在Photoshop里头点几个滤镜的意思。我把灰度图反转一下,再把原灰度图模糊一下,然后拿这俩图一合成……哇塞!出来的效果立马就不一样了!照片上的高光和阴影部分变得特别明显,很多细节也变成了像铅笔线条一样的纹理,这下是真的像素描了!
但问题又来了,每次都是固定参数处理,出来的效果都是一样的。有些照片可能效果很有些照片就显得太淡或者太黑。我就想,能不能让这个“素描”的程度可以自己调节?
做成一个能玩的“小工具”
光是几行代码跑出个素描效果,这离“App”还远着。我得给它套个壳子,让它能读照片、显示照片、还能保存照片,最好还能调参数。
我想到了Python的另一个库,叫Tkinter,这玩意儿能用来做简单的窗口程序。虽然界面丑是丑了点,但对于我这种只是想实现功能的人来说,完全够用。
- 我先画了个窗口出来。
- 在窗口上加了个按钮,点一下就能弹出文件选择框,让我能选照片。
- 选好照片后,把它显示在窗口里,方便我看到原图。
- 然后又加了个“转换”按钮,一点它,照片就被我之前写好的素描算法处理了。
- 处理完的素描图,也显示在旁边,可以和原图对比。
- 最关键的是,我加了几个滑动条,可以让我调节模糊的程度,还有一些色彩深浅的参数。每次调节,素描效果就实时变化,这可太好玩了!
- 当然不能忘了“保存”按钮,把做好的素描图存下来。
这么一弄,虽然界面很简陋,但我自己的“photosketch图片制作App”就这么搞出来了!
成果展示与一些小小的得意
我用自己做的这个小工具,把手机里好多照片都处理了一遍。有风景照,有猫猫狗狗,甚至还有几张自拍。每次看到照片从普通的彩色变成那种黑白有质感的素描,那种成就感别提有多足了。朋友看到我用这个做的图,都还问我是用啥软件P的,我说是我自己捣鼓的,他们都一脸惊讶,哈哈。
这个过程从开始有想法,到查资料,再到一行行代码敲出来,中间也踩了不少坑,比如图片显示大小不合适,文件路径处理出错,或者参数调节起来没啥效果等等。但每次解决了问题,都觉得自己的能力又提升了一点点。虽然只是个简单的小程序,但它确实让我的照片变得更有趣,也让我体验了一把从无到有创造东西的乐趣。以后有时间,我可能还会给它加上更多的滤镜效果,比如卡通化、油画效果什么的,让这个“照片魔法棒”变得更强大。