求解答一下UI调用视频流闪烁的问题

求各位解答,我用pysimplegui编写了一个UI,在UI中我调用了一个外部设备的接口,实时展示其成像结果,设备自带的软件成像结果正常显示,但是我的就一直闪烁,偶尔会正常一段时间

img

正常是这样

img

这是我的
这是成像部分的代码

# 尝试导入名为 config 的模块,如果导入成功,则将该模块中的 config 属性赋值给变量 defaults。如果导入失败,则将 defaults 赋值为 None
try:
    defaults = __import__("config", globals(), locals(), ['config']).config
except:
    defaults = None
# 尝试将变量`config`设置为与当前文件位于同一目录中的配置文件的路径。如果找不到该文件,则将`config`设置为`None`。
try:
    config = os.path.join(os.path.dirname(__file__), defaults.configPath)
except:
    config = None
# 尝试将变量`dev`设置为`defaults.developmentMode`的值。如果`defaults.developmentMode`不存在或出现错误,则将`dev`设置为`False`。
try:
    dev = defaults.developmentMode
except:
    dev = False
# 尝试使用给定的参数创建一个名为processor的对象,如果出现运行时错误,则将错误信息打印出来
try:
    processor = tp.processor(rows=DEFAULT_CHUNK, threaded=True, defaults=defaults, config=config)
except RuntimeError as e:
    print e
# 设置size元组
size = (int(round(DEFAULT_ROWS * pxSCALE)), int(round(processor.X_SIZE * pxSCALE * pxRATIO)))
# 设置imgSize元组
imgSize = (DEFAULT_ROWS, processor.X_SIZE)
# 创建一个大小为imgSize,数据类型为np.float32的零矩阵data
data = np.zeros(imgSize,dtype=np.float32)
# 创建一个大小为imgSize的tw.Worker对象worker
worker = tw.Worker(imgSize)
# 设置对比度为2,亮度为0.5
worker.SetContrast(2,0.5)

# 接受一个名为file_or_bytes的参数和一个名为resize的可选参数。
def convert_to_bytes(file_or_bytes):
    img = Image.fromarray(file_or_bytes)
    bio = io.BytesIO()
    # 然后,将图像保存为GIF格式,并将其存储在名为bio的BytesIO对象中。
    img.save(bio, format="GIF")
    # 最后,删除图像对象并返回bio对象的字节表示形式。
    del img
    return bio.getvalue()# 尝试导入名为 config 的模块,如果导入成功,则将该模块中的 config 属性赋值给变量 defaults。如果导入失败,则将 defaults 赋值为 None
try:
    defaults = __import__("config", globals(), locals(), ['config']).config
except:
    defaults = None
# 尝试将变量`config`设置为与当前文件位于同一目录中的配置文件的路径。如果找不到该文件,则将`config`设置为`None`。
try:
    config = os.path.join(os.path.dirname(__file__), defaults.configPath)
except:
    config = None
# 尝试将变量`dev`设置为`defaults.developmentMode`的值。如果`defaults.developmentMode`不存在或出现错误,则将`dev`设置为`False`。
try:
    dev = defaults.developmentMode
except:
    dev = False
# 尝试使用给定的参数创建一个名为processor的对象,如果出现运行时错误,则将错误信息打印出来
try:
    processor = tp.processor(rows=DEFAULT_CHUNK, threaded=True, defaults=defaults, config=config)
except RuntimeError as e:
    print e
# 设置size元组
size = (int(round(DEFAULT_ROWS * pxSCALE)), int(round(processor.X_SIZE * pxSCALE * pxRATIO)))
# 设置imgSize元组
imgSize = (DEFAULT_ROWS, processor.X_SIZE)
# 创建一个大小为imgSize,数据类型为np.float32的零矩阵data
data = np.zeros(imgSize,dtype=np.float32)
# 创建一个大小为imgSize的tw.Worker对象worker
worker = tw.Worker(imgSize)
# 设置对比度为2,亮度为0.5
worker.SetContrast(2,0.5)

# 接受一个名为file_or_bytes的参数和一个名为resize的可选参数。
def convert_to_bytes(file_or_bytes):
    img = Image.fromarray(file_or_bytes)
    bio = io.BytesIO()
    # 然后,将图像保存为GIF格式,并将其存储在名为bio的BytesIO对象中。
    img.save(bio, format="GIF")
    # 最后,删除图像对象并返回bio对象的字节表示形式。
    del img
    return bio.getvalue()
 # 定义一个函数,该函数接受两个可选参数e和critical。如果e存在,则将其转换为字符串并打印出来。最后,返回None。
    def on_error(e=None, critical=True):
        print str(e)
        return

    # 创建一个大小为size + (3,),数据类型为np.uint8的零矩阵img
    img = np.zeros(size + (3,), dtype=np.uint8)
    # 创建一个大小为size + (3,),数据类型为np.uint8的空矩阵scaledImg
    scaledImg = np.empty(size + (3,), dtype=np.uint8)

    # 定义一个函数on_result,它有一个参数_data
    def on_result(_data):
        # 声明全局变量img和scaledImg
        global img
        global scaledImg
        # 如果_data为空,则返回
        if _data is None:
            return
        # 将_data复制一份
        _data = _data.copy()
        # 调用worker.makeImg(_data)生成图像,然后将其转置
        img = worker.makeImg(_data).transpose([1, 0, 2]).copy()
        # 将img缩放到指定大小,并使用最近邻插值法
        scaledImg = cv2.resize(img, size, interpolation=cv2.INTER_NEAREST)
        # 更新窗口中的图像
        window['-IMAGE-'].update(data=convert_to_bytes(scaledImg))
        #time.sleep(0.8)
    # 调用processor.start函数,该函数接受两个参数on_result和on_error。当processor处理图像时,它将调用on_result函数,并将处理后的图像数据作为参数传递给它。如果processor在处理图像时遇到错误,则它将调用on_error函数,并将错误信息作为参数传递给它。
    def show_img():
        processor.start(on_result, on_error)

    # 死循环,用于监听用户的滑块输入,将其发送到服务端
    has_start_thread = False
    window.finalize()

求解答
我使用的是python2.7

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^