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实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 Python
python3实现UDP协议的服务器和客户端
Jun 14 Python
对python-3-print重定向输出的几种方法总结
May 11 Python
详解用python计算阶乘的几种方法
Aug 14 Python
Python实现钉钉订阅消息功能
Jan 14 Python
python实现连连看游戏
Feb 14 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
Mar 09 Python
Python3基于print打印带颜色字符串
Jul 06 Python
Python爬取某拍短视频
Jun 11 Python
Python+OpenCV实现在图像上绘制矩形
Mar 21 Python
Python数据处理的三个实用技巧分享
Apr 01 Python
python库Tsmoothie模块数据平滑化异常点抓取
Jun 10 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中检查文件或目录是否存在的代码小结
2012/10/22 PHP
Yii Framework框架获取分类下面的所有子类方法
2014/06/20 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
php 解决扫描二维码下载跳转问题
2017/01/13 PHP
一段利用WSH获取登录时间的jscript代码
2008/05/11 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
JS画线(实例代码)
2013/11/20 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
JQuery工具函数汇总
2015/06/15 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
浅谈React深度编程之受控组件与非受控组件
2017/12/26 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
JS实现字符串翻转的方法分析
2018/08/31 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
佳能法国商店:Canon法国
2019/02/14 全球购物
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
小学生操行评语
2014/04/22 职场文书
创文明城市标语
2014/06/16 职场文书
搞笑的获奖感言
2014/08/16 职场文书
房产公证书
2015/01/23 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
Python爬虫基础讲解之请求
2021/05/13 Python
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis