新版本自定相机 使用的时候一定要注意把所有方法和__init__ 放到你要使用的类中
class CustomCamera(): def __init__(self): self.Flag_list = [0, 1] self.image_from_camera = [] self.camera_flog = [False] self.detail_flog = [False] # 将numpy转为texture def numpy_to_texture(self, frame, colorfmt='bgr'): buf1 = cv2.flip(frame, 0) buf = buf1.tostring() image_texture = Texture.create(size=(frame.shape[1], frame.shape[0]), colorfmt=colorfmt) image_texture.blit_buffer(buf, colorfmt=colorfmt, bufferfmt='ubyte') return image_texture def cam(self, *kwargs): ret, frame = self.Flag_list[0].read() if ret: node1 = self.numpy_to_texture(frame[:, ::-1, :]) self.image_from_camera.append(node1) self.camera_to_page() # 这就是动态显示的模板 def camera_to_page(self): # 显示相机到页面 if len(self.image_from_camera) >=1: print("的点点滴滴多多多多多多多多多多") node1 = self.image_from_camera.pop(0) self.Flag_list[1].clear_widgets() if self.camera_flog: node = Scatter(pos=self.Flag_list[1].pos, size=self.Flag_list[1].size) with node.canvas: Rectangle(size=node.size, texture=node1) self.Flag_list[1].add_widget(node) # self.Flag_list[0].add_widget(node2) # 自定义相机 def coustom_camera(self, par): self.Flag_list[1] = par self.camera_flog[0] = not self.camera_flog[0] if not self.camera_flog[0]: self.Flag_list[0].release() self.image_from_camera = [] print("tun off") try: cap = cv2.VideoCapture(0) except: cap = cv2.VideoCapture(1) self.Flag_list[0] = cap if not self.camera_flog[0]: cap.release() Clock.unschedule(self.cam) else: Clock.schedule_interval(self.cam, 1.0 / 20)