首页 > 解决方案 > pygame.camera.Camera.start() 正在创建无关的缓冲区窗口

问题描述

在带有摄像头模块的 Raspberry Pi 上。我正在抓取相机的输出 OK 并将其粘贴到一个表面上,这很好。问题是,当我在相机上调用 start() 时,它会在屏幕上创建一个带有相机内容的小无边框额外窗口。我无法看到任何地方要求不要发生这种情况,而且 start() 似乎非常重要。代码非常令人兴奋。如何隐藏或禁用此缓冲区?

import pygame
import pygame.camera
from pygame.locals import *
import time

pygame.init()
pygame.camera.init()


size1=(1920,1080)
size2=(640,480)
cam = pygame.camera.Camera("/dev/video0",size2)
cam.start()
display = pygame.display.set_mode(size2, 0)
snapshot = pygame.surface.Surface(size2, 0, display)
while True:
  snapshot = cam.get_image(snapshot)
  display.blit(snapshot,(0,0))
  pygame.display.flip()
  time.sleep(10)

它实际上让我困惑了一段时间,因为我错过了翻转(),我以为我只是得到一个带有黑色边框的小尺寸图像。这是与 X 一起运行的,而不是在裸控制台上运行的。

作为奖励,get_image() 图像具有奇怪的颜色质量,即使小缓冲区窗口中的图像看起来更接近真实颜色(我尝试过请求 RGB,但它完全相同)。

附加信息:在 VNC 中,此缓冲区未显示在 VNC 客户端中,因此它似乎与帧缓冲区或其他什么有关?

标签: pythonpygame

解决方案


我尝试了全面升级,但 Pi 无法启动,所以我挽救了我的文件并进行了全新安装。现在工作正常。没有额外的窗户,颜色很好。我不确定根本原因是什么,但现在考虑一下。


推荐阅读