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中优化NumPy包使用性能的教程
Apr 23 Python
Python简单调用MySQL存储过程并获得返回值的方法
Jul 20 Python
Python脚本处理空格的方法
Aug 08 Python
python2.7 mayavi 安装图文教程(推荐)
Jun 22 Python
用tensorflow搭建CNN的方法
Mar 05 Python
python版本的仿windows计划任务工具
Apr 30 Python
Python2.7环境Flask框架安装简明教程【已测试】
Jul 13 Python
Python中文编码知识点
Feb 18 Python
Python发展史及网络爬虫
Jun 19 Python
python实现差分隐私Laplace机制详解
Nov 25 Python
Python pip安装模块提示错误解决方案
May 22 Python
Python unittest如何生成HTMLTestRunner模块
Sep 08 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 json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
php工具型代码之印章抠图
2018/07/18 PHP
JavaScript 动态将数字金额转化为中文大写金额
2009/05/14 Javascript
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
2017/10/31 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
新手快速入门微信小程序组件库 iView Weapp
2019/06/24 Javascript
js 实现ajax发送步骤过程详解
2019/07/25 Javascript
react的hooks的用法详解
2020/10/12 Javascript
python中的多线程实例教程
2014/08/27 Python
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
Python中的pygal安装和绘制直方图代码分享
2017/12/08 Python
python使用matplotlib绘制热图
2018/11/07 Python
python文档字符串(函数使用说明)使用详解
2019/07/30 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
Django-simple-captcha验证码包使用方法详解
2020/11/28 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
会计专业推荐信
2013/10/29 职场文书
电话销售经理岗位职责
2013/12/07 职场文书
银行党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
捐资助学感谢信
2015/01/21 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
学习心理学心得体会
2016/01/22 职场文书
Python Django模型详解
2021/10/05 Python