python把图片转化为素描画_python如何将图片转换素描画 python将图片转换素描画代码示例...
python如何将图片转换素描画?本篇文章小编给大家分享一下python将图片转换素描画代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
代码如下
# -*- 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干货|新总结的4个python语言的特点,这几个细节值得关注...
[摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注py ...
- python的缩进规则是什么意思_Python编程思想(2):Python主要特性、命名规则与代码缩进...
目录 那么什么是动态语言呢? 那么什么是弱类型语言和强类型语言呢? Python命名规则 缩进原则 李宁老师的<Python编程思想>上线了,囊括了Python的核心技术,以及Python ...
- python数据表元素不为空值_python 填充空值失败_怎么用 Python 做数据分析实例
01 生成数据表 第一部分是生成数据表,常见的生成方法有两种,第一种是导入外部数据,第二种是直接写入数据. Excel 中的文件菜单中提供了获取外部数据的功能,支持数据库和文本文件和页面的多种数据源导 ...
- python好用的内置库_Python开发哪些库好?老男孩Python学习班
近年来,伴随着人工智能时代的到来,也促使Python编程语言发展,因此Python成为公认的人工智能编程语言.之所以Python受欢迎,得益于其内置大量的库,那么Python开发有哪些基本库呢?这六大 ...
- python秒数转化为时间格式_python将秒数转化为时间格式的实例
python将秒数转化为时间格式的实例 1.转化成时间格式 seconds =35400 m, s = divmod(seconds, 60) h, m = divmod(m, 60) print(& ...
- python将时间戳转化为时间格式_python时间戳转换日期格式的方法是什么
日期和时间的相互转换可以利用Python内置模块time和datetime完成,且有多种方法供我们选择,当然转换时我们可以直接利用当前时间或指定的字符串格式的时间格式. 获取当前时间转换 我们可以利用 ...
- python怎么读取csv的一部分数据_python批量读取csv文件 如何用python将csv文件中的数据读取成数组...
如何用python把多个csv文件数据处理后汇总到新csv文件你看这月光多温柔,小编转头还能看见你,一切从未坍塌. 可以用pandas读取数据,首先把文件方同一个文件价里,然后对当前文件价的所有内容循 ...
- python算闰年和平年的天数_Python自定义函数计算给定日期是该年第几天的方法示例...
本文实例讲述了Python自定义函数计算给定日期是该年第几天的方法.分享给大家供大家参考,具体如下: 写一个函数,计算给定日期是该年的第几天. 满足闰年的条件: 闰年是公历中的名词,能被4整除但不能被 ...
- python读取序列5之后的数据_Python核心编程读笔 5: python的序列
第六章 序列:字符串.列表.元组 一.序列 (1)序列类型操作符 seq[ind] 获得下标为 ind 的元素 seq[ind1:ind2] 切片操作 seq * expr 序列重复 expr 次 s ...
最新文章
- Swift:UIKit中Demo(一)
- ASA防火墙学习笔记1-基础篇
- php Pthread 多线程 (五) 线程同步
- java多语言标签如何动态刷新_WPF实现无刷新动态切换多语言(国际化)
- 如何设计一门语言(三)——什么是坑(面向对象和异常处理)
- linux收发十六进制工具,linux下的十六进制编辑器---wxHexEdit
- [Jarvis OJ - PWN]——[XMAN]level4
- 代码注释(图案:键盘)
- JS将各值拼接JSON串小例
- 新思路计算机一级百度云,新思路全国计算机一级考试选择题(含解析和答案)合并(1)...
- POJ3349 Snowflake Snow Snowflakes(hash)
- pktgen-dpdk 使用笔记
- VSEARCH:最简单易学的扩增子分析流程
- 认知升级是令我们变得优秀的重要基石,没有之一
- UiPath与按键精灵区别
- 8.房价预测基础线性回归
- fortran2010编译出错,无法找到exe文件的解决方法
- 牛客网 HJ42 学英语
- UWB高精度定位最优方式:全无线方式部署UWB定位系统
- 多功能数字钟c语言单片机PPT,基于STC89C52单片机的多功能数字钟的设计