воскресенье, 1 мая 2011 г.

OpenCV, захват WEB камеры используя Python под Ubuntu

Необходимо было выполнять фотоснимки фотоаппаратом автоматизировано.
Решено было делать используя Питон. Нашли модуль pycanon, но он оказался только под Windows. Пробывали утилиту gphoto2, которая должна управлять фотокамерами, ничего не получилось. Решили, что для наших нужд подойдёт качественная WEB камера. Находил, много решений снятия изображения с камеры, но наткнулся на OpenCV. Мне очень понравилось его исполнение, очень мощный, охватывает почти все аспекты обработки потокового видео, изображений. Вот пример, который заработал, от которого будем отталкиваться.

import os
import opencv.adaptors
from opencv import highgui 

#Получаем изображение с камеры
def get_image(camera):
    #highgui. GUI и Media IO высшего уровня.
    #Захватывает и возвращает экран с камеры, или файла.
    im = highgui.cvQueryFrame(camera)
    #Возвращает загаловок произвольного массива.
    im = opencv.cvGetMat(im)
    #Конвертируем изображения с  Ipl image в PIL
    return opencv.adaptors.Ipl2PIL(im)

im=None
#Инициализируем структуру CvCapture для чтения с камеры.
camera= highgui.cvCreateCameraCapture(0)
im = get_image(camera)
os.chdir("~")
fname='image_webcamera.png'
#Сохраняем изображение.
im.save(fname, "PNG")

   
    

3 комментария:

  1. Скажите, а привязка OpenCV + Python, работает для Python2 или Python3 или для Python2 и Python3 одновременно?

    ОтветитьУдалить
  2. Данный пример работал под Python2.5 под Ubuntu. Python 3.0 - очень неудобный в плане расширений. Советую Использовать Python2.7, Ubuntu тоже советует - по умолчанию, Google App Engine готовит поддержку Python2.7, хотя когда-то заявлялась поддержка Python3.0.

    Модуль который мспользовался в данном коде является обёрткой OpenCV библиотеки. Не знаю как поведёт себя под другими платформами ...

    ОтветитьУдалить