任何用于显示来自相机的实时图像的快速 Python GUI
我正在尝试显示 1394 相机的实时图像。 目前,我的代码能够从相机循环获取图像,并且我正在寻找任何可以动态更新的快速 GUI(作为单独的线程)。我可以在 PyQt 中使用 QThreads 来做到这一点,但是有没有任何建议或更快的方法来做到这一点? 这是我的代码
#Loop 从相机捕获帧
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
谢谢。
I am trying to display live images from my 1394 camera.
Currently my code is able to obtain images in a loop from the camera and I was looking for any quick GUI that will update dynamically (as a separate thread). I can do this in PyQt maybe using QThreads but is there any recommendation or faster way of doing this??
Here's my code
#Loop capturing frames from camera
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
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这是 wxPython 代码,可以做到这一点......
Here's wxPython code that will do it...
我想我应该尝试 PyQt4 imageviewer.py 示例,它对我有用。
感谢你们所有的帮助。
这是我修改后的代码:
I thought I'd try PyQt4 imageviewer.py example and it worked for me.
Thanks for all your help guys.
Here's my modified code:
我建议使用 Tkinter,因为它已经是 python 的一部分。我从未使用过 PIL,但快速谷歌显示在 Tk 小部件中使用 PIL 图像很容易(通过 pil.ImageTk.PhotoImage() 方法)。
如果您已经设置了一个 Tkinter 小部件来显示图像(标签小部件工作正常),您所需要做的就是安排图像每秒左右更新一次。您可以使用 tkinter 的
after
命令来完成此操作。这是一个例子;我没有 PIL,因此它使用静态图像,但它说明了如何使用事件循环每秒获取图像:
I recommend using Tkinter since it's already part of python. I've never used PIL but a quick google shows it's easy to use PIL images in Tk widgets (via the pil.ImageTk.PhotoImage() method).
If you already have a Tkinter widget set up to display images (a Label widget works fine) all you need to do is arrange for the image to be updated every second or so. You can do this by using the
after
command of tkinter.Here's an example; I don't have PIL so it uses a static image but it illustrates how to use the event loop to fetch images every second:
由于好的答案非常大,我觉得我应该发布一个专门为此构建的库:
实际上,如果 image_binary 每次都是一个新的 numpy 数组。如果它被分配到相同的位置,那么这应该可以工作:
我知道 OpenCV 几乎不能算作 GUI,但这是快速的代码明智的。
Since the good answers are pretty large, I feel like I should post a library I built specifically for this:
Actually, that's if image_binary is a new numpy array every time. If it's assigned to the same location, then just this should work:
I know OpenCV barely counts as a GUI, but this is quick code wise.
尝试看看 gstreamer。 这是 google 给我搜索“gstreamer 1394”和 这个是“gstreamer pyqt”的第一个。
Try to take a look at gstreamer. This is the first result google gave me searching for "gstreamer 1394" and this one is the first for "gstreamer pyqt".