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线程锁(thread)学习示例
Dec 04 Python
python中使用OpenCV进行人脸检测的例子
Apr 18 Python
python 实现红包随机生成算法的简单实例
Jan 04 Python
Python复数属性和方法运算操作示例
Jul 21 Python
Python排序搜索基本算法之归并排序实例分析
Dec 08 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
pycharm的console输入实现换行的方法
Jan 16 Python
python实现猜数字游戏
Mar 25 Python
pymysql模块的操作实例
Dec 17 Python
通过实例学习Python Excel操作
Jan 06 Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 Python
解决TensorFlow程序无限制占用GPU的方法
Jun 30 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导出CSV抽象类实例
2014/09/24 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
php桥接模式应用案例分析
2019/10/23 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
javascript深入理解js闭包
2010/07/03 Javascript
Jquery截取中文字符串的实现代码
2010/12/22 Javascript
location对象的属性和方法应用(解析URL)
2013/04/12 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
JavaScript事件冒泡机制原理实例解析
2020/01/14 Javascript
浅谈Vue组件单元测试究竟测试什么
2020/02/05 Javascript
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
jupyter notebook读取/导出文件/图片实例
2020/04/16 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
农救科工作职责
2013/11/27 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
致三级跳运动员加油稿
2015/07/21 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android