Python Tkinter在画布上显示图片,它总是闪烁

2024-09-27 21:34:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从相机捕捉图像,并将图像显示在Tkinter的画布上。 但是,出现了一个奇怪的现象,画布将闪烁下面的代码

def get_image_cam() :
    global cam,cam_flag,cam_image, cam_imageTk, canvas_img
    print '[THREAD CREATE]get image camera'
    print cam_flag
    while cam_flag :
        image = cam.get_image()
        pygame.image.save(image,'capture.bmp')
        cam_image = Image.open('capture.bmp') 
        cam_imageTk = ImageTk.PhotoImage(cam_image)
        canvas_img.create_image(0, 0, anchor = NW ,image = cam_imageTk)

    print '[THREAD EXIT] get image camera'
    thread.exit_thread()

为了解决这个问题,我做了很多努力。下面是一些代码 http://codingmess.blogspot.com/2008/07/showing-webcam-image-in-desktop-window_08.html, 这真的很有帮助

^{pr2}$

正如帖子作者所说,他不知道为什么容器.obr=照片“有帮助。 我对我的代码也做了同样的处理。变化如下:

def get_image_cam() :
    global cam,cam_flag,cam_image, cam_imageTk, canvas_img
    print '[THREAD CREATE]get image camera'
    print cam_flag
    while cam_flag :
        image = cam.get_image()
        pygame.image.save(image,'capture.bmp')
        cam_image = Image.open('capture.bmp') 
        cam_imageTk = ImageTk.PhotoImage(cam_image)
        canvas_img.create_image(0, 0, anchor = NW ,image = cam_imageTk)
        obr = cam_imageTk # variable 'obr' is not neccessary, you can change it to anything you want 

    print '[THREAD EXIT] get image camera'
    thread.exit_thread()

有人能帮我解释一下吗?提前谢谢。在


Tags: 代码imageimggetthreadcameracaptureflag
1条回答
网友
1楼 · 发布于 2024-09-27 21:34:50

PhotoImage创建本地对象(在函数中),当您离开函数时,垃圾回收器会删除该对象(并且您会丢失图像,因此会闪烁)。在

必须将其分配给现有全局变量或现有对象。在

相关问题 更多 >

    热门问题