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创建一个最简单http webserver服务器的方法
May 08 Python
Python os模块学习笔记
Jun 21 Python
Python实现批量检测HTTP服务的状态
Oct 27 Python
华为2019校招笔试题之处理字符串(python版)
Jun 25 Python
Django之创建引擎索引报错及解决详解
Jul 17 Python
查看Python依赖包及其版本号信息的方法
Aug 13 Python
Django接收照片储存文件的实例代码
Mar 07 Python
使用matlab 判断两个矩阵是否相等的实例
May 11 Python
详解java调用python的几种用法(看这篇就够了)
Dec 10 Python
python爬取代理ip的示例
Dec 18 Python
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
May 22 Python
判断Python中的Nonetype类型
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
DISCUZ 论坛管理员密码忘记的解决方法
2009/05/14 PHP
PHP会话控制:Session与Cookie详解
2014/09/27 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
input 输入框内的输入事件详细分析
2010/03/17 Javascript
php 中序列化和json使用介绍
2013/07/08 Javascript
JQuery each打印JS对象的方法
2013/11/13 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
Javascript实现禁止输入中文或英文的例子
2014/12/09 Javascript
node.js中的fs.open方法使用说明
2014/12/17 Javascript
jQuery mobile 移动web(6)
2015/12/20 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
Python合并字典键值并去除重复元素的实例
2016/12/18 Python
python使用super()出现错误解决办法
2017/08/14 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
python groupby 函数 as_index详解
2019/12/16 Python
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
C#软件工程师英语面试题
2015/06/07 面试题
运动会广播稿20字
2014/02/18 职场文书
应届毕业生应聘自荐信范文
2014/02/26 职场文书
大学毕业感言200字
2014/03/09 职场文书
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
干部外出学习心得体会
2016/01/18 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
导游词之青岛太清宫
2019/12/13 职场文书
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫