带来一款python图片转素描软件!顾名思义,它就是一款由python语音编写的小工具,可以很方便的将彩色图片转换成素描效果,特别适合那些不用PS滤镜的朋友们。欢迎有需要的前来西西下载体验!

工具简介
本工具使用python编写,将彩色图片转成黑白素描手绘图。
在python源码里可以调节其参数,尽量调到最好的效果。
使用颜色鲜艳的图片效果更佳!!
功能说明
将图片转为素描主要有4个步骤:
1、先将彩色图转换成灰度图;
2、灰度图进行求其反色的操作;
3、第2步得到的结果采用一个高斯模糊的操作;
4、用颜色亮化(color dodge)的技术将第一步的灰度图和第三步操作后的图片进行混合。
工具源码
# -*- 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)
相关新闻
Python从90年代便已出现,这不仅意味着它有足够的时间来发展,还意味着拥有一个庞大而强有力的社区支持。
所以你在用Python编程的时候,如果遇到了任何问题,只要网上搜索一下,大概率就能解决掉。
因为很有可能在你之前,就有人遇到过同样的问题,还在网上留下了宝贵的意见。
























大小: 2.13G

图片转换器V4.9 官方免费版
一寸二寸照片生成器免费版
照片大小批量处理工具(Photo Resize Magic)V1.1 西西绿色中文版
视频转GIF转换器(Video to GIF)V2.0.2 绿色单文件版
提取图片里的文字(miniocr)v1.0汉化版
Image2Lcd(图片转换LCD)V3.0 绿色免费版
PNG图片压缩工具(PNGGauntlet)3.1.2 绿色中文版
DWG转换PDF文档4.7.8 绿色免安装版
BMP转JPG批量转换器
solidworks标准件库
二寸照片生成器免费版
BMP转换ICO工具(IconMaster)v3.0 绿色版
Corel照片转绘画软件 (Corel Paint it)v1.0.0.127官方安装版含注册机
Alpha Image ConvertorV1.0简体中文版
Binerus Icon CommanderV1.40绿色英文特别版