素描作为一种近乎完美的表现手法有其独特的魅力,随着数字技术的发展,素描早已不再是专业绘画师的专利,今天这篇文章就来讲一讲如何使用python批量获取小姐姐素描画像。文章共分两部分:

  • 第一部分介绍两种使用python生成素描画的思路
  • 第二部分介绍如何批量获取素描画

一、获取素描图的两个思路

本部分介绍的两个思路都是基于opencv来实现,不涉及深度学习相关内容。基本思想是读入一张照片图,然后通过各种变换转化成素描图。为了演示方便,我们先找来一张小姐姐的照片作为实验素材。

1、漫画风格

先来说第一种方法,这种方法的核心思想是利用了名为“阈值化”的技术,这种技术是基于图像中物体与背景之间的灰度差异,而进行的像素级别的分割。

如果想要把一张图片转化为只呈现黑色和白色的素描图,就需要对其进行二值化操作,opencv中提供了两种二值化操作方法:threshold和adaptiveThreshold。相比threshold,adaptiveThreshold能够根据图像不同区域亮度分布进行局部自动调节,因此被称为自适应二值化。下面这幅图就是对彩色图片进行二值化操作后的效果。

上面提到的概念可能比较晦涩,不理解也没有关系,下面我们重点讲讲怎么进行实际操作。

**第一步,**读入图片并转化为灰度图。这一步算是常规操作了,相信使用过opencv的同学都写过类似的代码。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

**第二步,**使用adaptiveThreshold方法对图片进行二值化操作,函数中的参数大多用于设置自适应二值化的算法和阈值等。

**第三步,**保存转换后的图片

cv2.imwrite(dst_image, img_edge)

经过上述步骤的操作,我们得到了一幅新的黑白图片,一起来看看转换后的图片效果。

从转换后的图片来看,虽然大概轮廓没有问题,但是效果很不理想,并不能够称之为素描图。这主要是因为adaptiveThreshold会在图片的每一个小的局部区域内进行二值化操作,因此对于一些清晰度比较高、色彩区分比较细腻的图片,就会出现上面这样密密麻麻的情况。

这个问题解决起来其实也很简单,只要在进行二值化之前加入下面这行代码对原图进行模糊化就可以了。

img_gray = cv2.medianBlur(img_gray, 5)

再来看看这次生成的素描图(下图),是不是看起来舒服多了,还有一种手绘漫画的感觉。

2、写实风格

通过上面这种方法,虽然最终也获得了一幅还算不错的素描图,但是看起来多少有些“失真”,为了获取看起来更加真实的素描图,我们尝试另外一种方法。

这种方法的核心思想是通过“底片融合”的方式获取原图中一些比较重要的线条,具体实现步骤如下:

**第一步,**跟上面的方法一样,使用opencv读取图片并生成灰度图。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

**第二步,**对灰度图进行模糊化操作。经过试验,使用上面提到的中值滤波函数cv2.medianBlur进行模糊化操作最终得到的素描图效果并不好,这里我们尝试使用高斯滤波进行图片模糊化,代码如下:

其中,参数ksize表示高斯核的大小,sigmaX和sigmaY分别表示高斯核在 X 和 Y 方向上的标准差。

**第三步,**使用cv2.divide方法对原图和模糊图像进行融合,cv2.divide本质上进行的是两幅图像素级别的除法操作,其得到的结果可以简单理解为两幅图之间有明显差异的部分。来看代码:

cv2.divide(img_gray, img_blur, scale=255)

**第四步,**保存生成的图片,代码跟上一个方法中一样,我们直接来看获取到的素描图效果。

从结果来看,这种方法获得的素描图线条更加细腻,素描效果也更好。

二、批量获取小姐姐素描画像

在这一部分,我们要实现批量获取小姐姐素描画像的功能,基于上文中两种素描图效果比对,这里采用第二种方法来实现图片到素描图的转换。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

那么,接下来要解决的就是图片源的问题了。最近很多项目都成功实现了从抖音或者知乎获取漂亮小姐姐这一操作,其实除了这些平台之外还有好多网站能获取到漂亮小姐姐的图片。

网站的具体内容我就不在文中展示了,为了指定图片爬取的思路,大概讲下页面结构:网站的主页罗列了N个主题,每个主题页面中都包含了M张小姐姐的图片,结构示意图如下:

各页面url的构建也很明了,例如下图中的页面url是,其中2794就是主题页的ID号。查看页面的html代码(下图),发现每张图片都在一个<li>标签下面。

遇到这种情况,一般来说我们可以通过某种解析器来获取每张图片的url。但是,经过仔细观察发现整个网页的html代码中只有涉及图片url的部分带有完整的http连接,因此可以考虑使用正则表达式来提取图片url,实现这部分功能的代码如下。

在上面这段代码中,我们提取主题页的ID作为待保存图片名称的一部分,save_jpg函数中会把每张图片转换为素描图并保存到本地。

由于我们要使用opencv对抓取到的图片进行各种运算转换,因此使用requests获取的图片必须先保存到本地,再用opencv重新读入后才行。基于上述思想,我们构建了如下所示的save_jpg函数,其中rgb_to_sketch函数是对上文第一部分中所说的第二种素描图的获取方法进行的封装。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

而在主函数中,我们只需要指定想要获取主题页面的id号,构建一组url列表就可以了:

以上就是完整代码,在学习Python的过程中,往往因为没有资料或者没人指导从而导致自己不想学下去了,因此我特意创了个企鹅的那个啥 592539176 ,大量的PDF书籍、教程都给大家免费使用!不管是学习到哪个阶段的小伙伴都可以获取到自己相对应的资料!来看看运行后的效果吧~~

其实程序员要想防止脱发我觉得还是要多锻炼身体,少熬夜,当然多看看养眼的小姐姐也不是不错的!

你说呢

女神说拍了一套写真集想弄成素描画?很简单,用Python就行了相关推荐

  1. 女神说拍了一套写真集想弄成素描画?很简单,用Python就行了!

    素描作为一种近乎完美的表现手法有其独特的魅力,随着数字技术的发展,素描早已不再是专业绘画师的专利,今天这篇文章就来讲一讲如何使用python批量获取小姐姐素描画像.文章共分两部分: 第一部分介绍两种使 ...

  2. 做自媒体拍短视频,不想露脸怎么玩?

    做自媒体拍短视频,不想露脸怎么玩? 做标签 自媒体运营请认准老品牌-"做标签",一键分发工具 拒绝无效运营 很多人想做短视频,但是一说到露脸就--不了了之了,今天给你讲讲8个不露脸 ...

  3. 最近发现一款拍卖转拍,玩家互动挑选自己想要的拍品,转拍获利,还可以提货的源码,一款购物和赚钱的不二选择

    拍卖转拍,玩家互动挑选自己想要的拍品,转拍获利,还可以提货,一款购物和赚钱的不二选择操作步骤打开拍卖首页 根据时间点击进入指定的场次选作品, 等待到时间准备抢拍, 抢完之后可以查看卖家的收款码, 确认 ...

  4. 想转行?零基础该如何学Python?这些一定要明白

    现在很多人在问,零基础学Python编程开发难度大吗?从哪学起?如果自己转行学习Python,能找得到工作吗?今天呢就给大家说说这个问题. 一.学习Python难吗? Python语言相对于初学者来说 ...

  5. 想加入IT行业为何建议你学Python,不要错过时机哦

    Python是一门优秀的语言,它能让你在短时间内通过极少量代码就能完成许多操作.不仅如此,它还轻松支持多任务处理.无论你是0基础小白,还是有过其他语言经验的程序员,Python都是必学的语言! 所以, ...

  6. 想加入IT行业为何建议你学Python,学完真值!

    Python是一门优秀的语言,它能让你在短时间内通过极少量代码就能完成许多操作.不仅如此,它还轻松支持多任务处理.无论你是0基础小白,还是有过其他语言经验的程序员,Python都是必学的语言! 所以, ...

  7. 女神问:有多喜欢她?我立马画出了女神的素描画!结果...

    导语 由来就是最近半年都在追我们公司的一位小姐姐,小姐姐长得眉清目秀,身材也好,关键是性格这块非常让我喜欢,追求了大半年,今天去问小姐姐要喝奶茶的时候,开始是死活不肯点,直到我说了,我发奖金了,组里的 ...

  8. python查看微信撤回消息_想查看微信好友撤回的消息?Python帮你搞定

    要说微信最让人恶心的发明,消息撤回绝对能上榜. 比如你现在正和女朋友用微信聊着天,或者跟自己喜欢的女孩子聊着天,一个不留神,你没注意到对方发的消息就被她及时撤回了,这时你很好奇,好奇她到底发了什么?于 ...

  9. 网站建设很简单,想要成功却很难

    现如今互联网中网站千千万,但是能有几个企业网站敢说自己是成功的呢?很多网站都有自己失败的点,尽管不说,但是从企业的互联网发展走向中就能窥得一二,不仅不能帮助企业促进线上线上宣传推广,还付出了一笔成本, ...

最新文章

  1. Anaconda简单入门
  2. mysql包含哪几部分_sql语言包含哪些部分
  3. 博士后工作站来了!智源研究院获得正式授牌
  4. 打开WORD2016提示 您正在试图打开带有宏的 。。。。 解决办法
  5. 用JAVA制作微型操作系统4月23日情况
  6. C++中基于范围的for循环
  7. 【详细解析】1033 To Fill or Not to Fill (25 分)
  8. Insertion Sort——打表找规律
  9. 程序员生存指南:如何在技术浪潮中屹立不倒?
  10. VMware网络连接方式(Host-only、NAT、Bridged)介绍及NAT环境下静态IP配置
  11. MFC建立C语言项目,mfc开发(mfc项目开发实例85个)
  12. java将jfif格式转换成ipg_无需工具直接将jfif格式图片批量修改为jpg格式图片的方法...
  13. Excel 2010同时打开2个或多个独立窗口
  14. DAY 10 | 自学前端第十天
  15. Control Egress Traffic
  16. python爬虫详解(七)——使用爬虫查看实时疫情状况
  17. 腾讯云LAMP搭建Discuz 域名解析
  18. Scala 模式匹配 match-case
  19. 关于DSSD算法相关解析
  20. busyer试做MFC简易画板

热门文章

  1. sqlserver行列转换
  2. Vue 中使用 el-input 自动获取焦点和二次获取焦点问题
  3. oracle exadata celldisk 闪存盘受损导致性能下降
  4. windows 7 下cuda 9.0 卸载、cuda8.0 安装
  5. php subscribe event,TP6 事件绑定、监听、订阅
  6. 数据库:sql递归查询
  7. Python空数组判断
  8. xynuoj 可分割背包问题 酒馆浪人的博客
  9. keyshot4破解版 64位32位 免费版
  10. 学计算机的要买u盘吗,选购U盘必须考虑的四大因素-电脑自学网