当前位置: 首页 > news >正文

如何让AI帮你干活-娱乐(2)

背景:

好容易完成朋友的任务,帮忙给小朋友绘画比赛生成一些创意参考图片。他给我个挑战更高的问题,是否可以帮他用AI生成一些视频。这个乍一听以现在AI技术根本不太可能完成。奈何他各种坚持,无奈被迫营业。苦脸接受了这个不可能完成的任务。

要求:

1.视频人物相对稳定

2.视频祯之间不能跳跃太大(背景和画风不能跳变)

3.视频有一定连贯性(可以允许角色跳转不太连贯)

技术方案

思路:找一个视频,解析成图片,然后根据用户动作作为控制批量生成图,把生成的图合成视频输出

1.视频人物相对稳定,这部分我是用dreambooth锁定人物

2.视频不能太跳,这部分我尝试用image2image+control控制锁定

3.视频有一定连贯性,这部分我用video2video方式一定程度锁定角色动作

参考动作获取

视频转图片

#mp4转图片
import cv2
import osdef video2imgs(videoPath, imgPath):if not os.path.exists(imgPath):os.makedirs(imgPath)             # 目标文件夹不存在,则创建cap = cv2.VideoCapture(videoPath)    # 获取视频judge = cap.isOpened()                 # 判断是否能打开成功print(judge)fps = cap.get(cv2.CAP_PROP_FPS)      # 帧率,视频每秒展示多少张图片print('fps:',fps)frames = 1                           # 用于统计所有帧数count = 1                            # 用于统计保存的图片数量while(judge):flag, frame = cap.read()         # 读取每一张图片 flag表示是否读取成功,frame是图片if not flag:print(flag)print("Process finished!")breakelse:if frames % 10 == 0:         # 每隔10帧抽一张imgname = 'jpgs_' + str(count).rjust(3,'0') + ".jpg"newPath = imgPath + imgnameprint(imgname)cv2.imwrite(newPath, frame, [cv2.IMWRITE_JPEG_QUALITY, 100])# cv2.imencode('.jpg', frame)[1].tofile(newPath)count += 1frames += 1cap.release()print("共有 %d 张图片"%(count-1))
video2imgs('./normal video.mp4','./jpgs1/')

视频裁剪,人像放中间,补抓更清晰pose

#图片裁剪,人像更清晰
import cv2
import os
import os.pathf = r'./jpgs'
o = r'./target'
for file in os.listdir(f):f_img = f+"/"+fileo_img = o+"/"+fileimg = cv2.imread(f_img)print(img.shape) # (1080, 1920, 3)cropped = img[30:250, 50:280]  # 裁剪坐标为[y0:y1, x0:x1]cv2.imwrite(o_img, cropped)

图片调整尺寸,把pose放在生成图合适位置,确保生成动作稳定性

#图片尺寸调整
import PIL
import os
import os.path
from PIL import Imagef = r'./target'
o = r'./targets'
for file in os.listdir(f):f_img = f+"/"+fileo_img = o+"/"+fileimg = Image.open(f_img)img = img.resize((1024,640))img.save(o_img)
视频生成

本次实验使用stablediffusion中img2img来批量生产

选择了batch,通过controlnet==》pose、segment方法来控制生成图

结果输出:

把生成的图合成视频

from moviepy.editor import ImageSequenceClipimage_path = "result_video03"
fps = 5clip = ImageSequenceClip(image_path, fps=fps)
clip.write_videofile("output1.mp4", fps=fps)

合成视频效果

相忘于江湖

展望

现在效果还是不够稳定的

后续会尝试解决这个不稳定问题

http://www.lryc.cn/news/30999.html

相关文章:

  • 文件异步多备常用方案
  • java面试八股文之------Redis夺命连环25问
  • 【数据结构】AVL平衡二叉树底层原理以及二叉树的演进之多叉树
  • K8S篇-安装nfs插件
  • xmu 离散数学 卢杨班作业详解【4-7章】
  • 多重背包问题中的二进制状态压缩
  • 汇编语言程序设计(四)之汇编指令
  • Vant2 源码分析之 vant-sticky
  • 【自然语言处理】【大模型】大语言模型BLOOM推理工具测试
  • 云桌面技术初识:VDI,IDV,VOI,RDS
  • 基于本地centos构建gdal2.4.4镜像
  • 生产环境线程问题排查
  • Day908.joinsnljdist和group问题和备库自增主键问题 -MySQL实战
  • 算法 - 剑指Offer 丑数
  • 【ONE·C || 文件操作】
  • cmd窗口中java命令报错。错误:找不到或无法加载主类 java的jdk安装过程中踩过的坑
  • Breathwork(呼吸练习)
  • taobao.itemprops.get( 获取标准商品类目属性 )
  • QT配置安卓环境(保姆级教程)
  • 【uni-app教程】八、UniAPP Vuex 状态管理
  • 同花顺测试面经(30min)
  • C++-简述#ifdef、#else、#endif和#ifndef的作用
  • VictoriaMetrics 集群部署
  • 【基于感知损失的无监督泛锐化】
  • 在vercel上用streamlit部署网站
  • 华为OD机试题 - 斗地主(JavaScript)| 含思路
  • i.MX8MP平台开发分享(clock篇)-计算clock速度相关的内核API
  • 实验4 设计模式实验3
  • CNN基础
  • 【UEFI基础】UEFI事件介绍