python pygame.camera.init() 没有视频捕获
Posted
技术标签:
【中文标题】python pygame.camera.init() 没有视频捕获【英文标题】:python pygame.camera.init() NO vidcapture 【发布时间】:2013-04-28 18:30:21 【问题描述】:我正在尝试在 pygame 中初始化摄像头模块并显示来自 USB 网络摄像头的视频。这是我的代码:
import pygame
import pygame.camera
from pygame.camera import *
from pygame.locals import *
pygame.init()
pygame.camera.init()
cam = pygame.camera.Camera("/dev/video0",(640,480))
cam.start()
image = cam.get_image()
但我得到了这个错误:
Traceback (most recent call last):
File "C:/Users/Freddie/Desktop/CAMERA/Test1.py", line 7, in <module>
pygame.camera.init()
File "C:\Python27\lib\site-packages\pygame\camera.py", line 67, in init
_camera_vidcapture.init()
File "C:\Python27\lib\site-packages\pygame\_camera_vidcapture.py", line 21, in init
import vidcap as vc
ImportError: No module named vidcap
请帮忙!!!我在 Windows 上
【问题讨论】:
... 我们应该说什么?错误很明显:找不到模块vidcap
。你安装了吗?你是怎么安装的?如果没有这些信息,我们应该如何告诉您安装有什么问题?
来自 pygame.camera 文档:Pygame currently supports only Linux and v4l2 cameras.
pygame.org/docs/ref/camera.html 但是文档可能已经过时了。
【参考方案1】:
我遇到了同样的问题。 “ImportError: No module named vidcap”的错误信息表明python解释器没有找到你机器上的vidcap模块。
所以你最好按照这些步骤。
-
从http://videocapture.sourceforge.net/下载vidcap
2.然后将对应版本的dll(VideoCapture-0.9-5\VideoCapture-0.9-5\Python27\DLLs中名为“vidcap.pyd”)复制到“你的python路径”\DLLs\中。
3.重启你的脚本。
完成!。
【讨论】:
【参考方案2】:摄像头模组只能在linux上使用
【讨论】:
【参考方案3】:我遇到了同样的问题,但我发现它不包含在 Windows ONLY LINUX 中
【讨论】:
【参考方案4】:试试这个:
import pygame
import pygame.camera
import time, string
from VideoCapture import Device
from pygame.locals import *
pygame.camera.init()
cam = pygame.camera.Camera(0,(640,480),"RGB")
cam.start()
img = pygame.Surface((640,480))
cam.get_image(img)
pygame.image.save(img, "img2.jpg")
cam.stop()
【讨论】:
【参考方案5】:pygame.camera
仅在 linux 上受支持:
Pygame 目前仅支持 Linux 和 v4l2 相机。
另一种解决方案是使用OpenCV VideoCapture
。为 Python (cv2) 安装 OpenCV(参见 opencv-python)。
打开摄像头进行视频拍摄:
capture = cv2.VideoCapture(0)
抓取一个相机帧:
success, camera_image = capture.read()
使用pygame.image.frombuffer
将相机帧转换为pygame.Surface
对象:
camera_surf = pygame.image.frombuffer(
camera_image.tobytes(), camera_image.shape[1::-1], "BGR")
另见Camera and Video
小例子:
import pygame
import cv2
capture = cv2.VideoCapture(0)
success, camera_image = capture.read()
window = pygame.display.set_mode(camera_image.shape[1::-1])
clock = pygame.time.Clock()
run = success
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
success, camera_image = capture.read()
if success:
camera_surf = pygame.image.frombuffer(
camera_image.tobytes(), camera_image.shape[1::-1], "BGR")
else:
run = False
window.blit(camera_surf, (0, 0))
pygame.display.flip()
pygame.quit()
exit()
【讨论】:
以上是关于python pygame.camera.init() 没有视频捕获的主要内容,如果未能解决你的问题,请参考以下文章