OpenCv Python frame empty in mjpeg stream from webcam -
i'm creating program displays 4 mjpg cameras in grid, problem happens frame empty , stream freeze, capture error checking size of each frame, , if equal 1 continue cycle, problem remain in control loop, seems stream flow not able obtain valid frame, suggestion?
import socket import numpy np import cv2 cap = cv2.videocapture("http://85.90.40.19/mjpg/video.mjpg") cap2 = cv2.videocapture("http://85.90.40.19/mjpg/video.mjpg") cap3 = cv2.videocapture("http://85.90.40.19/mjpg/video.mjpg") cap4 = cv2.videocapture("http://85.90.40.19/mjpg/video.mjpg") cv2.namedwindow('frame', cv2.wnd_prop_fullscreen) cv2.setwindowproperty('frame', cv2.wnd_prop_fullscreen, cv2.window_fullscreen) while true: try: ret, frame = cap.read() ret2, frame2 = cap2.read() ret3, frame3 = cap2.read() ret4, frame4 = cap2.read() except: print("try catch") continue size = np.size(frame) size2 = np.size(frame2) size3 = np.size(frame3) size4 = np.size(frame4) if (size or size2 or size3 or size4) == 1: print("frame 0") continue # print("dimensione" + str(size)) rframe = cv2.resize(frame, (640,480)) rframe2 = cv2.resize(frame2, (640,480)) rframe3 = cv2.resize(frame3, (640,480)) rframe4 = cv2.resize(frame4, (640,480)) print(ret,ret2,ret3,ret4) vert1 = np.vstack((rframe,rframe2)) vert2 = np.vstack((rframe3,rframe4)) both = np.hstack((vert1,vert2)) print(both.shape) # both.resize((1024, 768,3)) cv2.imshow('frame', both) if cv2.waitkey(1) == 27: break cap.release() cv2.destroyallwindows()
thanks , sorry bad english
could suggest following type of approach:
try: ret, frame = cap.read() except: ret, frame = (-1, blackframe) try: ret2, frame2 = cap2.read() except: ret2, frame2 = (-1, blackframe) try: ret3, frame3 = cap3.read() except: ret3, frame3 = (-1, blackframe) try: ret4, frame4 = cap4.read() except: ret4, frame4 = (-1, blackframe)
where blackframe
suitable image have available when capture fails. allow other frames continue displayed.
the aim remove continue
statement causes execution return top without letting of other code execute.
Comments
Post a Comment