用python给女朋友画素描_【python小工具】不给你的女朋友来张素描吗?使用python将图片转素描...
本工具使用python编写,将彩色图片转成黑白素描手绘图。
在python源码里可以调节其参数,尽量调到最好的效果。
使用颜色鲜艳的图片效果更佳!!参考文章:http://www.askaswiss.com/2016/01/how-to-create-pencil-sketch-opencv-python.html
将图片转为素描主要有4个步骤:
首先将彩色图转换成灰度图;
对灰度图进行求其反色的操作;
对第2步得到的结果采用一个高斯模糊的操作;
采用颜色亮化(color dodge)的技术将第一步的灰度图和第三步操作后的图片进行混合。
主要使用的是opencv模块。
源码:# -*- coding:utf-8 -*- import cv2import numpy as npfrom tkinter import filedialog, Tkfrom os import getcwdfrom re import findall def open_path(): # 图片路径 root = Tk() root.withdraw() file_path = (filedialog.askopenfilename(title='选择图片文件', filetypes=[('All Files', '*')])) return file_path def dodgeNaive(image, mask): # determine the shape of the input image width, height = image.shape[:2] # prepare output argument with same size as image blend = np.zeros((width, height), np.uint8) for col in range(width): for row in range(height): # do for every pixel if mask[col, row] == 255: # avoid division by zero blend[col, row] = 255 else: # shift image pixel value by 8 bits # divide by the inverse of the mask tmp = (image[col, row] << 8) / (255 - mask) # print('tmp={}'.format(tmp.shape)) # make sure resulting value stays within bounds if tmp.any() > 255: tmp = 255 blend[col, row] = tmp return blend 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(src_image_name): print('转换中......') img_rgb = cv2.imread(src_image_name) img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY) # 读取图片时直接转换操作 # img_gray = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE) img_gray_inv = 255 - img_gray img_blur = cv2.GaussianBlur(img_gray_inv, ksize=(21, 21), sigmaX=0, sigmaY=0) img_blend = dodgeV2(img_gray, img_blur) # cv2.imshow('original', img_rgb) # cv2.imshow('gray', img_gray) # cv2.imshow('gray_inv', img_gray_inv) # cv2.imshow('gray_blur', img_blur) cv2.imwrite(dst_image_name, img_blend) save_path = getcwd() + "\\\\" + dst_image_name # 保存路径 print('转换完成!!!\\n') print('保存路径:' + save_path) cv2.imshow(save_path, img_blend) cv2.waitKey(0) cv2.destroyAllWindows() if __name__ == '__main__': print('请选择图片(路径不要含中文):') src_image_name = open_path() # 文件路径 print(src_image_name+'\\n') image_name = ''.join(findall(r'[^\\\\/:*?"<>|\\r\\n]+$', src_image_name)) # 获取文件名 dst_image_name = 'Sketch_' + image_name rgb_to_sketch(src_image_name)
下载权限查看 ¥
免费下载
评论后下载
登录后下载
{{attr.name}}:
您当前的等级为
您有每天免费下载所有资源次的特权,今日剩余次 已取得下载权限
No related posts.
用python给女朋友画素描_【python小工具】不给你的女朋友来张素描吗?使用python将图片转素描...相关推荐
- 视频教程-微信小程序系统教程python版[3/3阶段]_微信小程序支付-手游开发
微信小程序系统教程python版[3/3阶段]_微信小程序支付 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试 ...
- 使用python制作读取示波器波形的GUI小工具
使用python制作读取示波器波形的GUI小工具 1.使用python创建GUI界面,该界面可以读取CSV数据格式的示波器波形并绘制在GUI界面上 2.可以zoom缩放操作 3.源码见链接 https ...
- python动态图片转字符画_【小工具】使用python将图片转彩色字符画
[Python] 纯文本查看 复制代码# -*- coding:utf-8 -*- from PIL import Image, ImageFont, ImageDraw from tkinter i ...
- python用turtle画月亮_使用Python的turtle画小猪乔治和哆啦 A 梦
本人是Python新人小白,欢迎各位大佬指正,本文介绍的是用Python的turtle画一只小猪乔治. 还有本人画画基础超级差= =没天赋,画参考度娘上的一个图片画的. 先上总代码,然后说说我写的思路 ...
- python海龟绘图画海螺_我学会了画画100字
我学会了画画100字 时间:05-09 作者: 篇一:我学会了画画[100字] 杜昊航 今天下午上了美术课,美术课佷有意思,今天把我们上节课画的钟表.楼房.轮船.蘑菇都涂了颜色.我把送货物的轮船涂完了 ...
- python语言如何画圆_怎么用python画圆
详细内容 python中内置了许多第三方库,来帮助它完成各种功能. Turtle库就是Python语言中一个很流行的绘制图像的函数库(推荐学习:Python视频教程) Turtl库用于绘制线.圆.其他 ...
- python使用变量画圆_怎么用python画圆
python中内置了许多第三方库,来帮助它完成各种功能. Turtle库就是Python语言中一个很流行的绘制图像的函数库(推荐学习:Python视频教程) Turtl库用于绘制线.圆.其他形状或者文 ...
- python常用的表达式有关系表达式_数学关系式 表示成正确的 Python表达式为_________。_学小易找答案...
[单选题]下列选项中,不属于 Python特点的是_______. [判断题]在经济计量分析中,模型参数一旦被估计出来,就可直接运用于实际的计量经济分析. [多选题]计量经济模型的应用在于( ) [填 ...
- 十位数和个位数交换python_整型变量 x中存放了一个两位数,要将这个两位数的个位数字和十位数字交换位置,例如,13变成31,正确的Python表达式是________。_学小易找答案...
[多选题]计量经济学检验主要是检验模型是否符合计量经济方法的基本假定.检验内容包括( ) [填空题](_)是运用理论计量经济学提供的工具,研究经济学中某些特定领域的经济数量问题. [多选题]下列属于时 ...
- 以下可以采用python语言保留字的是-以下选项中,不是Python语言保留字的是_学小易找答案...
[单选题]以下选项中,不是 Python 语言保留字的是 [连线题]将动机理论及其解释说明连线: [单选题]以下选项中,不是Python语言合法命名的是 [单选题]在Python函数中,用于获取用户输 ...
最新文章
- CSS在ASP.NET中使用
- 【Android-功能】Android应用增量更新
- 《漫画算法2》源码整理-2 图算法
- 基于 Kafka + Flink + Redis 的电商大屏实时计算案
- Codeforces Round #515 (Div. 3)【未完结】
- TypeScript 参数属性
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1094:与7无关的数
- 微软服务器收费吗,了解 Azure 外部服务收费
- 介绍一个统计键盘和鼠标输入情况的工具软件
- hexo本地博客的转移
- linux文件移动到hdfs,解决从linux本地文件系统上传文件到HDFS时的权限问题
- Hibernate的表之间的关系
- 0018-大数据售前的中年危机
- 【图像处理】高斯模糊、高斯函数、高斯核、高斯卷积操作
- IGBT芯片赛道竞争激烈,水光半导体Wassersun推出全新IGBT制程技术
- 大学生 大创 软著申请指南(图文含模板)(专用于大创,这篇就够了!纯干货!)
- 产品经理必会知识:万字长文 | 史上最全的付费会员体系分析
- 虚拟机dns服务器不可以,windows虚拟机中DNS服务配置
- (个人解题思路系列)五子棋
- 从长尾市场切入 鲲云科技能做出一颗AI芯吗