【问题标题】:Show Multiple Cameras in One Window在一个窗口中显示多个摄像机
【发布时间】:2021-11-28 08:51:04
【问题描述】:

如何在一个窗口中显示多个摄像机?(OpenCv) 使用此代码:Capturing video from two cameras in OpenCV at once,我在单独的窗口中打开多个摄像头,但我想将它们显示在一个窗口中。 我找到了合并图像的代码https://answers.opencv.org/question/188025/is-it-possible-to-show-two-video-feed-in-one-window/,但它不适用于相机。 以前在这里问过同样的问题,但没有给出答案。

【问题讨论】:

  • 请添加您的代码,以及您遇到的问题
  • @BehdadAbdollahiMoghadam 已更新
  • 1.创建所需窗口大小的 numpy 数组(画布数组)。 2. 调整图像大小并将其复制到该画布阵列的任何子阵列。 3.显示画布数组
  • “但它不适用于相机”当然不是,因为它适用于图像(numpy 数组),而不是相机。您找到的该链接有效,下面的答案使用与该链接中相同的功能证明了这一点。

标签: python opencv computer-vision robotics


【解决方案1】:

您可以使用 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)

结果:(用于水平连接)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 2016-12-02
    相关资源
    最近更新 更多