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图片转换素描画的资料请关注我们其它相关文章!

(0)

相关推荐

  • python实现图片转换成素描和漫画格式

    本文实例为大家分享了python实现图片转换成素描和漫画格式的具体代码,供大家参考,具体内容如下 原图 图片转换后的成果 源码 # -*- coding: utf-8 -*- import cv2 from PIL import Image, ImageOps, ImageFilter # 转换成漫画风格 def toCarttonStyle(picturePath): # 设置输入输出路径和文件名称 imgInput_FileName = picturePath imgOutput_FileN

  • 使用Python opencv实现视频与图片的相互转换

    因为最近要经常转换数据集进行实验,因此记录一下. 1.视频转图片 即为将视频解析为一帧一帧的图片: import cv2 vc=cv2.VideoCapture("/home/hqd/PycharmProjects/1/1/19.MOV") c=1 if vc.isOpened(): rval,frame=vc.read() else: rval=False while rval: rval,frame=vc.read() cv2.imwrite('/home/hqd/PycharmP

  • python实现图片彩色转化为素描

    本文实例为大家分享了Python将图片彩色转化为素描的具体代码,供大家参考,具体内容如下 第一种: from PIL import Image, ImageFilter, ImageOps img = Image.open('E:\\picture\\1.png') def dodge(a, b, alpha): return min(int(a*255/(256-b*alpha)), 255) def draw(img, blur=25, alpha=1.0): img1 = img.conv

  • Python实现转换图片背景颜色代码

    在使用图片的时候有时候我们希望改变背景颜色,这样就只关注于图片本身.比如在连连看中就只有图片,而没有背景,其实我个人感觉有背景好看一点. 两种方法,思路一致: 法一: import cv2 # 修改透明背景为白色 def transparence2white(img): sp=img.shape # 获取图片维度 width=sp[0] # 宽度 height=sp[1] # 高度 for yh in range(height): for xw in range(width): color_d=

  • Python图片转换成矩阵,矩阵数据转换成图片的实例

    如下所示: # coding=gbk from PIL import Image import numpy as np # import scipy def loadImage(): # 读取图片 im = Image.open("lena.jpg") # 显示图片 im.show() im = im.convert("L") data = im.getdata() data = np.matrix(data) # print data # 变换成512*512 d

  • python实现批量转换图片为黑白

    本文实例为大家分享了python批量转换图片为黑白的具体代码,供大家参考,具体内容如下 用到的库:OpenCV.os import cv2 import os def re_name(path): files = os.listdir(path) for i, file in enumerate(files): try: new_file_name = os.path.join(path, str(i) + '.jpg') old_file_name = os.path.join(path, f

  • Python使用到第三方库PyMuPDF图片与pdf相互转换

    使用 Python 进行图片和pdf之间的相互转换 使用到第三方库 PyMuPDF 在 python 环境下对 PDF 文件的操作. PDF 转为图片 需新建文件夹 pdf2png import fitz import glob def rightinput(desc): flag=True while(flag): instr = input(desc) try: intnum = eval(instr) if type(intnum)==int: flag = False except: p

  • 利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法

    由于跑编码的需要,所以需要制作一个.yuv格式的图片数据集,但是手头只有.jpg格式的,故记录下转换过程.其他图片格式也可以,代码里修改一下就行. ①安装ffmpeg 官网(各种版本):ffmepg官网 window版:https://ffmpeg.zeranoe.com/builds/ ②安装ffmpeg的python3接口ffmpy3 在命令行中输入以下命令: pip install ffmpy3 ③将下载好的windows版解压,把ffmpeg.exe复制到你将要跑python代码的文件夹

  • python3用PIL把图片转换为RGB图片的实例

    感想 我们在做深度学习处理图片的时候,如果是自己制作或者收集的数据集,不可避免的要对数据集进行处理,然后大多数模型都只支持RGB格式的图片,这个时候,我们需要把其他格式的图片,例如灰度图像转换为RGB的图片,网上只有灰度图像转换为RGB的教程,我这里弥补一下空缺. from PIL import Image import numpy as np L_path='train/5509031.jpg' L_image=Image.open(L_path) out = L_image.convert(

  • 基于python实现把图片转换成素描

    这篇文章主要介绍了基于python实现把图片转换成素描,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 导语: 你是否还在为当时年少时没有选择自己的梦想而伤心,是否还在为自己的无法成为绘画名家而苦恼,这一切都不需要担心.python都能帮你实现,诶!python怎么能画画呢,一些简单的图案没问题,但是我要是想画素描那肯定没有办法了呀! 需求分析: 通过python代码脚本,实现绘制素描 安装工具 pip install pillow pip in

随机推荐