wxpython中的Pygame.camera

时间:2014-12-24 06:05:29

标签: python wxpython pygame simplecv

我尝试在wxPython中嵌入Pygame.camera。

经过一番搜索,我发现它可以用SDL_WINDOWID做。但是我没有做到这一点

图像是我的目标(我想做什么) http://kalten.tistory.com/entry/wxPython

你能帮帮我吗?我只需要简单的例子

即使Camera Viewer使用Simplecv(不是pygame.camera),我也不在乎

谢谢!!! ^^祝你有愉快的一天

    self.parent = parent
    self.hwnd = self.GetHandle()
    os.environ['SDL_VIDEODRIVER'] = 'windib'
    os.environ['SDL_WINDOWID'] = str(self.hwnd)

1 个答案:

答案 0 :(得分:0)

来自Pygame Tutorials Camera Module Introduction

  

捕获实时流本教程的其余部分将基于   捕获实时图像流。为此,我们将使用   下面的课程。如上所述,它只会使一个恒定的流   相机帧到屏幕,有效地显示实时视频。它是   基本上你会期望的,循环get_image(),blitting到   显示表面,然后翻转它。出于性能原因,我们将会   为相机提供相同的表面以便每次使用。

class Capture(object):
     def __init__(self):
         self.size = (640,480)
         # create a display surface. standard pygame stuff
         self.display = pygame.display.set_mode(self.size, 0)

         # this is the same as what we saw before
         self.clist = pygame.camera.list_cameras()
         if not self.clist:
             raise ValueError("Sorry, no cameras detected.")
         self.cam = pygame.camera.Camera(self.clist[0], self.size)
         self.cam.start()

         # create a surface to capture to.  for performance purposes
         # bit depth is the same as that of the display surface.
         self.snapshot = pygame.surface.Surface(self.size, 0, self.display)

     def get_and_flip(self):
         # if you don't want to tie the framerate to the camera, you can check 
         # if the camera has an image ready.  note that while this works
         # on most cameras, some will never return true.
         if self.cam.query_image():
             self.snapshot = self.cam.get_image(self.snapshot)

         # blit it to the display surface.  simple!
         self.display.blit(self.snapshot, (0,0))
         pygame.display.flip()

     def main(self):
         going = True
         while going:
             events = pygame.event.get()
             for e in events:
                 if e.type == QUIT or (e.type == KEYDOWN and e.key == K_ESCAPE):
                     # close the camera safely
                     self.cam.stop()
                     going = False

             self.get_and_flip()
  

因为get_image()是一个阻塞调用,可能需要相当多的时间   在慢镜头上的时间,这个例子使用query_image()来查看是否   相机准备好了。这允许您分离您的帧率   你的相机游戏。也可以有相机   在单独的线程中捕获图像,大致相同   性能提升,如果你发现你的相机不支持   query_image()函数正确。