有问题的就是将视频转化位图片和将图片转化为视频
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
ffmpeg -f image2 -i 'in%6d.jpg' -vcodec libx264 -r 25 -b 200k out.mp4
os.system('out.mp4')
最后他说我倒数第二行有语法问题
看到有用cv2库的,找了一个下午的下载方法,最后在anaconda里下了,但不知道怎么用
(谢谢各位,喜欢编程的初中牲一枚啊~)
不知道你这个问题是否已经解决, 如果还没有解决的话: