if w_fix != w_req or h_fix != h_req: frame = cv2.resize(frame, w_fix, h_fix) w_frame, h_frame = w_fix, h_fix return wx.Image(w_frame, h_frame, cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) def resizeFrame(frame, w_req, h_req): h_frame, w_frame, layers = frame.shape w_fix, h_fix = rescaleToRect(w_frame, h_frame, w_req, h_req) if w_fix != w_req or h_fix != h_req: frame = cv2.resize(frame, w_fix, h_fix) return frame jpegFramesCacheMax = 30 * 60 jpegFramesCache = LRUCache(jpegFramesCacheMax) def frameToJPeg(frame): jpeg = cv2.imencode('.jpg', frame)[1].tostring() jpegFramesCache[bytes(jpeg)] = frame return jpeg def jpegToFrame(jpeg): key = bytes(jpeg) if key in jpegFramesCache: return jpegFramesCache[key] frame = cv2.imdecode(np.frombuffer(jpeg, np.uint8), 1) jpegFramesCache[key] = frame return frame