Python使用OpenCV-Python批量为照片应用卡通动漫滤镜

部署运行你感兴趣的模型镜像

源码地址:

使用OpenCV-Python批量为照片应用卡通动漫滤镜资源-CSDN文库

这段代码实现了一个图片处理功能,将指定文件夹中的图片转换为卡通动漫风格,并保存到另一个文件夹中。以下是代码的详细解析和功能说明:

1. 功能概述

  • 读取图片:从指定路径读取图片。

  • 应用卡通动漫滤镜:通过一系列图像处理步骤,将图片转换为卡通动漫风格。

  • 保存结果:将处理后的图片保存到指定路径。

2. 代码详细解析

导入模块
import cv2
import os
import numpy as np
  • cv2:OpenCV库,用于图像处理。

  • os:操作系统模块,用于文件路径操作。

  • numpy:数值计算库,用于数组操作。

定义滤镜函数
def filter(filein, picture_name):
    imgI_filename = os.path.join(filein, picture_name)  # 源文件路径
    imgO_filename = os.path.join(r'out', picture_name)  # 目标文件路径
    img_rgb = cv2.imread(imgI_filename)  # 读取图片
  • 定义一个函数filter,用于处理单张图片。

  • 使用os.path.join构造源文件和目标文件的路径。

  • 使用cv2.imread读取图片。

图像处理步骤
# 转换为灰度并且使其产生中等的模糊
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2GRAY)
img_blur = cv2.medianBlur(img_gray, 5)  # 值越大越模糊(取奇数)
  • 将图片转换为灰度图。

  • 使用中值滤波对灰度图进行模糊处理,减少噪点。

边缘检测
# 检测到边缘并且增强其效果
img_edge = cv2.adaptiveThreshold(img_blur, 128,
                                 cv2.ADAPTIVE_THRESH_MEAN_C,
                                 cv2.THRESH_BINARY,
                                 blockSize=9,
                                 C=8)
img_edge = cv2.cvtColor(img_edge, cv2.COLOR_GRAY2RGB)  # 彩色图像转为灰度图像
  • 使用自适应阈值算法进行边缘检测,增强边缘效果。

  • 将边缘检测后的灰度图转换为RGB格式,以便与原图合成。

合成卡通效果
img_cartoon = cv2.bitwise_and(img_rgb, img_edge)  # 灰度图像转为彩色图像
  • 使用位运算cv2.bitwise_and将原图与边缘检测后的图像合成,生成卡通效果。

调整亮度和对比度
# 调整亮度和对比度
res = np.uint8(np.clip((2.0 * img_cartoon + 16), 0, 255))
  • 使用np.clipnp.uint8调整亮度和对比度,增强图片的视觉效果。

保存结果
# 保存转换后的图片
cv2.imwrite(imgO_filename, res)
  • 使用cv2.imwrite将处理后的图片保存到目标路径。

主程序
if __name__ == '__main__':
    imagelist = []  # 创建空列表
    for filename in os.listdir(r'in/'):
        imagelist.append(filename)  # 将文件名添加到imagelist
        print(filename)
        filter(r'in', filename)  # 为图片应用卡通动漫滤镜
  • 遍历指定文件夹in/中的所有文件。

  • 对每个文件调用filter函数,应用卡通动漫滤镜并保存结果。

3. 运行效果

  • 程序启动时,读取指定文件夹in/中的所有图片。

  • 对每张图片应用卡通动漫滤镜,处理后的图片保存到out/文件夹中。

  • 处理后的图片具有卡通动漫风格,边缘清晰,颜色平滑。

4. 注意点

  • 文件路径:确保in/文件夹存在且包含图片,out/文件夹也存在。

  • 文件格式:确保处理的图片格式支持(如PNG、JPEG等)。

  • OpenCV安装:确保已正确安装OpenCV库。

  • 性能问题:图像处理可能需要一定时间,特别是对于高分辨率图片。

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值