denngyu 发表于 2020-3-23 23:44:27

把视频转换成由字体作为像素的视频实现

import cv2
vidcap = cv2.VideoCapture('video/video.avi')
success,image = vidcap.read()
count = 0
success = True
while success:
    success,image = vidcap.read()
    cv2.imwrite("pic/frame%d.jpg" % count, image)# save frame as JPEG file
    if cv2.waitKey(10) == 27:
      break
    count += 1



from PIL import Image, ImageDraw, ImageFont
import cv2
import os


def draw(pic):
    img = cv2.imread('pic/' + pic)
    img = img[:, :, (2, 1, 0)]

    blank = Image.new("RGB", ), len(img)], "white")
    drawObj = ImageDraw.Draw(blank)

    n = 10

    font = ImageFont.truetype('C:/Windows/Fonts/Microsoft YaHei UI/msyhbd.ttc', size=n - 1)

    for i in range(0, len(img), n):
      for j in range(0, len(img), n):
            text = '武汉加油'
            drawObj.ink = img + img * 256 + img * 256 * 256
            drawObj.text(, text, font=font)
            print('完成处理——', i, j)

    blank.save('new/new_' + pic, 'jpeg')


filelist = os.listdir('pic')
for file in filelist:
    draw(file)



import time
import os
import cv2
import re


def resort(list):
    for i in range(len(list)-1):
      for j in range(len(list)-1):
            if int(re.findall(r'\d+', list)) > int(re.findall(r'\d+', list)):
                list, list = list, list
    return list


def picvideo(path, size):
    # path = r'C:\Users\Administrator\Desktop\1\huaixiao\\'#文件路径
    filelist = os.listdir(path)# 获取该目录下的所有文件名
    filelist = resort(filelist)


    '''
    fps:
    帧率:1秒钟有n张图片写进去[控制一张图片停留5秒钟,那就是帧率为1,重复播放这张图片5次]
    如果文件夹下有50张 534*300的图片,这里设置1秒钟播放5张,那么这个视频的时长就是10秒
    '''
    fps = 24
    # size = (591,705) #图片的分辨率片
    file_path = 'video/new.mp4'# 导出路径
    fourcc = cv2.VideoWriter_fourcc('D', 'I', 'V', 'X')# 不同视频编码对应不同视频格式(例:'I','4','2','0' 对应avi格式)

    video = cv2.VideoWriter(file_path, fourcc, fps, size)

    for item in filelist:
      if item.endswith('.jpg'):# 判断图片后缀是否是.png
            item = path + '/' + item
            img = cv2.imread(item)# 使用opencv读取图像,直接返回numpy.ndarray 对象,通道顺序为BGR ,注意是BGR,通道值默认范围0-255。
            video.write(img)# 把图片写进视频

    video.release()# 释放


picvideo(r'new', (960, 544))

三个文件依次实行即可,注意在项目内添加必要的文件夹
cv2这个库在网上找安装教程吧,这里不赘述了

乘号 发表于 2020-3-24 08:01:07

我好像知道了我的世界的视频制作方法{:10_256:}
页: [1]
查看完整版本: 把视频转换成由字体作为像素的视频实现