【发布时间】:2020-10-05 11:09:23
【问题描述】:
我正在从各种摄像机实时捕捉帧。每个摄像机的输出都显示在一个带有 cv2.imshow 的窗口中。我现在想要实现的是所有窗口都连接在一起形成一个网格/矩阵,例如,如果我有 4 个摄像头,那么这些窗口会以 2x2 的形式显示给我。
下面我附上我所拥有的代码。这让我可以捕捉我拥有的不同相机的帧,但我无法做到以上。
cap = []
ret = []
frame = []
final = ""
i = 0
cap.append(cv2.VideoCapture(0))
cap.append(cv2.VideoCapture(1))
cap.append(cv2.VideoCapture(2))
number_cameras = len(cap)
# I initialize values
for x in range(number_cameras):
ret.append(x)
frame.append(x)
while(True):
# I capture frame by frame from each camera
ret[i], frame[i] = cap[i].read()
if i == number_cameras-1:
final = cv2.hconcat([cv2.resize(frame[x], (400, 400)) for x in range(number_cameras)])
cv2.namedWindow('frame')
cv2.moveWindow('frame', 0, 0)
# I show the concatenated outputs
cv2.imshow('frame', final)
i = 0
else:
i = i + 1
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# I release the cameras
for x in range(number_cameras):
cap[x].release()
cv2.destroyAllWindows()
【问题讨论】:
标签: python-3.x opencv cv2