Улучшение и навороты веб-камеры

Автор: , 18/12/10 • Рубрика: Сделай сам
Метки:

Пример watermark (водяного знака)

Пример watermark (водяного знака)

На этой страничке я хотел бы рассказать Вам о некоторых наворотах для веб-камеры — водяном знаке и избавлении от не до конца загруженного изображения. Всё что я описываю я делал лично на своей веб-камере.

1. Первое о чем хочу рассказать — наложение водяного знак. Водяной знак — это полупрозрачный (а может и совсем не прозрачный)  логотип/надпись/символ который накладывается на изображение с целью его защиты от копирования,  добавления информации или рекламы.


В своем рассказе о том, как сделать веб-камеру я упоминал о том, что использую shell скрипт для подгрузки изображения — посему и наложение watermark (водяного знака) на изображение я делал через командную оболочку сервера и набор программ ImageMagik. Большинство *nix серверов уже содержат данный дистрибутив, а если нет, то установка займет пару минут.

Сам код наложения занимает всего одну строчку:

composite /dir1/dir2/logo.png -gravity SouthWest /dir1/img2.jpg /dir1/img3.jpg

Теперь поясню:

  • composite — это утилита из набра ImageMagik которая служит для наложения одного изображения на другое
  • -gravity — параметр указывающий положение накладываемого изображения (может задоваться в пикселах, а может и в направлениях, например SouthWest — нижний левый угол)
  • /dir1/dir2/logo.png — изображение логотипа (последние версии ImageMagik понимают png 24)
  • /dir1/img2.jpg — изображение на которое накладывается водяной знак
  • /dir/img3.jpg — конечное смещенное изображение

Кстати с помощью ImageMagik можно создавать различные эффекты и манипуляции с изображением, это мини фотошоп через командную строку ))  Обширные инструкции тут

2. Второе о чем хочу рассказать — неполная загрузка изображений. С этой проблемой с столкнулся сразу же после запуска веб-камеры…примерно 30% кадров были неполными! При установлении большой частоты обновления изображения с камеры (2-3 секунды) начала выскакивать проблема, что изображение не успевало загрузиться или пройти наложение водяного знака, когда к нему уже начинал обращаться браузер.

Проблема с загрузкой изображения с веб-камеры

Проблема с загрузкой изображения с веб-камеры

Установлением меньшей частоты обновления эта проблема не решается т.к. всегда есть вероятность подключения нового пользователя именно в момент наложения водяного знака или загрузки. Решается эта проблема в три действия:

1 — получаем изображение с камеры и пишем его во временный файл например img2.jpg
2 — накладываем водяной знак на временное изображение и пишем во второй временный файл img3.jpg
3 — перезаписываем (делаем копию) файл вывадимый на сайте img.jpg временныйм изображением img2.jpg

Копирование фала занимает доли секунды поэтому при запросе изображения с сайта изображение всегда целое. Кстати, спасибо за помощь — kibizoid.

Понравилась статья?


Подпишитесь на RSS-ленту и получайте еще больше новой информации!

Отзывов (5) на «Улучшение и навороты веб-камеры»

  1. Максим пишет 11.01.2011 в 15:51 #

    Жестоко как-то делать это все на PHP, тем более грузить картинку с камеры каждую секунду.
    Связь между сервером и камерой по инету? Что делает скрипт когда отваливается инет или Вы это тоже учли?

  2. Alex пишет 11.01.2011 в 19:35 #

    Хехе…тут ни слова про PHP нету — тут всё на шеле!
    А на PHP это действительно гемор — этот момент обсуждали в комментариях к другой статье — http://lifewatch.ru/2010/kak-sdelat-web-kameru-camera

  3. Roman пишет 17.08.2011 в 20:56 #

    Спасибо за идею. у меня на сайте тоже была организивана трансляция с такой же камеры напрямую. камера часто не выдержывала нагрузок.
    сделал Вашим методом — нормально, но поставил задержку 1с и иногда не успевает все же загрузится картинка с камеры на сервер целиком.
    хотелось бы увидеть ваш скрипт загрузки и обработки.

  4. Roman пишет 17.08.2011 в 21:39 #

    Вот мой код
    #!/bin/sh
    while :
    do
    /usr/local/bin/wget -bq -O /data/uploads/camera/img1.jpg http://IP/image.jpg
    sleep 1
    /usr/local/bin/convert -resize 200×150 /data/uploads/camera/img1.jpg /data/uploads/webcam.jpg
    composite /data/uploads/camera/watermark.png -gravity SouthWest /data/uploads/camera/img1.jpg /data/uploads/camera/img2.jpg
    cp /data/uploads/camera/img2.jpg /data/uploads/camera/img3.jpg
    done

  5. Alex пишет 19.08.2011 в 8:19 #

    Рад, что помог )))
    Да, скрипт — такой же. Не полная загрузка — именно из за задержки в 1 секунду.

Адрес для трекбека | Comments RSS

Добавить комментарий