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+matplotlib+numpy实现在不同平面的二维条形图
Jan 02 Python
Python从零开始创建区块链
Mar 06 Python
python list格式数据excel导出方法
Oct 31 Python
详解django中url路由配置及渲染方式
Feb 25 Python
Python交互式图形编程的实现
Jul 25 Python
python如何将多个PDF进行合并
Aug 13 Python
python suds访问webservice服务实现
Jun 26 Python
python selenium xpath定位操作
Sep 01 Python
Django修改app名称和数据表迁移方案实现
Sep 17 Python
浅析python函数式编程
Sep 26 Python
浅析pandas随机排列与随机抽样
Jan 22 Python
基于PyQT5制作一个桌面摸鱼工具
Feb 15 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 启动时报错的简单解决方法
2014/01/27 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
ucenter中词语过滤原理分析
2016/07/13 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
laravel 如何实现引入自己的函数或类库
2019/10/15 PHP
JS的千分位算法实现思路
2013/07/31 Javascript
Angular2 组件间通过@Input @Output通讯示例
2017/08/24 Javascript
angular内置provider之$compileProvider详解
2017/09/27 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
Vue.js简易安装和快速入门(第二课)
2017/10/17 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
Vue.directive()的用法和实例详解
2018/03/04 Javascript
微信小程序获取用户信息并保存登录状态详解
2019/05/10 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
python中对list去重的多种方法
2014/09/18 Python
Python中type的构造函数参数含义说明
2015/06/21 Python
python实现键盘控制鼠标移动
2020/11/27 Python
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
Skyscanner英国:苏格兰的全球三大领先航班搜索服务之一
2017/11/09 全球购物
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
Vision Direct比利时:在线订购隐形眼镜
2019/08/27 全球购物
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
校运会入场式解说词
2014/02/10 职场文书
应届毕业生求职信范文
2014/05/08 职场文书
车间主任岗位职责
2015/02/03 职场文书
2015国际残疾人日活动总结
2015/03/24 职场文书
张丽莉观后感
2015/06/16 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript