加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

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

发布时间:2019-10-21 22:01:31 所属栏目:建站 来源:大刘
导读:【大咖·来了 第7期】10月24日晚8点寓目《智能导购对话呆板人实践》 素描作为一种近乎美满的示意伎俩有其奇异的魅力,跟着数字技能的成长,素描早已不再是专业绘画师的专利,本日这篇文章就来讲一讲怎样行使python批量获取小姐姐素描绘像。文章共分两部门:
副问题[/!--empirenews.page--] 【大咖·来了 第7期】10月24日晚8点寓目《智能导购对话呆板人实践》

素描作为一种近乎美满的示意伎俩有其奇异的魅力,跟着数字技能的成长,素描早已不再是专业绘画师的专利,本日这篇文章就来讲一讲怎样行使python批量获取小姐姐素描绘像。文章共分两部门:

  • 第一部门先容两种行使python天生素描绘的思绪
  • 第二部门先容怎样批量获取素描绘
  • 用Python做个海量小姐姐素描图

1.获取素描图的两个思绪

本部门先容的两个思绪都是基于opencv来实现,不涉及深度进修相干内容。根基头脑是读入一张照片图,然后通过各类调动转化成素描图。为了演示利便,我们先找来一张小姐姐的照片作为尝试素材。

1)漫画气魄威风凛凛

先来说第一种要领,这种要领的焦点头脑是操作了名为“阈值化”的技能,这种技能是基于图像中物体与配景之间的灰度差别,而举办的像素级此外支解。

假如想要把一张图片转化为只泛起玄色和白色的素描图,就必要对其举办二值化操纵,opencv中提供了两种二值化操纵要领:threshold()和adaptiveThreshold()。对比threshold(),adaptiveThreshold()可以或许按照图像差异地区亮度漫衍举办局部自动调理,因此被称为自顺应二值化。下面这幅图就是对彩色图片举办二值化操纵后的结果。

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

上面提到的观念也许较量艰涩,不领略也没有相关,下面我们重点讲讲怎么举办现实操纵。

第一步,读入图片并转化为灰度图。这一步算是通例操纵了,信托行使过opencv的同窗都写过相同的代码。

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

第二步,行使adaptiveThreshold()要领对图片举办二值化操纵,函数中的参数大多用于配置自顺应二值化的算法和阈值等。

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

第三步,生涯转换后的图片

  1. cv2.imwrite(dst_image, img_edge) 

颠末上述步调的操纵,我们获得了一幅新的利害图片,一路来看看转换后的图片结果。

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

从转换后的图片来看,固然或许外观没有题目,可是结果很不抱负,并不可以或许称之为素描图。这首要是由于adaptiveThreshold()会在图片的每一个小的局部地区内举办二值化操纵,因此对付一些清楚度较量高、色彩区分较量精致的图片,就会呈现上面这样密密麻麻的环境。

这个题目办理起来着实也很简朴,只要在举办二值化之前插部下面这行代码对原图举办恍惚化就可以了。

  1. img_gray = cv2.medianBlur(img_gray, 5) 

再来看看这次天生的素描图(下图),是不是看起来惬意多了,尚有一种手绘漫画的感受。

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

2)写实气魄威风凛凛

通过上面这种要领,固然最终也得到了一幅还算不错的素描图,可是看起来几多有些“失真”,为了获取看起来越发真实的素描图,我们实行其它一种要领。

这种要领的焦点头脑是通过“底片融合”的方法获取原图中一些较量重要的线条,详细实现步调如下:

第一步,跟上面的要领一样,行使opencv读取图片并天生灰度图。

第二步,对灰度图举办恍惚化操纵。颠末试验,行使上面提到的中值滤波函数cv2.medianBlur()举办恍惚化操纵最终获得的素描图结果并欠好,这里我们实行行使高斯滤波举办图片恍惚化,代码如下:

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

个中,参数ksize暗示高斯核的巨细,sigmaX和sigmaY别离暗示高斯核在 X 和 Y 偏向上的尺度差。

第三步,行使cv2.divide()要领对原图和恍惚图像举办融合,cv2.divide()本质长举办的是两幅图像素级此外除法操纵,其获得的功效可以简朴领略为两幅图之间有明明差此外部门。来看代码:

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

第四步,生涯天生的图片,代码跟上一个要领中一样,我们直接来看获取到的素描图结果。

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

从功效来看,这种要领得到的素描图线条越发精致,素描结果也更好。

2.批量获取小姐姐素描绘像

在这一部门,我们要实现批量获取小姐姐素描绘像的成果,基于上文中两种素描图结果比对,这里回收第二种要领来实现图片到素描图的转换。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读