0

私はpygameでカメラを使って作業しています。私はこのコードを書きました:

import pygame.camera
import pygame.image
pygame.camera.init()
list_webCam = pygame.camera.list_cameras()

webcam = pygame.camera.Camera(list_webCam[0],(640,480))
webcam.start()
img = webcam.get_image()
pygame.image.save(img, "photo.jpg")
pygame.camera.quit()

しかし、それは私にこのエラーを返します:

Traceback (most recent call last):
  File "C:\Users\Fulvio\Desktop\pygame.Camera.py", line 11, in <module>
    pygame.image.save(img, "photo.jpg")
TypeError: must be pygame.Surface, not None
4

2 に答える 2

0

何らかの理由で、期待したイメージが得られませんでした。このエラーは、"img" オブジェクトが "None" であることを意味します。つまり、 への呼び出しget_imageで期待した結果が得られませんでした。

私が知る限り、カメラを回転させて画像を取得するために必要なすべての呼び出しを行っているため、そこでデバッグを行い、Webcam オブジェクトが何であるかをイントロスペクトして確認し、呼び出してみてください。.get_image()メソッドが返す内容をインタラクティブに観察します。

これを行うには、関連する行を Python コンソールに直接貼り付けるか、「import pdb;」を配置します。pdb.set_trace()" ステートメントを先頭に追加し、Python Debuggerを使用して進めます (このような短いスニペットの場合は、インタープリターに直接貼り付け/入力する方がよいでしょう)。

start設定に問題がない場合は、との呼び出しの間にカメラに「ウォームアップ」時間が必要な場合がありget_imageます。インタラクティブモードを使用して画像を取得する場合は、start呼び出しの後に任意の遅延 (たとえば 200ms) を追加してみてください (pygame.time.delayそのために使用します) 。

また、私が知る限り、pygame は画像を「jpg」にエンコードできません。「bmp」として保存するか、他のライブラリを使用して pygame.Surface オブジェクトを処理し、他の画像形式に保存します。

于 2014-09-07T14:21:16.297 に答える
0

Python 3.5 から 2.7 に移行したところ、同じ問題が発生していました。簡単な検索の後、私はそれを解決しました:get_imageは1つのパラメータが必要です:pygame表面!したがって、これを行うことができます:

import pygame
import pygame.camera
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, "img.jpg")
cam.stop()

img = pygame.Surface((640,480))

cam.get_image(画像)

1年以上経っているのでもう必要ないと思いますが、誰かの役に立てば幸いです。

于 2015-10-19T17:32:49.777 に答える