当前位置: 首页 > 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)

合成视频效果

相忘于江湖

展望

现在效果还是不够稳定的

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

相关文章:

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

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

文件异步多备常用方案

业务需求上经常存在需要对同一个文件进行双上传,上传到不同云存储桶,以防出现某一个云厂商因各种意外导致自身服务出现不可用的情况,当然,还有其他措施可以避免,现在只针对通过程序业务代码而双写存储的这个场景。 业务…...

java面试八股文之------Redis夺命连环25问

java面试八股文之------Redis夺命连环25问👨‍🎓1.为什么redis这么快👨‍🎓2.redis的应用场景,为什么要用👨‍🎓3.redis6.0之前为什么一直不使用多线程,6.0为甚么又使用多线程了&…...

【数据结构】AVL平衡二叉树底层原理以及二叉树的演进之多叉树

1.AVL平衡二叉树底层原理 背景 二叉查找树左右子树极度不平衡,退化成为链表时候,相当于全表扫描,时间复杂度就变为了O(n) 插入速度没影响,但是查询速度变慢,比单链表都慢,每次都要判断左右子树是否为空 需…...

K8S篇-安装nfs插件

前言 有关k8s的搭建可以参考:http://t.csdn.cn/H84Zu 有关过程中使用到的nfs相关的nas,可以参考: http://t.csdn.cn/ACfoT http://t.csdn.cn/tPotK http://t.csdn.cn/JIn27 安装nfs存储插件 NFS-Subdir-External-Provisioner是一个自动配置…...

xmu 离散数学 卢杨班作业详解【4-7章】

文章目录第四章 二元关系和函数4.6.2911121618.120.222.1232834第五章 代数系统的一般概念2判断二元运算是否封闭348111214第六章 几个典型的代数系统1.5.6.7.11.12151618第七章 图的基本概念12479111215第四章 二元关系和函数 4. A{1,2,3} 恒等关系 IA{<1,1>,<2,2…...

多重背包问题中的二进制状态压缩

1.多重背包问题 经典的多重背包问题和01背包问题的相似之处在于二者的一维遍历顺序都是从右侧往左侧遍历。 同时多重背包的一维写法不比二维写法降低时间复杂度。 2.多重背包标准写法:(平铺展开形式&#xff09; class Solution {public int maxValue(int N, int C, int[] s…...

汇编语言程序设计(四)之汇编指令

系列文章 汇编语言程序设计&#xff08;一&#xff09; 汇编语言程序设计&#xff08;二&#xff09;之寄存器 汇编语言程序设计&#xff08;三&#xff09;之汇编程序 汇编指令 1. 数据传输指令 指令包括&#xff1a;MOV、XCHG、XLAT、LEA、LDS、LES、PUSH、POP、PUSHF、LA…...

Vant2 源码分析之 vant-sticky

前言 原打算借鉴 vant-sticky 源码&#xff0c;实现业务需求的某个功能&#xff0c;第一眼看以为看懂了&#xff0c;拿来用的时候&#xff0c;才发现一知半解。看第二遍时&#xff0c;对不起&#xff0c;是我肤浅了。这里侧重分析实现原理&#xff0c;其他部分不拓展开来&…...

【自然语言处理】【大模型】大语言模型BLOOM推理工具测试

相关博客 【自然语言处理】【大模型】大语言模型BLOOM推理工具测试 【自然语言处理】【大模型】GLM-130B&#xff1a;一个开源双语预训练语言模型 【自然语言处理】【大模型】用于大型Transformer的8-bit矩阵乘法介绍 【自然语言处理】【大模型】BLOOM&#xff1a;一个176B参数…...

云桌面技术初识:VDI,IDV,VOI,RDS

VDI&#xff08;Virtual Desktop Infrastucture&#xff0c;虚拟桌面架构&#xff09;&#xff0c;俗称虚拟云桌面 VDI构架采用的“集中存储、集中运算”构架&#xff0c;所有的桌面以虚拟机的方式运行在服务器硬件虚拟化层上&#xff0c;桌面以图像传输的方式发送到客户端。 …...

基于本地centos构建gdal2.4.4镜像

1.前言 基于基础镜像构建gdal环境一般特别大&#xff0c;一般少则1.6G&#xff0c;多则2G甚至更大&#xff0c;这对于镜像的迁移造成了极大的不便。究其原因在于容器中有大量的源码文件以及编译中间过程文件&#xff0c;还要大量编译需要的yum库。本文主要通过在centos系统上先…...

生产环境线程问题排查

线程状态的解读RUNNABLE线程处于运行状态&#xff0c;不一定消耗CPU。例如&#xff0c;线程从网络读取数据&#xff0c;大多数时间是挂起的&#xff0c;只有数据到达时才会重新唤起进入执行状态。只有Java代码显式调用sleep或wait方法时&#xff0c;虚拟机才可以精准获取到线程…...

Day908.joinsnljdist和group问题和备库自增主键问题 -MySQL实战

join&snlj&dist和group问题和备库自增主键问题 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于join&snlj&dist和group问题和备库自增主键问题的内容。 一、join 的写法 join 语句怎么优化&#xff1f;中&#xff0c;在介绍 join 执行顺序的时候&am…...

算法 - 剑指Offer 丑数

题目 我们把只包含质因子 2、3 和 5 的数称作丑数&#xff08;Ugly Number&#xff09;。求按从小到大的顺序的第 n 个丑数。 解题思路 这题我使用最简单方法去做&#xff0c; 首先我们可以获取所有2n,3n,5*n的丑数&#xff0c;只是我们这里暂时无法排序&#xff0c;并且可能…...

【ONE·C || 文件操作】

总言 C语言&#xff1a;文件操作。    文章目录总言1、文件是什么&#xff1f;为什么需要文件&#xff1f;1.1、为什么需要文件&#xff1f;1.2、文件是什么&#xff1f;2、文件的打开与关闭2.1、文件指针2.2、文件打开和关闭&#xff1a;fopen、fclose2.3、文件使用方式3、文…...

cmd窗口中java命令报错。错误:找不到或无法加载主类 java的jdk安装过程中踩过的坑

错误: 找不到或无法加载主类 HelloWorld 遇到这个问题时&#xff0c;我尝试过网上其他人的做法。有试过添加classpath&#xff0c;也有试过删除classpath。但是依然报错&#xff0c;这里javac可以编译通过&#xff0c;说明代码应该是没有问题的。只是在运行是出现了错误。我安装…...

Breathwork(呼吸练习)

查了下呼吸练习相关内容&#xff0c;做个记录。我又在油管学习啦。 喜欢在you. tube看一些self-help相关的内容。比如学习方法、拉伸、跑步、力量举、自重锻炼等等。 总是听Obi Vicent说起Breathwork&#xff0c;比如&#xff1a; My 6am Morning Routine | New Healthy Habit…...

taobao.itemprops.get( 获取标准商品类目属性 )

&#xffe5;开放平台基础API不需用户授权 通过设置必要的参数&#xff0c;来获取商品后台标准类目属性&#xff0c;以及这些属性里面详细的属性值prop_values。 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请求参数 点…...

QT配置安卓环境(保姆级教程)

目录 下载环境资源 JDK1.8 NDK SDK ​安装QT 配置环境 下载环境资源 JDK1.8 介绍JDK是Java开发的核心工具&#xff0c;为Java开发者提供了一套完整的开发环境&#xff0c;包括开发工具、类库和API等&#xff0c;使得开发者可以高效地编写、测试和运行Java应用程序。 下载…...

【uni-app教程】八、UniAPP Vuex 状态管理

八、UniAPP Vuex 状态管理 概念 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。 应用场景 Vue多个组件之间需要共享数据或状态。 关键规则 State&#xff1a…...

同花顺测试面经(30min)

大概三十分钟&#xff0c;面试官人还挺好的 1.自我介绍 2.详细问你了自我介绍中的一个实习经历 3.对我们公司有什么了解 &#xff01;&#xff01;&#xff08;高频&#xff09; 4.对测试有什么看法&#xff0c;为什么选测试 5.黑盒白盒分别是什么 6.对测试左移有什么看法…...

C++-简述#ifdef、#else、#endif和#ifndef的作用

回答如下&#xff1a; #ifdef&#xff0c;#else&#xff0c;#endif和#ifndef都是预处理指令&#xff0c;用于条件编译。#ifdef&#xff1a;这个指令用来判断一个宏是否已经被定义过&#xff0c;如果已经定义过&#xff0c;则执行后面的代码块。#else&#xff1a;这个指令一般与…...

VictoriaMetrics 集群部署

官网 ## 官网 https://github.com/VictoriaMetrics/VictoriaMetrics 集群角色详解 VictoriaMetrics 集群模式。主要由 vmstorage ,vminsert,vmselect 三部分组成&#xff0c;这三个组件每个组件都可以单独进行扩展。其中: vmstorage 负责提供数据存储服务vminsert 是数据存…...

【基于感知损失的无监督泛锐化】

PercepPan: Towards Unsupervised Pan-Sharpening Based on Perceptual Loss &#xff08;PercepPan&#xff1a;基于感知损失的无监督泛锐化&#xff09; 在基于神经网络的全色锐化文献中&#xff0c;作为地面实况标签的高分辨率多光谱图像通常是不可用的。为了解决这个问题…...

在vercel上用streamlit部署网站

Verce和Streamlit都是非常流行的Web应用程序部署平台。以下是从零开始在Vercel上部署Streamlit应用程序的一些基本步骤。 安装 Streamlit 在本地计算机上安装Streamlit。可以轻松地通过在命令行中运行以下命令来安装&#xff1a; pip install streamlit为 Streamlit 应用程序…...

华为OD机试题 - 斗地主(JavaScript)| 含思路

更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜索引擎搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:斗地主题目输入输出描述示例一输入输出示例二输…...

i.MX8MP平台开发分享(clock篇)-计算clock速度相关的内核API

专栏目录:专栏目录传送门 平台内核i.MX8MP5.15.71文章目录 clk消费者clk生产者clk_set_rateclk_round_rateclk_pll1443x_recalc_rate这一篇我们具体来看看其他驱动如何使用clock,这里以lcdif驱动为例。 IMX8MP_CLK_MEDIA_BLK_CTRL_LCDIF_PIXEL是门控时钟,名为pix,这个门控时…...

实验4 设计模式实验3

实验内容: 1. 某软件公司为新开发的智能手机控制与管理软件提供了一键备份功能,通 过该功能可以将原本存储在手机中的通信录、短信、照片、歌曲等资料一次性全 部拷贝到移动存储介质(例如MMC 卡或SD 卡)中。在实现过程中需要与多个 已有的类进行交互,例如通讯录管理类、短信…...

CNN基础

Tip&#xff1a;仅供自己学习记录&#xff0c;酌情参考 1. 前馈与反馈神经网络 神经网络有前馈神经网络和反馈神经网络&#xff0c;前向神经网络也就是前馈神经网络。 前馈型神经网络各神经元接收前一层的输入&#xff0c;并输出给下一层&#xff0c;没有反馈。节点分为两类…...