2012-08-05 15 views
1

我的目標是使用OpenCV儘可能高效地從網絡攝像頭捕捉幀。目前,我可以使用標準繪圖上下文(BufferedPaintDC)直接將30FPS 6408 * 480繪圖捕獲到wxPython面板,CPU使用率約爲15%(較舊的Core Duo處理器)。我很好奇的是,如果我在一個wxPython框架中嵌入一個PyGame畫布,並直接畫到PyGame畫布,我會看到什麼樣的性能提升(如果有的話)。wxPython或wxPython中的PyGame canvas - >哪個更快?

我不確定是否瓶頸是wxPython框架,如果嵌入PyGame畫布實際上會做任何事情。或者,wxPython框架就像一個容器,並且對PyGame畫布沒有影響?我希望我在這裏有意義。

另一種選擇是使用PyGame,但我真的很喜歡wxPython小部件的功能,所以我不想失去它。

或者是否有更快的畫布,我可以集成到我不知道的wxPython?

想法?謝謝。

+0

我會想象,使用PyGame本身會比wxPython更快,因爲那時CPU不必渲染wxPython畫布和PyGame畫布,而只是渲染PyGame畫布。另外,我認爲6408 * 480爲640 * 480,對吧? – MiJyn 2012-08-05 21:40:29

+0

另外我認爲它可能還有更多的關於*你如何做繪畫例程,以及它是否在優化的C調用中完成,或者不是 – jdi 2012-08-05 22:19:20

+0

Yup 640 * 480,ha。我進行了一些測試,它與OpenCV一起出現並直接繪製到PyGame畫布上,我無法檢測到效率的任何提高。也許堅持wxPython是最好的選擇。 – radian 2012-08-08 02:24:48

回答

0

我不知道你爲什麼想將遊戲庫嵌入到wxPython中,希望獲得性能提升。就我個人而言,我不認爲這會發生。您應該查看當前支持的wxPython提供的繪圖畫布,或者解釋您正在嘗試執行的操作。人們已經在wxPython中完成了遊戲...

無論如何,今天wx的主要繪圖接口是wx.GCDC/wx.GraphicsContext,cairo,FloatCanvas或GLCanvas。當然,也有wx.DC,wx.PaintDC和你找到的那個。

+0

在性能方面,PaintDC與cairo和glcanvas相比如何?我的目標是將網絡攝像頭的畫面以至少30fps的速度繪製到畫布上,同時將CPU佔用率降至最低。我使用PyGame捕捉遊戲手柄事件(在同一個應用程序中),所以我擁有圖書館在我的處置,並且我已經聽說大量的繪圖非常好。使用bufferedpaintdc,每25ms繪製600行消耗大量處理器週期,好奇PyGame會是什麼樣子。我認爲繪製線條對於PyGame更有效,所以應該繪製圖像。感謝您的想法。 – radian 2012-08-08 02:22:48

+0

我不太確定,因爲我沒有測試過。您應該向wxPython Google小組詢問一些這些庫背後的開發人員。他們可以告訴你。 – 2012-08-08 13:54:45