可以将视频每一帧当做图片进行漫画处理,具体的图片转漫画的python代码如下:
# -*- coding: utf-8 -*-
import cv2
from PIL import Image, ImageOps, ImageFilter
# 转换成漫画风格
def toCarttonStyle(picturePath,outpath):
# 设置输入输出路径和文件名称
imgInput_FileName = picturePath
imgOutput_FileName = picturePath.split(".")[0] + '_cartoon.' + picturePath.split(".")[1]
# 属性设置
num_down = 2 # 缩减像素采样的数目
num_bilateral =7 # 定义双边滤波的数目
# 读取图片
img_rgb = cv2.imread(imgInput_FileName)
# 用高斯金字塔降低取样
img_color = img_rgb
for _ in range(num_down):
img_color = cv2.pyrDown(img_color)
# 重复使用小的双边滤波代替一个大的滤波
for _ in range(num_bilateral):
img_color = cv2.bilateralFilter(img_color, d=9, sigmaColor=0.1, sigmaSpace=0.01)
# 升采样图片到原始大小
for _ in range(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)
# 算法处理后,照片的尺寸可能会不统一
# 把照片的尺寸统一化
height=img_rgb.shape[0]
width = img_rgb.shape[1]
img_color=cv2.resize(img_color,(width,height))
# 转换回彩色图像
img_edge = cv2.cvtColor(img_edge, cv2.COLOR_GRAY2RGB)
img_cartoon = cv2.bitwise_and(img_color, img_edge)
# 保存转换后的图片
cv2.imwrite(outpath, img_cartoon)
# 透明度转换 素描转换的一部分
def dodge(a, b, alpha):
# alpha为图片透明度
return min(int(a * 255 / (256 - b * alpha)), 255)
# 图片转换为素描
def toSketchStyle(picturePath, outpath,blur=25, alpha=1.0):
# 设置输入输出路径和文件名称
imgInput_FileName = picturePath
imgOutput_FileName = picturePath.split(".")[0] + '_Sketch.' + picturePath.split(".")[1]
# 转化成ima对象
img = Image.open(picturePath)
# 将文件转成灰色
img1 = img.convert('L')
img2 = img1.copy()
img2 = ImageOps.invert(img2)
# 模糊度
for i in range(blur):
img2 = img2.filter(ImageFilter.BLUR)
width, height = img1.size
for x in range(width):
for y in range(height):
a = img1.getpixel((x, y))
b = img2.getpixel((x, y))
img1.putpixel((x, y), dodge(a, b, alpha))
# 保存转换后文件
img1.save(outpath)
print("<img src='demoimg.png' />原图")
toCarttonStyle("/data/wwwroot/default/demoimg.png","/data/wwwroot/default/Data/testimg111111.png")
print("<img src='Data/testimg111111.png?2321231312312312123312' />漫画")
toSketchStyle("/data/wwwroot/default/demoimg.png","/data/wwwroot/default/Data/testimg22222.png")
print("<img src='Data/testimg22222.png?12311112311212312331231' />素描")
网友回复
python如何调用openai的api实现知识讲解类动画讲解视频的合成?
html如何直接调用openai的api实现海报可视化设计及文本描述生成可编辑海报?
f12前端调试如何找出按钮点击事件触发的那段代码进行调试?
abcjs如何将曲谱播放后导出mid和wav格式音频下载?
python如何将曲子文本生成音乐mp3或wav、mid文件
python中mp3、wav音乐如何转成mid格式?
js在HTML中如何将曲谱生成音乐在线播放并下载本地?
python如何实现在windows上通过键盘来模拟鼠标操作?
python如何给win10电脑增加文件或文件夹右键自定义菜单?
python如何将音乐mp3文件解析获取曲调数据?