6

我正在尝试在 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 上

4

5 回答 5

6

我遇到了同样的问题。“ImportError: No module named vidcap”的错误信息表明 python 解释器没有在你的机器上找到 vidcap 模块。

所以你最好按照这些步骤。

  1. 从http://videocapture.sourceforge.net/下载 vidcap

2.然后将对应版本的dll(在VideoCapture-0.9-5\VideoCapture-0.9-5\Python27\DLLs中名为“vidcap.pyd”)复制到“你的python路径”\DLLs\。

3.重启你的脚本。

完毕!。

于 2013-06-20T08:33:56.640 回答
3

摄像头模块只能在linux上使用

于 2013-09-05T21:11:01.750 回答
2

我遇到了同样的问题,但我发现它不包含在 Windows ONLY LINUX

于 2013-08-29T23:35:59.423 回答
0

尝试这个:

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()
于 2015-12-16T17:16:21.270 回答
0

pygame.camera仅在 linux 上受支持:

Pygame 目前仅支持 Linux 和 v4l2 相机。

另一种解决方案是使用OpenCVVideoCapture。安装 OpenCV for Python ( cv2 ) (参见opencv-python )。

打开摄像头进行视频捕捉:

capture = cv2.VideoCapture(0)

抓取一个相机帧:

success, camera_image = capture.read()

使用以下方法将相机帧转换为pygame.Surface对象pygame.image.frombuffer

camera_surf = pygame.image.frombuffer(
              camera_image.tobytes(), camera_image.shape[1::-1], "BGR")

另请参阅相机和视频


最小的例子:

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()
于 2021-09-04T09:10:45.453 回答