将多个摄像头合二为一 Window

Show Multiple Cameras in One Window

如何在一个 window 中显示多个摄像头?(OpenCv) 使用此代码:,我分别打开多个摄像头 windows,但我想在一个中显示它们。 我找到了连接图像 https://answers.opencv.org/question/188025/is-it-possible-to-show-two-video-feed-in-one-window/ 的代码,但它不适用于相机。 之前在这里问过同样的问题,但没有给出答案。

您可以使用 numpy 方法执行此操作。

选项 1:np.vstack/np.hstack 选项 2:np.concatenate

注意 1:如果您有不同的帧大小,这些方法将失败,因为您正在尝试对不同维度的矩阵进行操作。这就是为什么我调整其中一个框架的大小以适合另一个框架。

注2:OpenCV也有hconcat和vconcat方法,但我没有尝试在python中使用它们。

示例代码:(使用我的相机源和视频)

import cv2
import numpy as np

capCamera = cv2.VideoCapture(0)
capVideo = cv2.VideoCapture("desk.mp4")



while True:
    isNextFrameAvail1, frame1 = capCamera.read()
    isNextFrameAvail2, frame2 = capVideo.read()
    if not isNextFrameAvail1 or not isNextFrameAvail2:
        break
    frame2Resized = cv2.resize(frame2,(frame1.shape[0],frame1.shape[1]))

    # ---- Option 1 ----
    #numpy_vertical = np.vstack((frame1, frame2))
    numpy_horizontal = np.hstack((frame1, frame2))

    # ---- Option 2 ----
    #numpy_vertical_concat = np.concatenate((image, grey_3_channel), axis=0)
    #numpy_horizontal_concat = np.concatenate((frame1, frame2), axis=1)

    cv2.imshow("Result", numpy_horizontal)
    cv2.waitKey(1)

结果:(水平连接)