如何在 rpi3 上通过 python 运行 网络摄像头
how to run webcam through python on rpi3
我正在尝试将 MS lifecam 与我的 raspberry-pi-3 结合使用。当我输入以下命令时,它在命令行上工作:
$ fswebcam img.jpg
Trying source module v4l2...
/dev/video0 opened.
...
Writing JPEG image to 'img.jpg' # this works fine
现在我想运行相机通过python代码:
import pygame
import pygame.camera
from pygame.locals import *
DEVICE = '/dev/video0'
SIZE = (640, 480) # I also tried with img size (384,288), same error
FILENAME = 'capture.jpg'
pygame.init()
pygame.camera.init()
camera = pygame.camera.Camera(DEVICE, SIZE)
camera.start() # error on executing this line
pygame.image.save(screen, FILENAME)
camera.stop()
报告的错误是:
SystemError: ioctl(VIDIOC_S_FMT) failure: no supported formats
这里我很疑惑。摄像头由 rasp-pi 支持,所以看起来我的 python 代码必须在某处更新。你能帮忙吗?
尝试使用这个:
camera = pygame.camera.Camera(pygame.camera.list_cameras()[0])
camera.start()
img = camera.get_image()
pygame.image.save(img, FILENAME)
有问题,一旦我停止使用视频流的进程,错误就解决了。
详情
我遇到了同样的问题。而
/dev/video0
被列出,camera.start() 导致同样的错误。
我有运行
sudo motion
早些时候。所以我验证了该服务 运行,将其停止,然后尝试 pygame。它奏效了。
sudo service --status-all
sudo service motion stop
你也可以使用这个:
import cv2
cv2.namedWindow("preview")
vc = cv2.VideoCapture(0)
if vc.isOpened():
rval, frame = vc.read()
else:
rval = False
while rval:
cv2.imshow("preview", frame)
rval, frame = vc.read()
key = cv2.waitKey(20)
if key == 27: # exit on ESC
break
cv2.destroyWindow("preview")
我正在尝试将 MS lifecam 与我的 raspberry-pi-3 结合使用。当我输入以下命令时,它在命令行上工作:
$ fswebcam img.jpg
Trying source module v4l2...
/dev/video0 opened.
...
Writing JPEG image to 'img.jpg' # this works fine
现在我想运行相机通过python代码:
import pygame
import pygame.camera
from pygame.locals import *
DEVICE = '/dev/video0'
SIZE = (640, 480) # I also tried with img size (384,288), same error
FILENAME = 'capture.jpg'
pygame.init()
pygame.camera.init()
camera = pygame.camera.Camera(DEVICE, SIZE)
camera.start() # error on executing this line
pygame.image.save(screen, FILENAME)
camera.stop()
报告的错误是:
SystemError: ioctl(VIDIOC_S_FMT) failure: no supported formats
这里我很疑惑。摄像头由 rasp-pi 支持,所以看起来我的 python 代码必须在某处更新。你能帮忙吗?
尝试使用这个:
camera = pygame.camera.Camera(pygame.camera.list_cameras()[0])
camera.start()
img = camera.get_image()
pygame.image.save(img, FILENAME)
有问题,一旦我停止使用视频流的进程,错误就解决了。
详情
我遇到了同样的问题。而
/dev/video0
被列出,camera.start() 导致同样的错误。
我有运行
sudo motion
早些时候。所以我验证了该服务 运行,将其停止,然后尝试 pygame。它奏效了。
sudo service --status-all
sudo service motion stop
你也可以使用这个:
import cv2
cv2.namedWindow("preview")
vc = cv2.VideoCapture(0)
if vc.isOpened():
rval, frame = vc.read()
else:
rval = False
while rval:
cv2.imshow("preview", frame)
rval, frame = vc.read()
key = cv2.waitKey(20)
if key == 27: # exit on ESC
break
cv2.destroyWindow("preview")