卡通化]"/>
[python ][opencv][图片卡通化]
按顺序:
处理后的图片
待处理图片
源文件
下面是代码:
import os
import cv2def cartoonise(picture_name,image_path):"""图片处理部分"""cartoon_image_name = "cartoon_" + picture_namenum_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()
对比图
更多推荐
[python ][opencv][图片卡通化]
发布评论