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 相关文章推荐
pygame学习笔记(2):画点的三种方法和动画实例
Apr 15 Python
Python获取运行目录与当前脚本目录的方法
Jun 01 Python
一篇文章入门Python生态系统(Python新手入门指导)
Dec 11 Python
Python操作Excel之xlsx文件
Mar 24 Python
Tornado高并发处理方法实例代码
Jan 15 Python
Python设计模式之备忘录模式原理与用法详解
Jan 15 Python
Python实现图片转字符画的代码实例
Feb 22 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 Python
python脚本调用iftop 统计业务应用流量的思路详解
Oct 11 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
Sep 29 Python
粗暴解决CUDA out of memory的问题
May 22 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
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
php实现将base64格式图片保存在指定目录的方法
2016/10/13 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
2018/06/11 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
基于JS+Canves实现点击按钮水波纹效果
2016/09/15 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
利用jQuery实现一个简单的表格上下翻页效果
2017/03/14 Javascript
详解nodeJS之二进制buffer对象
2017/06/03 NodeJs
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
Vue自定义指令结合阿里云OSS优化图片的实现方法
2019/11/12 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
详解Typescript里的This的使用方法
2021/01/08 Javascript
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
Python中关于使用模块的基础知识
2015/05/24 Python
python实现红包裂变算法
2016/02/16 Python
Python使用email模块对邮件进行编码和解码的实例教程
2016/07/01 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
python+pyqt5实现图片批量缩放工具
2019/03/18 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
2019/04/30 Python
Python threading的使用方法解析
2019/08/28 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
基于python实现把图片转换成素描
2019/11/13 Python
详谈tensorflow gfile文件的用法
2020/02/05 Python
python 穷举指定长度的密码例子
2020/04/02 Python
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
营业经理岗位职责
2013/11/10 职场文书
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
部队2015年终工作总结
2015/04/02 职场文书
七年级作文之游记
2019/12/11 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android