简介

如何将图片转换成素描图呢,只需要下面四个步骤即可:

首先将彩色图转换成灰度图;

对灰度图进行求其反色的操作;

对第2步得到的结果采用一个高斯模糊的操作;

采用颜色亮化(color dodge)的技术将第一步的灰度图和第三步操作后的图片进行混合。

事先准备,首先是安装好 opencv,可以直接通过 pip 进行安装:

pip install opencv-python

接着准备一张图片,最好是颜色鲜明一点的图片,方便对比转换的效果。

上面的代码是读取图片后,再通过调用 cv2.cvtColor 函数将图片转换成灰度图,实际上我们可以直接在读取图片时候就直接转换图片,即:

img_gray = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)

这里调用 cv2.imread 函数时,设置了 cv2.IMREAD_GRAYSCALE 的标志,表示加载灰度图。在imread 函数中是设置了三种标志,分别是

其实就是原本比较暗的地方变光亮了,而比较亮的地方变暗了。

第三步:高斯模糊

高斯模糊操作是一个有效减少图片噪音以及对图片进行平滑操作的方法,在数学上等价于对图像采用高斯核进行卷积的操作。我们可以直接调用 cv2.GaussianBlur 来实现高斯模糊操作,这里需要设置参数 ksize ,表示高斯核的大小, sigmaX 和 sigmaY 分别表示高斯核在 X 和 Y 方向上的标准差。

在现代图像编辑工具,比如 PS 可以实现上述说的两种技术。比如对于颜色亮化技术,给定一张图片 A 和 蒙版 B,那么实现做法如下所示:

(B[idx] == 255)?B[idx]:min(255, ((A[idx] << 8) / (255-B[idx])))

通过 python 代码实现上述公式,那么原始代码如下所示:

上述代码虽然实现了这个功能,但是很明显会非常耗时,中间采用了一个两层循环,计算复杂度是 O(w*h) ,也就是如果图片的宽和高的乘积越大,耗时就越长,所以就有了升级版的代码版本:

def dodgeV2(image, mask):

return cv2.divide(image, 255 - mask, scale=256)

运行上述代码,得到的最终结果如下所示:

效果看起来还可以,除了右下角部分对于原图中黑色区域处理得不是很好。

而另一种技术—-暗化操作的代码如下所示:

def burnV2(image, mask):

return 255 - cv2.divide(255 - image, 255 - mask, scale=256)

效果如下图所示:

完整版代码如下所示:

最后,还有一种更加快速的实现,代码如下所示,仅需四行代码即可实现转换成素描图的效果。

def rgb_to_sketch_v2(src_image_name):

img_gray = cv2.imread(src_image_name, 0)

img_blur = cv2.GaussianBlur(img_gray, (21, 21), 0, 0)

img_blend = cv2.divide(img_gray, img_blur, scale=256)

img_result = cv2.cvtColor(img_blend, cv2.COLOR_GRAY2BGR)

最后用本人比较喜欢的一个女演员的照片来看看这个转换的效果:

效果还是挺不错的!

可以逗女朋友了哦!

“我自己是一名从事了多年开发的Python老程序员,辞职目前在做自己的Python私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的Python学习干货,从最基础的到各种框架都有整理,送给每一位喜欢Python小伙伴,想要获取的可以关注我的头条号并在后台私信我:01,即可免费获取。"

excel图片变成代码_三行代码把女朋友照片变成了素描图片!以为我画的!爱我爱的不行...相关推荐

  1. 三行代码把女朋友照片变成了素描图片!人生苦短,爱python多一些

    我们知道图片除了最普通的彩色图,还有很多类型,比如素描,卡通,黑白等等,今天就介绍如何使用python和opencv来实现图片变素描图. 如果有想学习python的程序员,可来我的python学习扣q ...

  2. 三行代码把女朋友照片变成了素描图片!Python竟然还能这样

    我们知道图片除了最普通的彩色图,还有很多类型,比如素描,卡通,黑白等等,今天就介绍如何使用python和opencv来实现图片变素描图. 首先将彩色图转换成灰度图: 对灰度图进行求其反色的操作: 对第 ...

  3. Python第三方库巧用,制作图片验证码只需三行代码

    现在验证码的种类真的是越来越多,短信验证码.语音验证码.图片验证码.滑块验证码 - 我们在 PC 的网页端或者手机上的 app 进行登录或者注册时,应该总会遇见图片验证码,比如下面这类: 上面这些图片 ...

  4. 网页漂浮物代码_无代码VS低代码。 有什么不同? 它。 不。 物。

    网页漂浮物代码 You may hear the terms "No Code" and "Low Code" thrown around by develop ...

  5. 管理员所有权代码_为什么代码所有权糟透了,您永远不应该在有实践的地方工作...

    管理员所有权代码 Code ownership sucks. 代码所有权糟透了. It limits code and stunts your growth as a developer. 它限制了代 ...

  6. python图画制作_用Python把照片制作成素描图片

    pk 哥读书时代遇到美术课就头疼,因为要画素描图,可能是自己对美术没什么天赋吧.如今 P 图工具也很常见,可以把一张图片 P 成素描图.自从会了 Python 之后,我就没用过 PS 了!今天我用 P ...

  7. 用python做一张图片_用Python把照片制作成素描图片

    pk 哥读书时代遇到美术课就头疼,因为要画素描图,可能是自己对美术没什么天赋吧.如今 P 图工具也很常见,可以把一张图片 P 成素描图.自从会了 Python 之后,我就没用过 PS 了!今天我用 P ...

  8. 自动设置图片的序号_编写学位论文时如何给表格和图片自动编号

    引言 最近和论文格式的检测系统斗智斗勇,可以说是摸清了系统的脾气并且能够把错误数控制在0.其中,论文正文的表格和图片自动编号的问题还是挺有意思的,特此记录一下. 需求 对于表格,系统要求表格题注处于表 ...

  9. 安卓机如果相册不选图片就退出_教你怎么把照片制作成电子相册

    现在的我们都喜欢到处拍照,智能手机的出现以及越来越高清的相机,都给我们的拍照提供了太多的便利和可能,但是照片太多了以后就会堆积在电脑硬盘或者手机链里,想要从中观看.查找某一张都变的非常吃力,这个时候我 ...

最新文章

  1. ubuntu部署java环境
  2. 微软推出VS Code新特性,为TypeScript和JavaScript用户提供AI辅助开发功能
  3. [爬虫]通过url获取连接地址中的数据
  4. weblogic中ssrf漏洞修复_WebLogic SSRF 及漏洞修复
  5. js map 箭头_JS异常函数之-箭头函数
  6. phpcmsV9 视频解决方案 - 第三方托管
  7. 火爆全网络!这个GitHub项目开源了!搞定目标检测、图像识别
  8. Spring :基于@Transactional注解的声明式事物
  9. 如何安装Windows7多语言支持
  10. 多线程join方法解析
  11. NAND Flash和NOR Flash的比较
  12. 渗透常用SQL注入语句合集
  13. Myeclipse性能优化
  14. 【js】pagination分页(支持首页,末页,跳转)
  15. 【代码规范】阿里巴巴代码规范
  16. 高数篇:11.01多元函数求极限方法
  17. 今天买了正版的beyondcompare 4.0
  18. 数理经济学中的无穷小方法
  19. obj文件格式学习(自用)
  20. 如何将 Django 服务器单独部署到 heroku 上

热门文章

  1. parted磁盘分区与GPT
  2. cacti忘记密码怎么办
  3. 13.PHP中循环结构之foreach循环语句(任务一)
  4. Silverlight 4正式版发布
  5. 在Eclipse中创建Maven多模块工程的例子
  6. cpu使用时间百分比过高 排查
  7. 对javascript作用域链的理解
  8. linux udevd服务 设备管理工具 简介
  9. mysql 报错 sql_mode=only_full_group_by 解决方法
  10. webservice 简介 跨编程语言 跨操作系统 远程调用技术