K230想同时实现触摸交互和人脸识别,但是会将sensor重复init导致无法运行

使用的就是K230教程里的两个模块进行拼接整合,比如实现“触摸屏幕指定部位后开始人脸检测”,但是代码会报错OSError: sensor(2) is already inited.初始化显示的代码如下:

初始化显示

sensor = Sensor()
sensor.reset()
sensor.set_framesize(width=800, height=480)
sensor.set_pixformat(Sensor.RGB565)
Display.init(Display.ST7701, to_ide=True)
MediaManager.init()
sensor.run()

怎么没人回复啊,我也是想一个摄像头识别颜色二维码,一个摄像头用来跑yolo的检测,也是出现这个重复定义问题

开两个线程,摄像头的初始化独立出来,放在两个线程启动前完成初始化。另外两个线程中对图像推理时使用线程锁。

不行,只能用同一个摄像头,用两个的怎么弄

def media_init():
global sensor1,sensor2,code_img_size,osd_img,rgb888p_size,display_size,det_osd_img,code_osd_img
sensor2 = Sensor(id = 2)
sensor2.reset()
sensor2.set_framesize(w = display_size[0], h = display_size[1],chn=CAM_CHN_ID_0)
sensor2.set_pixformat(Sensor.YUV420SP,chn=CAM_CHN_ID_0)
sensor2.set_framesize(w = code_img_size[0], h = code_img_size[1], chn=CAM_CHN_ID_1)
sensor2.set_pixformat(Sensor.RGB565,chn=CAM_CHN_ID_1)
sensor2.set_framesize(w = rgb888p_size[0], h = rgb888p_size[1], chn=CAM_CHN_ID_2)
sensor2.set_pixformat(Sensor.RGBP888,chn=CAM_CHN_ID_2)
sensor_bind_info = sensor2.bind_info(x = 0, y = 0, chn = CAM_CHN_ID_0)
Display.bind_layer(**sensor_bind_info, layer = Display.LAYER_VIDEO1)

sensor1 = Sensor(id = 1)
sensor1.reset()
sensor1.set_framesize(w = display_size[0], h = display_size[1],chn=CAM_CHN_ID_0)
sensor1.set_pixformat(Sensor.YUV420SP,chn=CAM_CHN_ID_0)
sensor1.set_framesize(w = color_img_size[0], h = color_img_size[1],chn=CAM_CHN_ID_1)
sensor1.set_pixformat(Sensor.RGB565,chn=CAM_CHN_ID_1)
sensor_bind_info = sensor1.bind_info(x = 800, y = 0,chn = CAM_CHN_ID_0)
Display.bind_layer(**sensor_bind_info, layer = Display.LAYER_VIDEO2)
Display.init(Display.ST7701, osd_num=2, to_ide=True)
det_osd_img = image.Image(display_size[0], display_size[1], image.ARGB8888)
code_osd_img = image.Image(display_size[0], display_size[1], image.ARGB8888)
MediaManager.init()
sensor1.run()
sensor2.run()

运行这个报错ValueError: Bind to video layer enable rotation 90/180 only support Display.LAYER_VIDEO1
然后我把LAYER_VIDEO2改成LAYER_VIDEO1继续报错AttributeError: ‘NoneType’ object has no attribute ‘destroy’,怎么解决两个摄像头的初始化

双摄的可参考一下这个例程看看: 获取双摄像头图像并显示在 HDMI 显示器上
1. Sensor 示例讲解 — CanMV K230