Way N1:
Это должно работать для питона и Вам не нужно ничего устанавливать дополнительные, но не забудьте обновить и модернизировать с помощью APT-получить:
#!/usr/bin/python
import os
import pygame, sys
from pygame.locals import *
import pygame.camera
width = 640
height = 480
#initialise pygame
pygame.init()
pygame.camera.init()
cam = pygame.camera.Camera("/dev/video0",(width,height))
cam.start()
#setup window
windowSurfaceObj = pygame.display.set_mode((width,height),1,16)
pygame.display.set_caption('Camera')
#take a picture
image = cam.get_image()
cam.stop()
#display the picture
catSurfaceObj = image
windowSurfaceObj.blit(catSurfaceObj,(0,0))
pygame.display.update()
#save picture
pygame.image.save(windowSurfaceObj,'picture.jpg')
Это работает не так быстро и чисто, но работает. Использование pygame - один из классических способов его захвата.
Способ N2:
А вот еще один способ, который нуждается в этой LIB v4l2capture и Вы должны использовать его как это:
import Image
import select
import v4l2capture
# Open the video device.
video = v4l2capture.Video_device("/dev/video0")
# Suggest an image size to the device. The device may choose and
# return another size if it doesn't support the suggested one.
size_x, size_y = video.set_format(1280, 1024)
# Create a buffer to store image data in. This must be done before
# calling 'start' if v4l2capture is compiled with libv4l2. Otherwise
# raises IOError.
video.create_buffers(1)
# Send the buffer to the device. Some devices require this to be done
# before calling 'start'.
video.queue_all_buffers()
# Start the device. This lights the LED if it's a camera that has one.
video.start()
# Wait for the device to fill the buffer.
select.select((video,),(),())
# The rest is easy :-)
image_data = video.read()
video.close()
image = Image.fromstring("RGB", (size_x, size_y), image_data)
image.save("image.jpg")
print "Saved image.jpg (Size: " + str(size_x) + " x " + str(size_y) + ")"
Установка
Для этой библиотеки вам необходимо установить libv4l как sudo apt-get install libv4l
. v4l2capture требует libv4l по умолчанию. Вы можете скомпилировать v4l2capture без libv4l, но это уменьшает поддержку формата изображения для ввода YUYV и только выход RGB.
python-v4l2capture использует distutils.
Для построения: sudo ./setup.py build
Чтобы построить и установить: sudo ./setup.py install
Way N3:
Мой личный путь через сервер Node.js, который дает возможность автоматической и сети.Вот пример моей работы: initalazie_server
Но это без камеры, Вы должны добавить:
var camera = require('v4l2camera');
var cam = new camera.Camera("/dev/video0");
cam.start();
cam.capture(function (success) {
var frame = cam.frameRaw();
fs.createWriteStream("/home/pi/result.jpg").end(Buffer(frame));
});
Объяснение, как установить Node.js здесь: Instalation of node
Вы хотите контролировать RPI через локальную сеть или вам понравится что-то автоматическое (каждый раз, когда RPI включен в промежутке)? – Avoid
Автоматически в порядке. Я не очень беспокоюсь о вещах, таких как сеть или что-то подобное, только о том, как получить изображение с камеры (чтобы позже выполнить мою собственную обработку) – KansaiRobot