python图片转换成素描和漫画格式的方法

  介绍

小编给大家分享一下python图片转换成素描和漫画格式的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

具体内容如下

原图

 python图片转换成素描和漫画格式的方法

图片转换后的成果

 python图片转换成素描和漫画格式的方法

源码

 # - * -编码:utf - 8 - *
  
  进口cv2
  
  从公益诉讼导入图像,ImageOps ImageFilter
  
  
  #转换成漫画风格
  def toCarttonStyle (picturePath):
  #设置输入输出路径和文件名称
  imgInput_FileName=picturePath
  imgOutput_FileName=picturePath.split (“!”) [0] + & # 39; _cartoon强生# 39;+ picturePath.split (“!”) [1]
  
  #属性设置
  num_down=2 #缩减像素采样的数目
  num_bilateral=7 #定义双边滤波的数目
  
  #读取图片
  img_rgb=cv2.imread (imgInput_FileName)
  
  #用高斯金字塔降低取样
  img_color=img_rgb
  在范围(num_down): _
  img_color=cv2.pyrDown (img_color)
  
  #重复使用小的双边滤波代替一个大的滤波
  在范围(num_bilateral): _
  img_color=cv2。bilateralFilter (img_color d=9, sigmaColor=9, sigmaSpace=7)
  
  #升采样图片到原始大小
  在范围(num_down): _
  img_color=cv2.pyrUp (img_color)
  
  #转换为灰度并且使其产生中等的模糊
  img_gray=cv2。cvtColor (img_rgb cv2.COLOR_RGB2GRAY)
  img_blur=cv2。medianBlur (img_gray, 7)
  
  #检测到边缘并且增强其效果
  img_edge=cv2。adaptiveThreshold (img_blur, 255,
  cv2.ADAPTIVE_THRESH_MEAN_C,
  cv2.THRESH_BINARY,
  blockSize=9,
  C=2)
  
  #算法处理后,照片的尺寸可能会不统一
  #把照片的尺寸统一化
  身高=img_rgb.shape [0]
  宽度=img_rgb.shape [1]
  img_color=cv2.resize (img_color(宽度、高度))
  
  #转换回彩色图像
  img_edge=cv2。cvtColor (img_edge cv2.COLOR_GRAY2RGB)
  img_cartoon=cv2。bitwise_and (img_color img_edge)
  
  #保存转换后的图片
  cv2。imwrite (imgOutput_FileName img_cartoon)
  打印(& # 39;文件转换成漫画成功,保存在& # 39;+ imgOutput_FileName)
  
  
  #透明度转换素描转换的一部分
  def道奇(a, b,α):
  #α为图片透明度
  返回最小(int (* 255/(256 - b *α)),255)
  
  
  #图片转换为素描
  def toSketchStyle(α=1.0)picturePath模糊=25日:
  #设置输入输出路径和文件名称
  imgInput_FileName=picturePath
  imgOutput_FileName=picturePath.split (“!”) [0] + & # 39; _Sketch强生# 39;+ picturePath.split (“!”) [1]
  
  #转化成ima对象
  img=Image.open (picturePath)
  #将文件转成灰色
  img1=img.convert (& # 39; l # 39;)
  
  img2=img1.copy ()
  
  img2=ImageOps.invert (img2)
  
  #模糊度
  因为我在范围(模糊):
  img2=img2.filter (ImageFilter.BLUR)
  宽度,高度=img1.size
  x的范围(宽度):
  y的范围(高度):
  一个=img1。获取像素((x, y))
  b=img2。获取像素((x, y))
  img1。putpixel (x, y)、道奇(a, b,α))
  
  #保存转换后文件
  img1.save (imgOutput_FileName)
  打印(& # 39;文件转换成漫画成功,保存在& # 39;+ imgOutput_FileName)
  
  
  if __name__==& # 39; __main__ # 39;:
  imgInput_FileName=输入(& # 39;输入文件路径:& # 39;)
  而真正的:
  打印(& # 39;1,漫画风格& # 39;)
  打印(& # 39;2、素描风格& # 39;)
  userChoose=输入(& # 39;请选择风格(输入序号即可):& # 39;)
  如果userChoose.__eq__ (& # 39; 1 & # 39;):
  toCarttonStyle (imgInput_FileName)
  打破
  elif userChoose.__eq__ (& # 39; 2 & # 39;):
  toSketchStyle (imgInput_FileName)
  打破
  其他:
  打印(& # 39;违法输入(请输入序号)& # 39;)
  打破

以上是python图片转换成素描和漫画格式的方法的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

python图片转换成素描和漫画格式的方法