python如何将图片转换素描画


Posted in Python onSeptember 08, 2020

代码如下

# -*- 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 相关文章推荐
简单介绍利用TK在Python下进行GUI编程的教程
Apr 13 Python
python计算牛顿迭代多项式实例分析
May 07 Python
Django实现自定义404,500页面教程
Mar 26 Python
详解Python3的TFTP文件传输
Jun 26 Python
python实现三次样条插值
Dec 17 Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 Python
python实现电子产品商店
Feb 26 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
Apr 20 Python
PyTorch如何搭建一个简单的网络
Aug 24 Python
使用anaconda安装pytorch的实现步骤
Sep 03 Python
python+selenium实现12306模拟登录的步骤
Jan 21 Python
手残删除python之后的补救方法
Jun 26 Python
Python自动化之UnitTest框架实战记录
Sep 08 #Python
Python Opencv实现单目标检测的示例代码
Sep 08 #Python
python获取本周、上周、本月、上月及本季的时间代码实例
Sep 08 #Python
Python 使用Opencv实现目标检测与识别的示例代码
Sep 08 #Python
Python requests接口测试实现代码
Sep 08 #Python
Python unittest装饰器实现原理及代码
Sep 08 #Python
Python selenium环境搭建实现过程解析
Sep 08 #Python
You might like
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
jquery实现图片预加载
2015/12/25 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
2016/09/02 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
js判断出两个字符串最大子串的函数实现方法
2016/11/01 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
Vue.directive()的用法和实例详解
2018/03/04 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
python进阶之多线程对同一个全局变量的处理方法
2018/11/09 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
Python tkinter界面实现历史天气查询的示例代码
2020/08/23 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
Skyscanner波兰:廉价航班
2017/11/07 全球购物
荷兰鞋类购物网站:Donelli
2019/05/24 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
请解释在new与override的区别
2012/10/29 面试题
办公室前台的岗位职责
2013/12/20 职场文书
视光学毕业生自荐书范文
2014/02/13 职场文书
房屋公证委托书
2014/04/03 职场文书
表扬信格式模板
2015/05/05 职场文书
预备党员群众意见
2015/06/01 职场文书
分享python函数常见关键字
2022/04/26 Python
Win11 Dev 预览版25174.1000发布 (附更新修复内容汇总)
2022/08/05 数码科技