当前位置: 首页 > 面试题库 >

任何快速的Python GUI均可显示Camera的实时图像

慕容坚
2023-03-14
问题内容

我正在尝试显示1394摄像机的实时图像。目前,我的代码能够从相机循环获取图像,并且我正在寻找可以动态更新(作为单独线程)的任何快速GUI。我可以在PyQt中使用QThreads来做到这一点,但是有什么建议或更快的方法吗?这是我的代码

#从相机捕捉帧

for frame in range(1,500):

print 'frame:',frame

TIME.sleep(1) #capture frame every second

image_binary    = pycam.cam.RetrieveBuffer()

#convert to PIL Image

pilimg = PIL.Image.frombuffer("L",(cimg.GetCols(),cimg.GetRows()),image_binary,'raw', "RGBA", 0, 1)
    # At this point I want to send my image data to a GUI window and display it

谢谢。


问题答案:

这是将执行此操作的wxPython代码…

import wx
from PIL import Image

SIZE = (640, 480)

def get_image():
    # Put your code here to return a PIL image from the camera.
    return Image.new('L', SIZE)

def pil_to_wx(image):
    width, height = image.size
    buffer = image.convert('RGB').tostring()
    bitmap = wx.BitmapFromBuffer(width, height, buffer)
    return bitmap

class Panel(wx.Panel):
    def __init__(self, parent):
        super(Panel, self).__init__(parent, -1)
        self.SetSize(SIZE)
        self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
        self.Bind(wx.EVT_PAINT, self.on_paint)
        self.update()
    def update(self):
        self.Refresh()
        self.Update()
        wx.CallLater(15, self.update)
    def create_bitmap(self):
        image = get_image()
        bitmap = pil_to_wx(image)
        return bitmap
    def on_paint(self, event):
        bitmap = self.create_bitmap()
        dc = wx.AutoBufferedPaintDC(self)
        dc.DrawBitmap(bitmap, 0, 0)

class Frame(wx.Frame):
    def __init__(self):
        style = wx.DEFAULT_FRAME_STYLE & ~wx.RESIZE_BORDER & ~wx.MAXIMIZE_BOX
        super(Frame, self).__init__(None, -1, 'Camera Viewer', style=style)
        panel = Panel(self)
        self.Fit()

def main():
    app = wx.PySimpleApp()
    frame = Frame()
    frame.Center()
    frame.Show()
    app.MainLoop()

if __name__ == '__main__':
    main()


 类似资料:
  • 我有自定义列表视图。在listview中包含200个项目。当我从上到下或从下到上快速滚动时,listview显示错误的图像。如果我在慢慢滚动,那么它的工作很好。 XML格式的SimpleDraweeView: 将图像URI设置为SimpleDraweeView: SetHierarchyForDraweeView函数: AsyncColorDrawable类: 如果我做错了什么,请你想清楚。谢谢你

  • 问题内容: 我编写了以下代码以特定格式显示日期时间: 输出量 我想将“ pm”显示为“ PM”(用大写字母表示),如果电话具有24小时格式,则AM / PM应该不会出现。请帮我。 问题答案: 您可以如下设置DateFormatter amSymbol和pmSymbol: Xcode 8.3•Swift 3.1

  • 所以我有以下代码: 运行良好,闪屏显示得与我想要的完全一样,但它不在任务栏中显示图标,因此可以单击另一个窗口,再也看不到闪屏栏(它隐藏在其他窗口后面)。br> 我已经尝试使用窗口标志 ,但是如果我使用它,任务栏中仍然没有图标,而且现在它总是位于所有其他窗口的顶部(这是我不想要的)。br> 到目前为止,我已经浏览了一些窗口标志,并在谷歌上搜索了很长一段时间,我试图显示它。br> 另外,我知道我可以给

  • 函数名称:显示快速设置 函数功能: 下滑显示快速设置 函数方法 keycode.quickSetting() 注意事项 部分设备可能会出现无效的问题,已知模拟器调用此命令可能会失效。 目前积木编程函数和触动精灵函数不通用,请仔细查看本手册,此手册中函数仅支持积木编程,不支持触动精灵,同理请勿将触动精灵函数在积木编程运行。

  • 问题内容: 我正在使用Swift在iOS上进行编程,并且正在使用此代码移动,但是它不起作用。我正确调用了该函数,但是文本字段没有移动。我正在使用自动版式。 问题答案: 现有答案有一些改进。 首先, UIKeyboardWillChangeFrameNotification 可能是最好的通知,因为它处理的不仅是显示/隐藏,还包括由于键盘更改(语言,使用第三方键盘等)和旋转引起的更改(但下面的注释说明

  • 问题内容: 我正在使用QLPreviewController预览文档。但是我不知道如何显示存储在服务器上的文档。 问题答案: 你不能 QuickLook仅适用于本地资源文件。您需要首先异步下载数据,将其保存到文档目录或临时文件夹中,并在完成后从主线程中显示QLPreviewController: 编辑/更新: Xcode 11.3.1•Swift 5.1 ViewController.swift

  • 问题内容: 编写并运行此代码后,编译器将显示Expected Declaration错误: 问题答案: 之所以会出现此错误,是因为您在类中的错误位置放置了代码,因此将其移至任何函数或viewDidLoad方法中。 您只能在类范围内声明,而不能执行表达式。 它将正常工作。 编辑: 在您的第二个UIViewController只是通过NSUserDefaults这种方式阅读highScore : 因此