代码如下

# -*- 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如何将图片转换素描画的详细内容,更多关于python图片转换素描画的资料请关注python博客其它相关文章!

python怎么画正方体素描_python如何将图片转换素描画相关推荐

  1. python 人像素描_python如何将图片转换素描画

    代码如下 # -*- coding:utf-8 -*- import cv2 import numpy as np from tkinter import filedialog, Tk from os ...

  2. python照片转素描_python如何将图片转换素描画

    代码如下 # -*- coding:utf-8 -*- import cv2 import numpy as np from tkinter import filedialog, Tk from os ...

  3. python把图片转化为素描画_python如何将图片转换素描画 python将图片转换素描画代码示例...

    python如何将图片转换素描画?本篇文章小编给大家分享一下python将图片转换素描画代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 代码如 ...

  4. python画素描画_python如何将图片转换素描画

    代码如下 # -*- coding:utf-8 -*- import cv2 import numpy as np from tkinter import filedialog, Tk from os ...

  5. python素描画_python如何将图片转换素描画

    代码如下 # -*- coding:utf-8 -*- import cv2 import numpy as np from tkinter import filedialog, Tk from os ...

  6. 用python给帅哥靓女们来张素描特写,图片转素描画

    本工具主要是将彩色图片转换成黑白素描样式图片,给大家好玩下 源码参考了https://www.52pojie.cn/thread-1149417-1-1.html,在此基础上对中文输入路径和输出中文乱 ...

  7. python修改文件格式为jpg_python将.ppm格式图片转换成.jpg格式文件的方法

    python将.ppm格式图片转换成.jpg格式文件的方法 将.ppm格式的图片转换成.jpg格式的图像,除了通过软件转换,还可以使用python脚本直接转换,so easy!!! from PIL ...

  8. python matplotlib画数据分布图_Python数据可视化之matplotlib

    数据可视化能让人们更直观的传递数据所要表达的信息.Python 中有两个专用于可视化的库,matplotlib 和 seaborn ,本文将介绍matplotlib. Matplotlib:基于Pyt ...

  9. python如何画出多个独立的图片_python实现在一个画布上画多个子图

    matplotlib 是可以组合许多的小图, 放在一张大图里面显示的. 使用到的方法叫作 subplot. 均匀画图 使用import导入matplotlib.pyplot模块, 并简写成plt. 使 ...

最新文章

  1. Guava学习笔记:Preconditions优雅的检验参数
  2. 给Source Insight做个外挂系列之二--将本地代码注入到Source Insight进程
  3. 1.IT-解决方案-1-FTP
  4. 新功能抢先看!Windows 11 2022 版全新 ISO 镜像来了+下载
  5. CSS之Responsive设计的关键三步
  6. Java中锁的使用和实现
  7. 数据结构链表例程_如何掌握RxJava例程的四个结构
  8. 编程输出2的90次方的精确值
  9. SSH中设置字符编码防止乱码
  10. python登录交换机执行命令_如何用Python脚本登录到交换机上修改配置?
  11. 剑指offer:序列化二叉(前序遍历+层次)
  12. antd 选择文件夹_antd 手动上传文件
  13. 重磅消息!三星、联想和微软的设备将会搭载Android 12L
  14. 简述事件接口与事件适配器的联系与区别_通过Redis学习事件驱动设计
  15. 代码也浪漫——Python烟花秀
  16. WSL2之gdb通过qemu调试ARM汇编(五)
  17. js中this的用法
  18. SIM800系列模块GSM/GPRS建立TCP连接到远端服务器过程——新浪博客迁移
  19. ArcGis如何创建/连接企业级地理数据库
  20. 钉钉和mis系统对接调研

热门文章

  1. linux双网卡 ipv4 ipv6 双栈,linux ipv4 ipv6双栈 (优先ipv4而不使用ipv6配置)
  2. Mac操作系统入手--新手教学
  3. python 自动化框架打包_python+requests接口自动化框架
  4. switch+ 三元运算符 +while +do while +for
  5. 英语的重要性对于程序员来说
  6. 80后新手装修完全攻略(转载)
  7. Paper Reading:3DIoUMatch:Leveraging IoU Prediction for Semi-Supervised 3D Object Detection
  8. java POI导出excel画斜线
  9. 罗技K375s如何切换通道
  10. 十年前你绝对没有看懂的《大话西游》