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下的Mysql模块MySQLdb安装详解
Apr 09 Python
Python单例模式的两种实现方法
Aug 14 Python
Python基础教程之异常详解
Jan 10 Python
Python设计模式之解释器模式原理与用法实例分析
Jan 10 Python
Python3实现的简单三级菜单功能示例
Mar 12 Python
使用Python进行中文繁简转换的实现代码
Oct 18 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
Mar 04 Python
Django ValuesQuerySet转json方式
Mar 16 Python
django rest framework serializers序列化实例
May 13 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
May 17 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
python+opencv实现目标跟踪过程
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继承的一个应用
2011/09/06 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
2014/09/10 PHP
Yii2实现log输出到file及database的方法
2016/11/12 PHP
PHP设计模式之单例模式定义与用法分析
2019/03/26 PHP
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
nodeJs内存泄漏问题详解
2016/09/05 NodeJs
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
重新认识vue之事件阻止冒泡的实现
2018/08/02 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
jQuery实现的隔行变色功能【案例】
2019/02/18 jQuery
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
Python中多线程thread与threading的实现方法
2014/08/18 Python
使用Python的内建模块collections的教程
2015/04/28 Python
浅析Python的Django框架中的Memcached
2015/07/23 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
如何在python中实现随机选择
2019/11/02 Python
详解python datetime模块
2020/08/17 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
给幼儿园老师的表扬信
2014/01/19 职场文书
励志演讲稿范文
2014/04/29 职场文书
高中运动会广播稿
2014/09/16 职场文书
车辆年审委托书范本
2014/09/18 职场文书
2014年保卫科工作总结
2014/12/05 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
2015秋季小学开学寄语
2015/05/27 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书