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出现_warn_unsafe_extraction问题的方法
Mar 24 Python
python用Pygal如何生成漂亮的SVG图像详解
Feb 10 Python
Python优先队列实现方法示例
Sep 21 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
Pytorch实现LSTM和GRU示例
Jan 14 Python
Python3变量与基本数据类型用法实例分析
Feb 14 Python
使用python实现CGI环境搭建过程解析
Apr 28 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
Aug 03 Python
基于OpenCV的路面质量检测的实现
Nov 04 Python
Python import模块的缓存问题解决方案
Jun 02 Python
Django实现drf搜索过滤和排序过滤
Jun 21 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全局变量和类配合使用深刻理解
2013/06/05 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
2012/02/03 Javascript
js实现的切换面板实例代码
2013/06/17 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
js如何准确获取当前页面url网址信息
2020/09/13 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
Vue.js实战之组件的进阶
2017/04/04 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
[04:42]2015国际邀请赛CDEC战队晋级之路
2015/08/13 DOTA
Python struct.unpack
2008/09/06 Python
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
python+pyqt实现12306图片验证效果
2017/10/25 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
python实现决策树
2017/12/21 Python
python 字典套字典或列表的示例
2019/12/16 Python
python logging添加filter教程
2019/12/24 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
LN-CC日本:高端男装和女装的奢侈时尚目的地
2019/09/01 全球购物
美德少年事迹材料500字
2014/08/19 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
论文答谢词
2015/01/20 职场文书
热爱劳动主题班会
2015/08/14 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
Python机器学习之基于Pytorch实现猫狗分类
2021/06/08 Python