栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

[python ][opencv][图片卡通化]

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[python ][opencv][图片卡通化]

 

 

 

 按顺序:
              处理后的图片
               待处理图片
               源文件
下面是代码:

import os
import cv2

def cartoonise(picture_name,image_path):
    """图片处理部分"""
    cartoon_image_name = "cartoon_" + picture_name

    num_bilateral = 7    # 定义双边滤波的数目
    img_rgb = cv2.imread(image_path+picture_name)  # 读取图片 cv2.imread('文件路径')

    # 用高斯金字塔降低取样 (img_rgb还要再使用,所以使用变量复制一下)
    img_color = img_rgb

    # 重复使用小的双边滤波代替一个大的滤波
    for _ in range(num_bilateral):  # 双边滤波  ( _ 变量(
        img_color = cv2.bilateralFilter(img_color,d=9,sigmaColor=9,sigmaSpace=7)

    #转换为灰度并且使其产生中等的模糊
    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_edge = cv2.cvtColor(img_edge, cv2.COLOR_GRAY2RGB)
    img_cartoon = cv2.bitwise_and(img_color, img_edge)

    # 保存转换后的图片  cv2.imwrite(文件名称,文件)
    cv2.imwrite("cartoon_image/"+cartoon_image_name, img_cartoon)

def Batch_execution():
    """批量执行"""

    Original_image_names= os.listdir('image')
    print(f'一共有{len(Original_image_names)}张图片')
    for num in range(len(Original_image_names)):
        print(f'正在处理第{num+1}张图片:{Original_image_names[num].split(".")[0]}')
        cartoonise(Original_image_names[num],"image/") # (图片名,图片路径)
        print('处理完成')
        # print(num)


Batch_execution()

对比图

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/445156.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号