Python 图片转漫画风格笔记

1.Python 图片转漫画风格笔记

个人笔记

2.代码实现

import cv2 as cv
import numpy as np
def read_file(filename):
    img = cv.imread(filename)
    cv.imshow('origin',img)
    return img
def edge_mask(img, line_size, blur_value):
    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    gray_blur = cv.medianBlur(gray, blur_value)
    edges = cv.adaptiveThreshold(gray_blur, 255, cv.ADAPTIVE_THRESH_MEAN_C, cv.THRESH_BINARY, line_size, blur_value)
    return edges
def color_quantization(img, k):
    data = np.float32(img).reshape((-1, 3))
    criteria = (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER, 20, 0.001)
    ret, label, center = cv.kmeans(data, k, None, criteria, 10, cv.KMEANS_RANDOM_CENTERS)
    center = np.uint8(center)
    result = center[label.flatten()]
    result = result.reshape(img.shape)
    return result

line_size = 7
blur_value = 7
img = read_file("d:\\img\\img4.jpg")
total_color = 9
img1 = color_quantization(img, total_color)
#边缘掩膜
edges = edge_mask(img, line_size, blur_value)
blurred = cv.bilateralFilter(img1, d=7, sigmaColor=200,sigmaSpace=200)
#边缘掩膜与经过颜色处理的图像结合起来
cartoon = cv.bitwise_and(blurred, blurred, mask=edges)
# cv.imshow('o',edges)
# cv.imshow('o1',img1)
cv.imshow('cartoon',cartoon)
#我们在cv.imwrite()的第三个参数中设置了JPEG的编码方式保存图片,并设置了0值,此值在JPEG格式中取值范围是0-100,数值越高,保存的质量就越高。
cv.imwrite('d:\\img\\img4_cartoon.jpg', cartoon, [cv.IMWRITE_JPEG_QUALITY, 50])
cv.waitKey(0)
cv.destroyAllWindows()

3.最后效果图

原图

 漫画

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值