ffmpeg python视频转图片,图片转视频

我想用python做一个视频字符画的功能,但简单的将图片转化为字符画以可以实现,但在将视频分解成一张一张的图片的时候遇到了问题。(本人才初二,真的只学了一些皮毛)

有问题的就是将视频转化位图片和将图片转化为视频

from PIL import Image

import numpy as np
from PIL import ImageFont
from PIL import ImageDraw
import os
def shipingzhnegshu(videoPath: str):
cap = cv2.VideoCapture(videoPath) # 读取视频

while True:
    success, frame = cap.read()  # 读取视频帧
    if not success:
        break

ffmpeg -i <"sucai.mp4"> -r30 -qscale:v2 /"out/sucai.jpg"
def ascii_art(file):
im = Image.open('out/sucai.jpg')
im_color = np.array(im)
im = im.convert('L')
sample_rate = 1
new_im_size = [int(x*sample_rate) for x in im.size]
im = im.resize(new_im_size)
font = ImageFont.truetype('C:/Windows/Fonts/arial.ttf',size = 30)

aspect_ratio = font.getsize('x')[0]/font.getsize('x')[1]
new_im_size = np.array(
    [im.size[0]*sample_rate,im.size[1]*sample_rate*aspect_ratio]
).astype(int)
im = im.resize(new_im_size)
im= np.array(im)
symbols = np.array(list('.-vM'))
im = (im - im.min())/(im.max()-im.min())*(symbols.size-1)
ascii = symbols[im.astype(int)]
letter_size = font.getsize('x')
im_out_size = new_im_size * letter_size
bg_color = 'black'
im_out = Image.new('RGB',tuple(im_out_size),bg_color)
draw = ImageDraw.Draw(im_out)
y = 0
for i,line in enumerate(ascii):
    for j,ch in enumerate(line):
        #color = (255,255,255)
        color = tuple(im_color[i,j])
        draw.text((letter_size[0] * j,y),ch,fill=color,font=font)
    y += letter_size[1]
im_out.save(file + '.ascii.png')
lines = '\n'.join((''.join(r) for r in ascii))
print(lines)

if name == 'main':
ascii_art("one-piece.png")
#2
#ffmpeg -i -r 30 -qscale:v 2 out/%04d.jpg
ffmpeg -f image2 -i 'in%6d.jpg' -vcodec libx264 -r 25 -b 200k out.mp4

os.system('out.mp4')

(学校有zy要提交,就不打字了)

最后他说我倒数第二行有语法问题

在GitHub,百度,知乎都去搜了教程,要么看不懂,要么有问题连B站上也找了

看到有用cv2库的,找了一个下午的下载方法,最后在anaconda里下了,但不知道怎么用

将视频文件转化为一帧一帧的图片,再将转化为字符画的图片合成视频

(谢谢各位,喜欢编程的初中牲一枚啊~)

不清楚题主的倒数第二行是哪行,可以参考我之前的笔记:

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^