2011-10-28 28 views
1

我有一个应用程序可以在显示循环中将OpenCV的IplImages转换为Tkinter图像。当然,我想这样做是提高应用程序响应速度的最有效方式。在Tkinter中有效地显示OpenCV IplImage

这里是我当前如何做(frameIplImage):

pil_image = PIL.Image.fromstring(
      'RGB', 
      cv.GetSize(frame), 
      frame.tostring(), 
      'raw', 
      'BGR', 
      frame.width*3, 
      0) 
    tk_image = ImageTk.PhotoImage(pil_image) 

所以它的整个OpenCV的图像转换成字符串,通过PIL喂养它,然后把从PIL传统知识。有没有更好的办法?

回答

1

我找不到更好的方法来做到这一点,所以我重构我的应用程序使用highgui来显示OpenCV图像。它迫使我使用额外的窗口和额外的线程(一个用于应用程序小部件的Tkinter GUI,另一个用于highgui),但至少这样应用程序的响应速度更快。