0
我想用多來在pygame的分開兩個任務:從網絡攝像頭拉的圖像,並顯示在屏幕上的圖像。我之所以想這樣做,是因爲多處理隊列:pygame的表面去世
- 我想要華麗的圖像處理
- 我想網民投票從屏幕和用戶輸入
分離,要分開兩者的時間延遲,理想情況下優化負載。使用線程我沒有問題從一個線程發送圖像到另一個。但是,我得到了一個滯後的形象。我想測試如果使用多處理可以減少圖像的延遲。
這裏的障礙:我從照相機處理髮送圖像到屏幕處理後得到一個錯誤。使用
imgmsg = img_q.get()
從隊列中拉出所述圖像後我檢查尺寸的圖像與
imgmsg.img.get_width()
如所述,具有螺紋此返回正確的圖像寬度。然而,多處理我得到以下錯誤
Process Process-1: Traceback (most recent call last): File "/usr/lib/python3.2/multiprocessing/process.py", line 267, in
_bootstrap
self.run() File "/usr/lib/python3.2/multiprocessing/process.py", line 116, in run
self._target(*self._args, **self._kwargs) File "test_photoBoothMultiProc.py", line 21, in consumer
photoBoothScreen.screenThread(in_q, img_q) File "/home/pi/pyBooth/thread_photoBoothScreen.py", line 68, in screenThread
print(imgmsg.img.get_width()) pygame.error: display Surface quit
所以看起來圖像丟失在隊列中?我試圖讀取到這一點,似乎有問題時,通過隊列跨 mitting較大的物體。它是否正確?我將如何繞過或解決這個問題?
在發送到另一個進程之前,嘗試序列化圖像(使用'pygame.image.tostring' /'pygame.image.fromstring')。這應該工作。 – sloth
該訣竅。任何想法爲什麼?如果你寫評論作爲答案,我會接受它。 – JoeyD