![](/img/trans.png)
[英]Flask/Python - How can I populate an HTML page with live footage from multiple IP cameras?
[英]How to stream videos from multiple IP cameras using Python
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
這是我正在運行的代碼。但是結果是滯后的。 我想要一次更快的方式一次讀取多個視頻流。
試試看:
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
注意:代碼未經測試,請忽略任何拼寫錯誤,但這應該可以解決目的。 快樂的編碼:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.