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 相关文章推荐
Python闭包实现计数器的方法
May 05 Python
Python实现批量检测HTTP服务的状态
Oct 27 Python
Python中扩展包的安装方法详解
Jun 14 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
Mar 05 Python
Python unittest模块用法实例分析
May 25 Python
Python面向对象之反射/自省机制实例分析
Aug 24 Python
Python迷宫生成和迷宫破解算法实例
Dec 24 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
Apr 01 Python
什么是Python中的匿名函数
Jun 02 Python
对python pandas中 inplace 参数的理解
Jun 27 Python
python如何代码集体右移
Jul 20 Python
使用python求解迷宫问题的三种实现方法
Mar 17 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
php在程序中将网页生成word文档并提供下载的代码
2012/10/09 PHP
三种php连接access数据库方法
2013/11/11 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
如何写php守护进程(Daemon)
2015/12/30 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
使用jQuery同时控制四张图片的伸缩实现代码
2013/04/19 Javascript
js判断背景图片是否加载成功使用img的width实现
2013/05/29 Javascript
jQuery构造函数init参数分析
2015/05/13 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
JS实现碰撞检测效果
2020/03/12 Javascript
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
Python中类型检查的详细介绍
2017/02/13 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
python挖矿算力测试程序详解
2019/07/03 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
Linux面试题LINUX系统类
2015/11/25 面试题
自我鉴定范文
2013/11/10 职场文书
领导干部培训感言
2014/01/23 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
入党思想汇报怎么写
2014/04/03 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android