吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 54830|回复: 670
收起左侧

[原创工具] 【python小工具】不给你的女朋友来张素描吗?使用python将图片转素描

    [复制链接]
逸少凌仙 发表于 2020-4-5 21:47
本工具使用python编写,将彩色图片转成黑白素描手绘图。
在python源码里可以调节其参数,尽量调到最好的效果。
使用颜色鲜艳的图片效果更佳!!参考文章:http://www.askaswiss.com/2016/01/how-to-create-pencil-sketch-opencv-python.html

将图片转为素描主要有4个步骤:
  • 首先将彩色图转换成灰度图;
  • 对灰度图进行求其反色的操作;
  • 对第2步得到的结果采用一个高斯模糊的操作;
  • 采用颜色亮化(color dodge)的技术将第一步的灰度图和第三步操作后的图片进行混合。


主要使用的是opencv模块。

原图:
dc22195c79a151849c9b527a715358de.jpg

素描图:
Sketch_dc22195c79a151849c9b527a715358de.jpg


原图:
3.jpg
素描图:
Sketch_3.jpg

原图:
1.jpg
素描图: Sketch_1.jpg

软件运行界面:
5d111f708bf17a724564364f5c8683a.png


源码:
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# -*- coding:utf-8 -*-
 
 
import cv2
import numpy as np
from tkinter import filedialog, Tk
from os import getcwd
from 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)


打包后exe蓝奏云下载地址:https://www.lanzouj.com/ib1434d

免费评分

参与人数 192吾爱币 +167 热心值 +157 收起 理由
linyinhuisb + 1 + 1 谢谢@Thanks!
jrtxnet + 1 + 1 我很赞同!
亿只鼠 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
s2339956 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
LAOFW2 + 1 谢谢@Thanks!
羋忻 + 1 用心讨论,共获提升!
fireant + 1 我很赞同!
parrain + 1 + 1 谢谢@Thanks!
飘零 + 1 谢谢@Thanks!
我是浮夸 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
byho + 1 + 1 热心回复!
non7749 + 1 + 1 谢谢@Thanks!
沉默vv羔羊 + 1 用心讨论,共获提升!
athenadd + 1 + 1 鼓励转贴优秀软件安全工具和文档!
xuxinliang + 1 + 1 楼主厉害了!!!
wang2645148 + 1 我很赞同!
naw + 1 谢谢@Thanks!
FireCloud + 1 + 1 谢谢@Thanks!
如北 + 1 热心回复!
yxh163 + 1 + 1 我很赞同!
zsy0022041 + 1 + 1 皮卡丘在干啥啊,不忍直视。。。。
wheaker + 1 谢谢@Thanks!
月下吴三桂 + 1 + 1 热心回复!
jiuli + 1 + 1 谢谢@Thanks!
坑久必神 + 1 谢谢@Thanks!
13729283069 + 1 + 1 谢谢@Thanks!
lucky323su + 1 + 1 谢谢@Thanks!
westcastle + 1 用心讨论,共获提升!
user1008611 + 1 谢谢@Thanks!
hank3386 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Drdon + 1 + 1 感谢分享,实用~
javazk + 1 + 1 谢谢@Thanks!
学者CC + 1 谢谢@Thanks!
智羽hx + 1 + 1 我很赞同!
aliaaaa + 1 谢谢@Thanks!
huoqhi0327 + 1 我很赞同!
埋里埋小埋 + 1 + 1 谢谢@Thanks!
三爷的道 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
li49660736 + 1 + 1 我很赞同!
yym122721 + 1 我很赞同!
小猪快跑z + 1 谢谢@Thanks!
wclgsh + 1 + 1 谢谢@Thanks!
梦无忧 + 1 我很赞同!
B1GYang + 1 我很赞同!
sharp1027 + 1 + 1 我很赞同!
逆向看世界 + 1 有趣,很nice
phonly + 1 谢谢@Thanks!
neslonK + 1 + 1 我很赞同!
马路天使 + 1 + 1 谢谢@Thanks!
haochaovip + 1 + 1 谢谢@Thanks!
天南地北一群魔 + 1 + 1 我很赞同!
letou123 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
柿饼得志 + 1 + 1 谢谢@Thanks!
A_Knight + 1 + 1 用心讨论,共获提升!
7860045 + 1 我很赞同!
zhangxu68 + 1 用心讨论,共获提升!
q10203433 + 1 + 1 感谢
liuxun0607 + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
Janci + 1 + 1 真厉害,这样可以很简单的素描画了
liuyanfox + 1 + 1 我很赞同!
guxinweb + 1 + 1 谢谢@Thanks!
huifeidezhu + 1 我很赞同!
hxsight + 1 我很赞同!
cristter + 1 我很赞同!
houwei10 + 1 用心讨论,共获提升!
llg1314 + 1 + 1 谢谢@Thanks!
别隆采 + 1 我很赞同!
胡吉吉 + 1 我很赞同!好贴,哄女朋友没问题
路人甲3122 + 1 谢谢@Thanks!
明年试试 + 1 用心讨论,共获提升!
cnmsh + 1 + 1 我很赞同!
angguandianzi + 1 + 1 我很赞同!
ahaneo + 1 + 1 谢谢@Thanks!
King舞风 + 1 + 1 谢谢@Thanks!吾爱因你而精彩
枫丶灬神 + 1 + 1 谢谢@Thanks!
prosky + 1 + 1 谢谢@Thanks!
十三只风 + 1 + 1 谢谢@Thanks!
fenit-2000 + 1 + 1 我很赞同!
Libra_nini + 1 + 1 热心回复!
houge54 + 1 + 1 热心回复!
xiaoj2002 + 1 + 1 谢谢@Thanks!
木小歌 + 1 我很赞同!
ww52pj + 1 + 1 谢谢@Thanks!
king669 + 1 + 1 谢谢@Thanks!
十斗男人 + 1 + 1 谢谢@Thanks!
墨和bol4 + 1 + 1 用心讨论,共获提升!
skyon + 1 谢谢@Thanks!
ljyy1112 + 1 谢谢@Thanks!
晓寒轻 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
pdc9911 + 1 + 1 谢谢@Thanks!
free21 + 1 + 1 谢谢@Thanks!
id3285 + 1 + 1 用心讨论,共获提升!
anhuiqiankun + 1 谢谢@Thanks!
yooray + 1 + 1 谢谢@Thanks!
m_CHq + 1 谢谢@Thanks!
幻化万千戏红尘 + 1 没有铝朋友肿么办,充气的可以吗
bkb169 + 1 谢谢@Thanks!
时光静迁oVo + 1 + 1 谢谢@Thanks!
独行风云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ligamd + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

17771425895 发表于 2020-4-5 22:59
程序员为了求偶甚是煞费心机
CZ77 发表于 2020-4-5 22:11
图片文件名也不能有中文才行
1.png

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
good-idea + 1 + 1 热心回复!

查看全部评分

头像被屏蔽
mokson 发表于 2020-4-5 22:07
A00 发表于 2020-4-5 21:50
很不错,谢谢分享,
lzzccc 发表于 2020-4-5 22:02
很有意思,谢谢分享
Binary1024 发表于 2020-4-5 22:07
已收藏,感谢分享
误读i 发表于 2020-4-5 22:07
感谢楼主分享
Tlszzz 发表于 2020-4-5 22:22
感谢分享,每天一个恋爱小妙招
zidaneshe 发表于 2020-4-5 22:27
有点意思,感谢lz分享
手别颤抖 发表于 2020-4-5 22:27
有用的知识又增加了,感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-4 07:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表