2016-12-28 2 views
0

Праздники наступают, и я хотел бы использовать некоторое время с малиной Pi 3, которую я получил. Я также получил камеру USB (не малина камеры), поэтому я хотел бы спросить:USB-камера на малине pi

Как я могу получить снимок камеры использовать для последующих обработок (что обработка не важна)

При следующих условиях:

1) В Интернете есть некоторые ресурсы, описывающие загрузку приложений, которые, очевидно, делают то, что я прошу. Меня это не интересует, но на самом деле управление камерой для получения моментального снимка в программе, которую я пишу

2) Программа, которую я хотел бы написать (для получения и обработки pic), может быть в C (или аналогично: C++ и т. д.) или Python. Я открыт для обоих

3) Я не хотел бы использовать OpenCV (я уже получил исходный код для этого, но по личным причинам я предпочитаю не использовать эту функцию)

Любая помощь очень ценится

+0

Вы хотите контролировать RPI через локальную сеть или вам понравится что-то автоматическое (каждый раз, когда RPI включен в промежутке)? – Avoid

+0

Автоматически в порядке. Я не очень беспокоюсь о вещах, таких как сеть или что-то подобное, только о том, как получить изображение с камеры (чтобы позже выполнить мою собственную обработку) – KansaiRobot

ответ

1

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

+0

Спасибо! Я пробовал первый метод, и он работает. Настройки камеры необходимо изменить, я думаю, потому что изображение было голубоватым, но нормально. Единственное, что он создал окно, где я мог видеть изображение, но это окно не могло быть закрыто никакими средствами. (И изображение не сохранилось в других окнах над ним и т. Д.) Удивительно, почему и как закрыть это – KansaiRobot

Смежные вопросы