用Python做个海量小姐姐素描图

用python进行图片素描 简介: 首先介绍素描——使用单一色彩表现明度变化的绘画。 由素描的定义可显而易见,我们目标则是将图片转为灰度图,即单通道。 为了表现色彩的明度变化,我们可以在代码中增加一种光源效果,从而达到灰度变化以模拟视觉的远近效果 代码介绍: 1.获取图片灰度转入数组,方便接下的计算。 a=np.asarray(Image.open("2022.PNG").convert("L")).astype("float") 2.分别获取图像梯度值 进行归一化处理 depth=10 grad=np.gradi 阅读详情

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

  • 第一部分介绍两种使用python生成素描画的思路

  • 第二部分介绍如何批量获取素描画

640

1

获取素描图的两个思路

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

640?wx_fmt=jpeg

1)漫画风格

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

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

640?wx_fmt=png

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

第一步,读入图片并转化为灰度图。这一步算是常规操作了,相信使用过opencv的同学都写过类似的代码。

img_rgb = cv2.imread(src_image)
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2GRAY)

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

img_edge = cv2.adaptiveThreshold(img_gray, 255,
                                 cv2.ADAPTIVE_THRESH_MEAN_C,
                                 cv2.THRESH_BINARY, blockSize=3, C=2)

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

cv2.imwrite(dst_image, img_edge)

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

640?wx_fmt=jpeg

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

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

img_gray = cv2.medianBlur(img_gray, 5)

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

640?wx_fmt=jpeg

2)写实风格

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

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

第一步,跟上面的方法一样,使用opencv读取图片并生成灰度图。

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

img_blur = cv2.GaussianBlur(img_gray, ksize=(21, 21),
                            sigmaX=0, sigmaY=0)

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

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

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

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

640?wx_fmt=jpeg

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

640

2

批量获取小姐姐素描画像

在这一部分,我们要实现批量获取小姐姐素描画像的功能,基于上文中两种素描图效果比对,这里采用第二种方法来实现图片到素描图的转换。

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

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

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

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

由于我们要使用opencv对抓取到的图片进行各种运算转换,因此使用requests获取的图片必须先保存到本地,再用opencv重新读入后才行。基于上述思想,我们构建了如下所示的save_jpg()函数,其中rgb_to_sketch()函数是对上文第一部分中所说的第二种素描图的获取方法进行的封装。

640?wx_fmt=png

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

def main():
    idlist = ['id1', 'id2']
    urllist = ['http://www.waxjj.cn/'+x+'.html' for x in idlist]
    jpgurls = get_jpg_urls(urllist)

以上就是完整代码,来看看运行后的效果吧~~

640?wx_fmt=png

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

你说呢,欢迎留言吱一声~~

近期热门:

千人学习群:

Sketchy-Turtle:一种Python乌龟,可以模仿(几乎)提供给它的任何图像,同时模仿人类的素描方式 粗略的龟 :turtle: 一只乌龟(几乎)勾勒出给它的任何图像。 使用说明: 克隆此仓库: git clone https://github.com/hrshtv/Sketchy-Turtle.git 运行: python3 sketch.py -in <input_img_path> -o <output> -wt <width> -ht <height> -in ( -in --input ):输入图像的路径 -o ( --output output):输出文件的名称。 输出将是一个.eps文件,仅提供名称,不带任何扩展名 -wt ( --width ) -ht ( --h 立即下载

相关推荐

python实现人像动漫化的示例代码

利用百度api实现人像动漫化 百度API地址:https://ai.baidu.com/tech/imageprocess/selfie_anime 技术文档:https://ai.baidu.com/ai-doc/IMAGEPROCESS/Mk4i6olx5 注册百度账号,开通实现人像动漫化,创建应用。 # encoding:utf-8 import requests import base64 # client_id 为官网获取的AK, client_secret 为官网获取的SK host = 'https://aip.baidubce.com/oauth/2.0/token?gr

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

pk 哥读书时代遇到美术课就头疼,因为要画素描图,可能是自己对美术没什么天赋吧。如今 P 图工具也很常见,可以把一张图片 P 成素描图。自从会了 Python 之后,我就没用过 PS 了!今天我用 Python 把图片变成素描图片。我选了一张图片,运行代码后处理效果如下:项目环境语言:Python 3.6编辑器:PyCharm安装导入Pillow 库,PIL的前身,全称是 Python Imagi...

weixin_39927683的博客 1176

别再到处找包了!Keil5芯片支持包(Pack)最全管理指南:安装、更新、迁移与离线备份

本文详细解析了Keil5芯片支持包(Pack)的全生命周期管理,包括安装、更新、迁移与离线备份的工程化解决方案。针对STM32F10x等常见芯片,提供了高效获取Pack的策略、版本管理技巧及团队协作方案,帮助开发者解决常见的'Device Family Pack missing'等问题,提升嵌入式开发效率。

weixin_28729205的博客 540

python绘制梅尔谱图_画一个心送给心爱的小姐姐,Python绘图库Turtle

Python绘图库TurtleTurtle介绍Turtle是Python内嵌的绘制线、圆以及其他形状(包括文本)的图形模块。一个Turtle实际上是一个对象,在导入Turtle模块时,就创建了对象,然后,可以调用Turtle对象的各种方法完成不同的操作。当创建一个Turtle对象时,它的位置被设定在(0,0)处——窗口的中心,而且它的方向被设置为向右。Turtle模块用笔来绘制图形,就像在现实的纸...

weixin_39606177的博客 609

光学设计必知:Ansys Zemax中6种系统孔径类型的适用场景全解析

本文深入解析Ansys Zemax中6种系统孔径类型的适用场景,包括入瞳直径、像方空间F/#、物方空间NA等,帮助光学设计师精准控制光线选择和成像质量。通过实际案例和代码示例,详细讲解各孔径类型的计算原理、参数设置及在显微系统、激光扩束等场景中的优化策略,提升复杂光学系统设计效率。

weixin_29266007的博客 552

MATLAB2022b安装

图文并茂,手把手教会你怎么安装MATLAB2022b

1万+

turtle基本使用

以上是使用Turtle库的基本步骤,可以通过控制画笔和画布的属性,以及控制画笔的运动,实现各种简单的图形绘制。Turtle是Python中的一个图形库,可以进行简单的绘图操作。# 控制画笔向前或向后移动指定距离。# 控制画笔移动到指定位置。1. 导入Turtle库。# 控制画笔转向指定角度。# 控制画笔颜色和粗细。# 控制画布的背景颜色。2. 创建画布和画笔。4. 控制画笔的属性。5. 控制画笔的运动。6. 控制画布的属性。7. 隐藏或显示画笔。

weixin_59246157的博客 963

ROG幻16Air新机避坑:Ubuntu 22.04下NVIDIA驱动、CUDA与Isaac Gym的兼容性实战

本文详细记录了在ROG幻16Air新机上安装Ubuntu 22.04,并成功配置NVIDIA驱动、CUDA与Isaac Gym强化学习开发环境的完整实战过程。针对官方文档未明确支持Ubuntu 22.04的挑战,文章提供了从驱动安装、CUDA版本选择、Python虚拟环境搭建到Isaac Gym兼容性调试的一站式解决方案,帮助开发者在新硬件上高效部署机器人仿真与训练平台。

weixin_28419039的博客 221

灰度图读取_用Python做个海量小姐姐素描图

素描作为一种近乎完美的表现手法有其独特的魅力,随着数字技术的发展,素描早已不再是专业绘画师的专利,今天这篇文章就来讲一讲如何使用python批量获取小姐姐素描画像。文章共分两部分:第一部分介绍两种使用python生成素描画的思路第二部分介绍如何批量获取素描画1获取素描图的两个思路本部分介绍的两个思路都是基于opencv来实现,不涉及深度学习相关内容。基本思想是读入一张照片图,然后通过各种...

weixin_39610956的博客 89

Sigmastar平台WDR调试实战:从参数解析到鬼影消除的完整指南

本文提供了Sigmastar平台宽动态(WDR)技术的实战调试指南。针对逆光、运动场景下的核心痛点,系统性地解析了从多曝光采集、HDR融合到色调映射的完整管线,并重点阐述了如何通过调整曝光比、运动阈值与调整曲线等关键参数,有效消除运动鬼影、平衡暗部噪声与细节,最终实现清晰稳定的图像效果。

Jerry的专栏 926

Mujoco xml actuator

在MuJoCo中,actuator(执行器) 是用于定义外部力或力矩的机制,这些力或力矩可以作用于关节、肌腱或身体。执行器可以模拟各种类型的驱动器,如电机、液压缸、肌肉等。它们通过定义传输(transmission)和力生成机制(force generation)来实现对模型的控制。

m0_52113469的博客 2900

python手绘效果图_用Python做个海量小姐姐素描图

素描作为一种近乎完美的表现手法有其独特的魅力,随着数字技术的发展,素描早已不再是专业绘画师的专利,今天这篇文章就来讲一讲如何使用python批量获取小姐姐素描画像。文章共分两部分:第一部分介绍两种使用python生成素描画的思路第二部分介绍如何批量获取素描画01.获取素描图的两个思路本部分介绍的两个思路都是基于opencv来实现,不涉及深度学习相关内容。基本思想是读入一张照片图,然后通过各种变换转...

weixin_35767180的博客 396

ROS机器人未知环境自主探索功能包explore_lite总结

本系列文章主要针对ROS机器人常使用的未知环境自主探索功能包explore_lite展开全源码的详细解析,并进行概括总结。 本系列文章共包含六篇文章,前五篇文章主要介绍explore_lite功能包中 explore.cpp、costmap_tools.h、frontier_search.cpp、costmap_client.cpp等源码实现文件中全部函数的详细介绍,第六篇文章进行概括总结,包含自主探索功能包explore_lite的简介,实现未知环境自主探索功能的原理及流程总结,效果演示,使用功能包exp

慕羽★的博客 4461

5 行代码,用 Python 批量做海量小姐姐的素描图

你好,我是悦创。这次呢,我给大家带来的是 50行代码,生成一张素描图。让自己也是一个素描“大师”。那废话不多说,我们直接先来看看效果吧。 上图的右边就是我们的效果,那具体有哪些步骤呢? 1. 流程分析 对于上面的流程来说是非常简单的,接下来我们来看看具体的实现。 2. 具体实现 安装所需要的库: pip install opencv-python 导入所需要的库: impor...

AI悦创·编程私教1v1 514

Qt实现窗口等比例缩放

在Qt中,实现窗口的等比例缩放是一个常见的需求。通过对窗口的尺寸进行调整,使得窗口的内容在缩放过程中保持相同的比例,可以提供更好的用户体验。通过以上的代码,我们实现了一个可以等比例缩放的Qt窗口。在调整窗口大小时,窗口中的标签和按钮将按比例缩放,保持内容的比例不变。首先,我们需要在Qt中创建一个窗口,并设置其内容。在该事件中,我们将根据窗口的新尺寸计算出合适的比例因子,并将其应用到窗口的内容上。现在,我们将添加功能,使得窗口可以等比例缩放。最后,我们将缩放因子应用到窗口中的标签和按钮上,调整它们的尺寸。

2301_79330511的博客 3958

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python画黑白线条_用Python获取海量素描风格的小姐姐

1获取素描图的两个思路本部分介绍的两个思路都是基于opencv来实现,不涉及深度学习相关内容(需要安装opencv-python库,参见 OpenCV-Python,计算机视觉开发利器)。基本思想是读入一张照片图,然后通过各种变换转化成素描图。为了演示方便,我们先找来一张小姐姐的照片作为实验素材。1)漫画风格先来说第一种方法,这种方法的核心思想是利用了名为“阈值化”的技术,这种技术是基于图像中物体...

weixin_39627665的博客 261

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

用Python做个海量小姐姐素描图!

素描作为一种近乎完美的表现手法有其独特的魅力,随着数字技术的发展,素描早已不再是专业绘画师的专利,今天这篇文章就来讲一讲如何使用python批量获取小姐姐素描画像。文章共分两部分: 第一部分介绍两种使用python生成素描画的思路 第二部分介绍如何批量获取素描画 1 获取素描图的两个思路 本部分介绍的两个思路都是基于opencv来实现,不涉及深度学习相关内容。基本思想是读入一张照片图,然后通过各种变换转化成素描图。为了演示方便,我们先找来一张小姐姐的照片作为实验...

爬遍所有网站 810

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jpg灰度化 python_用Python获取海量素描风格的小姐姐

素描作为一种近乎完美的表现手法有其独特的魅力,随着数字技术的发展,素描早已不再是专业绘画师的专利,今天这篇文章就来讲一讲如何使用python批量获取小姐姐素描画像。文章共分两部分:第一部分介绍两种使用python生成素描画的思路第二部分介绍如何批量获取素描画1获取素描图的两个思路本部分介绍的两个思路都是基于opencv来实现,不涉及深度学习相关内容(需要安装opencv-python库,...

weixin_39761880的博客 112

5 行代码,用 Python 批量做海量小姐姐的素描图「附视频」

5 行代码生成素描 你好,我是悦创。 公众号:AI悦创; AI悦创博客:https://www.aiyc.top/ 这次呢,我给大家带来的是 50行代码,生成一张素描图。让自己也是一个素描“大师”。那废话不多说,我们直接先来看看效果吧。 上图的右边就是我们的效果,那具体有哪些步骤呢? 1. 流程分析 对于上面的流程来说是非常简单的,接下来我们来看看具体的实现。 2. 具体实现 安装所...

AI悦创·编程私教1v1 1006

python女性素描_用Python获取海量素描风格的小姐姐!这也太好看了吧!

素描作为一种近乎完美的表现手法有其独特的魅力,随着数字技术的发展,素描早已不再是专业绘画师的专利,今天这篇文章就来讲一讲如何使用python批量获取小姐姐素描画像。文章共分两部分:第一部分介绍两种使用python生成素描画的思路第二部分介绍如何批量获取素描画1获取素描图的两个思路本部分介绍的两个思路都是基于opencv来实现,不涉及深度学习相关内容(需要安装opencv-python库,参见Ope...

weixin_39572316的博客 158

流弊了!用Python分分钟把微信头像变卡通,油画,素描!

大家好,我是菜鸟哥今天给大家分享一个非常好玩有趣的Python小程序。微信上的头像都是大家个性展示的舞台,很多人喜欢拿卡通人物做自己的头像,而小姐姐也希望展现有个性的自己的头像照片。如果我...

cainiao_python的博客 2148

宅男福利!20行Python代码,一网打尽B站小姐姐的直播信号源!

大家好,我是菜鸟哥!今天我们又用Python来玩一个好玩的程序。随着收看直播的用户激增,越来越多的小姐姐们都在通过直播的方式和粉丝们交流互动。但是直播的界面中总是充斥着各种各样的广告推荐和...

cainiao_python的博客 2万+

Python也能成为毕加索?我用Python给小姐姐画了幅油画

点击上方“菜鸟学Python”,选“星标”公众号重磅干货,第一时间到达小编的舍友最近交了一个女朋友,是念艺术系的,擅长画画!长的好看又漂亮,舍友经常在我耳边吹嘘,女朋友画的油画多么漂亮。...

cainiao_python的博客 2058
上一篇: Python 3.8.0 正式版发布,新特性初体验
下一篇: 谁说程序员身边缺小姐姐?这不就有一位!
菜鸟学Python
博客等级 码龄9年 8062粉丝 571原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值