如何解决cam.start() -- 不支持格式
我正在从事一个项目,包括brickpi,我想从我的机器人上的摄像头获取实时视频。我尝试使用 pygame,因为我已经将其用于控件,但是如果我尝试启动相机,则会出现以下错误:
SystemError: ioctl(VIDIOC_S_FMT) failure: no supported formats
我已经在寻找解决这个问题的方法,但没有一个能奏效。
这是我的代码:
#Kompatibilität von python3 und python2
from __future__ import print_function
from __future__ import division
#Importieren der gebrauchten Bibliotheken
import os
import sys
import time
import pygame
import pygame.camera
from pygame.locals import *
import brickpi3
pygame.init() #the error is here
pygame.camera.init()
#brickpi Instanz
BP = brickpi3.BrickPi3()
#Setzen von Variablen
größe = (800,600)
FPS = 60
vorwärts = 0
rückwärts = 0
links = 0
rechts = 0
arm_auf = 0
arm_zu = 0
#Neues Fenster öffnen
fenster = pygame.display.set_mode((größe))
pygame.display.set_caption("Steuerung")
clock = pygame.time.Clock()
#Kamera
cam = pygame.camera.Camera(pygame.camera.list_cameras()[0])
cam.start()
#Hauptprogramm
steuerungaktiv = True
while steuerungaktiv:
#Variable zum Beenden ohne error
keinerror = True
#Überprüfen auf Aktion
for event in pygame.event.get():
#überprüfen auf beenden des Programms
if event.type == QUIT:
steuerungaktiv = False
keinerror = False
kamera.stop()
pygame.quit()
#Steuerung
if event.type == KEYDOWN:
if event.key == K_UP:
vorwärts = 25
elif event.key == K_DOWN:
rückwärts = -25
elif event.key == K_LEFT:
links = 25
elif event.key == K_RIGHT:
rechts = 25
elif event.key == K_RETURN:
arm_zu = -5
elif event.key == K_BACKSPACE:
arm_auf = 5
#Möglichkeit zum beenden über Escape
elif event.key == K_ESCAPE:
steuerungaktiv = False
keinerror = False
kamera.stop()
pygame.quit()
if event.type == KEYUP:
if event.key == K_UP:
vorwärts = 0
elif event.key == K_DOWN:
rückwärts = 0
elif event.key == K_LEFT:
links = 0
elif event.key == K_RIGHT:
rechts = 0
elif event.key == K_RETURN:
arm_zu = 0
elif event.key == K_BACKSPACE:
arm_auf = 0
#Aktionen des Roboters
if keinerror == True:
if vorwärts != 0:
BP.set_motor_power(BP.PORT_A + BP.PORT_B,vorwärts)
elif rückwärts != 0:
BP.set_motor_power(BP.PORT_A + BP.PORT_B,rückwärts)
elif rechts != 0:
BP.set_motor_power(BP.PORT_A,rechts)
elif links != 0:
BP.set_motor_power(BP.PORT_B,links)
elif arm_auf != 0:
BP.set_motor_power(BP.PORT_C,arm_auf)
elif arm_zu != 0:
BP.set_motor_power(BP.PORT_C,arm_zu)
else:
BP.set_motor_power(BP.PORT_A + BP.PORT_B + BP.PORT_C,0)
#aktualisieren des Fensters
if keinerror == True:
snapshot = cam.get_image()
snapshot = pygame.transform.scale(snapshot,(größe))
fenster.blit(snapshot)
pygame.display.update()
clock.tick(FPS)
#Reduzieren der cpu auslastung
time.sleep(0.02)
#Abschalten der Motoren
BP.reset_all()
有人知道如何解决这个问题吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。