将多个摄像头合二为一 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)
结果:(水平连接)
如何在一个 window 中显示多个摄像头?(OpenCv)
使用此代码:
您可以使用 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)
结果:(水平连接)