Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python从多个IP摄像机流式传输视频_Python_Opencv_Video Streaming_Video Processing - Fatal编程技术网

如何使用Python从多个IP摄像机流式传输视频

如何使用Python从多个IP摄像机流式传输视频,python,opencv,video-streaming,video-processing,Python,Opencv,Video Streaming,Video Processing,这是我正在运行的代码。但是结果是滞后的。我想要一种更快的方式一次读取多个视频流。尝试以下方法: url='http://192.168.0.103:8080/shot.jpg' url2='http://192.168.0.102:8080/shot.jpg' url3='http://192.168.0.3:8080/shot.jpg' while True: imgResp=urllib.urlopen(url) imgNp=np.array(bytearray(imgResp.rea

这是我正在运行的代码。但是结果是滞后的。我想要一种更快的方式一次读取多个视频流。

尝试以下方法:

url='http://192.168.0.103:8080/shot.jpg'
url2='http://192.168.0.102:8080/shot.jpg'
url3='http://192.168.0.3:8080/shot.jpg'

while True:
 imgResp=urllib.urlopen(url)
 imgNp=np.array(bytearray(imgResp.read()),dtype=np.uint8)
 img=cv2.imdecode(imgNp,-1)

 imgResp2=urllib.urlopen(url2)
 imgNp2=np.array(bytearray(imgResp2.read()),dtype=np.uint8)
 img2=cv2.imdecode(imgNp2,-1)

 imgResp3=urllib.urlopen(url3)
 imgNp3=np.array(bytearray(imgResp3.read()),dtype=np.uint8)
 img3=cv2.imdecode(imgNp3,-1)

 cv2.imshow('IPWebcam',img)
 cv2.imshow('IPWebcam2',img2)
 cv2.imshow('IPWebcam3',img3)
 if cv2.waitKey(1) & 0xFF == ord('q'):
    break   

注意:代码未经测试,请忽略任何打字错误,但这应该可以解决问题。快乐编码:)

您的URL是否经常刷新以获得新图像,还是始终是静态图像?只要连接一个IP摄像头,我就能够获得良好的视频输出,不会出现任何延迟。但是每当我连接多个摄像头时,产生的视频延迟。您是否尝试过使用一个线程来实现它,并且所有摄像头都在一个单独的线程中运行?代码运行了一段时间,然后出现以下错误。回溯(最后一次调用):文件“stack.py”,第21行,在pool=ThreadPool(processs=2)文件“W:\Tools\Python27\lib\multiprocessing\pool.py”,第732行,在init pool中。文件“W:\Tools\Python27\lib\multiprocessing\pool.py”,在init self.result\u handler.start()文件中“W:\Tools\Python27\lib\threading.py”,第736行,在start_start_new_thread(self.\u bootstrap,())thread中。错误:无法启动新线程
def ShowCam(url,CameraNumber =1):
    imgResp = urllib.urlopen(url)
    imgNp = np.array(bytearray(imgResp.read()), dtype=np.uint8)
    img = cv2.imdecode(imgNp, -1)
    camName = 'IPWebcam' + str(CameraNumber)
    return camName,img
result = True


from multiprocessing.pool import ThreadPool

# do some other stuff in the main process

while result:
    pool = ThreadPool(processes=3)
    async_result1 = pool.apply_async(ShowCam, (url, 1))  # tuple of args for     foo
    rval1 = async_result1.get()
    cv2.imshow(rval1[0],rval1[1])
    async_result2 = pool.apply_async(ShowCam, (url2, 2))  # tuple of args for foo
    rval2 = async_result2.get()
    cv2.imshow(rval2[0],rval2[1])
    async_result3 = pool.apply_async(ShowCam, (url3, 3))  # tuple of args for foo
    rval3 = async_result3.get()
    cv2.imshow(rval3[0],rval3[1])
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break