我尝试在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)
答案 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()函数正确。