下面两种调用摄像头显示图像的代码,第一种方法直接绑定摄像头到Video层可以正常流畅的显示摄像头的画面,第二种方法用Show_img方法显示画面,在画面移动的时候会有严重的画面撕裂
第一种(正常显示)
import sys,uos
import time
from media.sensor import *
from media.display import *
from media.media import *
if __name__ == "__main__":
try:
sensor = Sensor(width=1270,height=960)
# sensor reset
sensor.reset()
# set chn1 output format
sensor.set_framesize(width = 640, height = 480, chn = CAM_CHN_ID_1)
# sensor.set_pixformat(Sensor.RGB565, chn = CAM_CHN_ID_1)
sensor.set_pixformat(PIXEL_FORMAT_YUV_SEMIPLANAR_420, chn = CAM_CHN_ID_1)
sensor_bind_info = sensor.bind_info(x = 0, y = 0, chn = CAM_CHN_ID_1)
Display.bind_layer(**sensor_bind_info, layer = Display.LAYER_VIDEO1)
# use lcd as display output
Display.init(Display.ST7701,width=640,height=480,to_ide = True)
# init media manager
MediaManager.init()
# sensor start run
sensor.run()
while True:
print("1")
# img = sensor.snapshot(chn = CAM_CHN_ID_1)
# Display.show_image(img)
except KeyboardInterrupt as e:
print(f"user stop")
except BaseException as e:
print(f"Exception '{e}'")
finally:
# sensor stop run
if isinstance(sensor, Sensor):
sensor.stop()
# deinit display
Display.deinit()
os.exitpoint(os.EXITPOINT_ENABLE_SLEEP)
time.sleep_ms(100)
# release media buffer
MediaManager.deinit()
第二种(画面撕裂)
import sys,uos
import time
from media.sensor import *
from media.display import *
from media.media import *
if __name__ == "__main__":
try:
sensor = Sensor(width=1270,height=960)
# sensor reset
sensor.reset()
# set chn1 output format
sensor.set_framesize(width = 640, height = 480, chn = CAM_CHN_ID_1)
sensor.set_pixformat(Sensor.RGB565, chn = CAM_CHN_ID_1)
# sensor.set_pixformat(PIXEL_FORMAT_YUV_SEMIPLANAR_420, chn = CAM_CHN_ID_1)
# sensor_bind_info = sensor.bind_info(x = 0, y = 0, chn = CAM_CHN_ID_1)
# Display.bind_layer(**sensor_bind_info, layer = Display.LAYER_VIDEO1)
# use lcd as display output
Display.init(Display.ST7701,width=640,height=480,to_ide = True)
# init media manager
MediaManager.init()
# sensor start run
sensor.run()
while True:
# print("1")
img = sensor.snapshot(chn = CAM_CHN_ID_1)
Display.show_image(img)
except KeyboardInterrupt as e:
print(f"user stop")
except BaseException as e:
print(f"Exception '{e}'")
finally:
# sensor stop run
if isinstance(sensor, Sensor):
sensor.stop()
# deinit display
Display.deinit()
os.exitpoint(os.EXITPOINT_ENABLE_SLEEP)
time.sleep_ms(100)
# release media buffer
MediaManager.deinit()
请问这是什么原因?