python opencv 图片/视频 拼接

这段代码演示了如何使用Python的OpenCV库来拼接两张图片和两个视频。`pic_stitch`函数将两张图片水平拼接并保存为新的图片文件,而`video_stitch`函数则读取两个视频,将每一帧拼接后写入新的视频文件。代码中还展示了如何在图片和视频上添加文字水印。最后,提供了`cv2.VideoWriter_fourcc`的参数说明。
摘要由CSDN通过智能技术生成

python opencv 图片/视频 拼接

# coding: utf-8
# 像写诗一样写代码
import numpy as np
import cv2

img_A_path = "C:\\Pictures\\yy.jpg"                           # 待合成的 图片A路径
img_B_path = "C:\\Pictures\\yy1.jpg"                          # 待合成的 图片B路径
video_A_path = "D:\\Pycharm Pro\\o\\video\\3D mesh Advanced.mp4"   # 待合成的 视频A路径
video_B_path = "C:\\yuyang2\\桌面\\video\\3D mesh Advanced.mp4"                # 待合成的 视频B路径
video_A_show_name = "HumanAction V8.5.0"   # 视频A 显示的版本号
video_B_show_name = "HumanAction V8.4.0"   # 视频B 显示的版本号


def pic_stitch(imgA, imgB):
    """
        合成图片A、B
    """
    img_array_A = cv2.imread(imgA)
    cv2.putText(img_array_A, video_A_show_name, (50, 100), cv2.FONT_HERSHEY_COMPLEX, 1.5, (100, 200, 200), 3)
    img_array_B = cv2.imread(imgB)
    cv2.putText(img_array_B, video_A_show_name, (50, 100), cv2.FONT_HERSHEY_COMPLEX, 1.5, (100, 200, 200), 3)
    img_array_AB = np.hstack((img_array_A, img_array_B))
    cv2.imwrite("pic_stitch.jpg", img_array_AB)


def video_stitch(videoA, videoB):
    """
            合成视频A、B
    """
    cap_video_a = cv2.VideoCapture(videoA)
    cap_video_b = cv2.VideoCapture(videoB)
    fps = int(cap_video_a.get(cv2.CAP_PROP_FPS))
    size = (int(cap_video_b.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap_video_b.get(cv2.CAP_PROP_FRAME_HEIGHT)))
    videoWriter = cv2.VideoWriter('video_stitch.avi', cv2.VideoWriter_fourcc('X', 'V', 'I', 'D'), fps,
                                  (size[0] * 2, size[1]))
    ret_a, frame_a = cap_video_a.read()
    ret_b, frame_b = cap_video_b.read()
    while ret_a and ret_b:
        img_array_AB = np.hstack((frame_a, frame_b))
        videoWriter.write(img_array_AB)
        ret_a, frame_a = cap_video_a.read()
        cv2.putText(frame_a, video_A_show_name, (50, 100), cv2.FONT_HERSHEY_COMPLEX, 1.5, (100, 200, 200), 3)
        ret_b, frame_b = cap_video_b.read()
        cv2.putText(frame_b, video_B_show_name, (50, 100), cv2.FONT_HERSHEY_COMPLEX, 1.5, (100, 200, 200), 3)


if __name__ == "__main__":
    # pic_stitch(img_A_path, img_B_path)         # 合成图片A、B
    video_stitch(video_A_path, video_B_path)     # 合成视频A、B

#详解cv2.VideoWriter_fourcc对象(摘自Learning OpenCV3 Computer Vision with Python,坦白讲不太懂)
#fourcc意为四字符代码(Four-Character Codes),顾名思义,该编码由四个字符组成,下面是VideoWriter_fourcc对象一些常用的参数,注意:字符顺序不能弄混
#cv2.VideoWriter_fourcc('I', '4', '2', '0'),该参数是YUV编码类型,文件名后缀为.avi
#cv2.VideoWriter_fourcc('P', 'I', 'M', 'I'),该参数是MPEG-1编码类型,文件名后缀为.avi
#cv2.VideoWriter_fourcc('X', 'V', 'I', 'D'),该参数是MPEG-4编码类型,文件名后缀为.avi
#cv2.VideoWriter_fourcc('T', 'H', 'E', 'O'),该参数是Ogg Vorbis,文件名后缀为.ogv
#cv2.VideoWriter_fourcc('F', 'L', 'V', '1'),该参数是Flash视频,文件名后缀为.flv
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值