我正在编写一个程序,它显示一个安全控制台,用于显示来自我的网络摄像机的所有 rtsp 流。每个流在不同的窗口中播放,我希望将它们全部合并到一个窗口中。
这是我的代码:
import cv2
import threading
class camThread(threading.Thread):
def __init__(self, previewName, camID):
threading.Thread.__init__(self)
self.previewName = previewName
self.camID = camID
def run(self):
camPreview(self.previewName, self.camID)
def camPreview(previewName, camID):
# global frame
cv2.namedWindow(previewName)
cam = cv2.VideoCapture(camID)
if cam.isOpened(): # try to get the first frame
rval, frame = cam.read()
else:
rval = False
while rval:
frame = cv2.resize(frame, (620,400))
cv2.imshow(previewName, frame)
rval, frame = cam.read()
cv2.waitKey(20)
thread1 = camThread("Camera 1", 'my-rtsp-link')
thread2 = camThread("Camera 2", "my-second-rtsp-link")
thread1.start()
thread2.start()
我已经尝试过多处理,但它不起作用,因为我的函数中有一个 while 循环。任何帮助将不胜感激。
我使用 np.hstack
组合我的 rtsp 流,但这会使流冻结。所以我让两个流都通过多线程工作。但是现在每个流都在其单独的窗口中播放,如果我添加多个摄像头,这将非常混乱。我怎样才能将它们全部合并到一个大窗口中?