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超简单解决约瑟夫环问题
May 12 Python
使用Python的Bottle框架写一个简单的服务接口的示例
Aug 25 Python
python动态网页批量爬取
Feb 14 Python
python 与GO中操作slice,list的方式实例代码
Mar 20 Python
python中的break、continue、exit()、pass全面解析
Aug 05 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
Sep 24 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
Feb 17 Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 Python
Python:Numpy 求平均向量的实例
Jun 29 Python
python常见字符串处理函数与用法汇总
Oct 30 Python
基于django 的orm中非主键自增的实现方式
May 18 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
Aug 04 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中常用数组处理方法实例分析
2008/08/30 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
使用JQUERY Tabs插件宿主IFRAMES
2010/01/01 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
javascript学习之json入门
2016/12/22 Javascript
bootstrap table实例详解
2017/01/06 Javascript
jquery实现回车键触发事件(实例讲解)
2017/11/21 jQuery
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
用js编写留言板
2020/03/17 Javascript
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
python实现的DES加密算法和3DES加密算法实例
2015/06/03 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
2019/10/12 Python
python3 自动打印出最新版本执行的mysql2redis实例
2020/04/09 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
2020/05/23 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
使用python实现学生信息管理系统
2021/02/25 Python
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
可口可乐唇膏:Lip Smackers
2019/08/27 全球购物
财务会计专业推荐信
2013/11/30 职场文书
公司司机岗位职责范本
2014/03/03 职场文书
社保委托书怎么写
2014/08/02 职场文书
医院病假条范文
2015/08/17 职场文书