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和shell变量互相传递的几种方法
Nov 20 Python
在Python的Django框架中创建语言文件
Jul 27 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 Python
pandas 对每一列数据进行标准化的方法
Jun 09 Python
浅谈PYTHON 关于文件的操作
Mar 19 Python
Django model update的多种用法介绍
Mar 28 Python
Python Django Vue 项目创建过程详解
Jul 29 Python
使用PyCharm进行远程开发和调试的实现
Nov 04 Python
python中如何打包用户自定义模块
Sep 23 Python
C++和python实现阿姆斯特朗数字查找实例代码
Dec 07 Python
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
May 17 Python
python基础学习之生成器与文件系统知识总结
May 25 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
mysql limit查询优化分析
2008/11/12 PHP
三个类概括PHP的五种设计模式
2012/09/05 PHP
php合并js请求的例子
2013/11/01 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
php 删除cookie方法详解
2014/12/01 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
PHP array_shift()用法实例分析
2019/01/07 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
JavaScript 乱码问题
2009/08/06 Javascript
extjs grid设置某列背景颜色和字体颜色的方法
2010/09/03 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
JavaScipt中栈的实现方法
2016/02/17 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
2016/06/03 Javascript
JavaScript实现自动切换图片代码
2016/10/11 Javascript
jQuery each和js forEach用法比较
2019/02/27 jQuery
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
[01:21]DOTA2周边文化主题展 神秘商店火热开售
2017/07/30 DOTA
Python爬取数据并写入MySQL数据库的实例
2018/06/21 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
Python API自动化框架总结
2019/11/12 Python
如何使用python代码操作git代码
2020/02/29 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
锐步美国官方网站:Reebok美国
2018/01/10 全球购物
毕业生自荐书
2014/02/02 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
爱我中华演讲稿
2014/05/20 职场文书
经营管理策划方案
2014/05/22 职场文书
公司催款律师函
2015/05/27 职场文书
Golang中异常处理机制详解
2021/06/08 Golang
python 远程执行命令的详细代码
2022/02/15 Python