Поиск по блогу

понедельник, 12 апреля 2010 г.

OpenCV. Hand detection

Обучил классификатор для обнаружения правой ладони человека. Добавил функционал для управления курсором.

воскресенье, 11 апреля 2010 г.

OpenCV. HaarClassifier

OpenCV. Обнаружение объектов. Haar-классификатор.

 
#include <stdlib.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>

using namespace cv;

/*
 *
 */
int main(int argc, char** argv) {

    Mat frame, gray;
    string face_cascade = "/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml";
    CascadeClassifier haar(face_cascade);
    VideoCapture cap(0);
    namedWindow("Video", 1);
    vector<Rect> objects;

    while (true) {
        cap >> frame;
        cvtColor(frame, gray, CV_BGR2GRAY);

        haar.detectMultiScale(gray, objects, 1.5, 16, 0, Size(32,32));
        for (vector<Rect>::const_iterator r = objects.begin(); r != objects.end(); r++)
            rectangle(frame, r->tl(), r->br(), Scalar(0, 0, 255));

        imshow("Video", frame);

        if (waitKey(33) >= 0) break;
    }

    return (EXIT_SUCCESS);
}

CascadeClassifier haar(face_cascade);

 - создаем объект классификатора, в качестве параметра для конструктора используется имя файла xml-файла с описанием характеристик каскада

vector<Rect> objects;

 - вектор прямоугольников, описывающих области с обнаруженными объектами

cvtColor(frame, gray, CV_BGR2GRAY);

 - конвертируем цветное изображение в черно-белое

haar.detectMultiScale(gray, objects, 1.5, 16, 0, Size(32,32));

 - ищем объекты на изображении gray и сохраняем объекты в вектор objects
        - 1.5 - scale-параметр
        - 16 - минимальное количество соседей
        - 0 - флаги
        - Size(32, 32) - минимальный размер подобласти, с которой начинается поиск объекта

rectangle(frame, r->tl(), r->br(), Scalar(0, 0, 255));

 - рисуем прямоугольник на изображении frame

пятница, 9 апреля 2010 г.

OpenCV. Part 1.

OpenCV. Простое приложение.

Пример простого приложения, выводящего изображение с камеры.

#include <stdlib.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>

using namespace cv;
/*
 * 
 */
int main(int argc, char** argv) {

    Mat frame;
    VideoCapture cap(0);
    namedWindow("Video", 1);
    
    while(true)
    {
        cap >> frame;
        imshow("Video", frame);
        
        if (waitKey(33) >= 0) break;
    }

    return (EXIT_SUCCESS);
}

#include <opencv/cv.h>
#include <opencv/highgui.h>

 - заголовочные файлы для OpenCV

using namespace cv;

 - подключение пространства имен для OpenCV

Mat frame;

 - создаем объект изображения(на самом деле структура сложнее, но для первых программ и так сойдет:))

VideoCapture cap(0); - создаем объект для захвата видео с камеры

namedWindow("Video", 1);

 - определяем именованное окно

cap >> frame;

 - захватываем изображение с камеры и сохраняем в объекте frame

imshow("Video", frame);

 - показываем изображение

if (waitKey(33) >= 0) break;

 - в течение 33 миллисекунд ждем нажатия клавиши, если была нажата какая-нибудь клавиша, то выходим из цикла

Вот простой пример приложения, использующего библиотеку OpenCV. На его основе будем создавать более сложные приложения, но в следующий раз.
Удачи. :)

OpenCV. Introduction

OpenCV. Как и что ?

Во время исследований по моему диплому, связанному с распознаванием образов, на толкнулся на библиотеку OpenCV. Показалась довольно замечательной штукой. Но к сожалению документации по ней на русском языке весьма не густо, поэтому решил начать цикл статей по описанию работы с этой библиотекой. В качестве источника информации пока буду ограничиваться книгой "Learning OpenCV" и документацией по OpenCV с сайта opencv.willowgarage.com.

суббота, 4 апреля 2009 г.

Шифрование файлов

1) GPG

Зашифровать

gpg -c filename

Расшифровать

gpg -d filename.gpg


2) OpenSSL

Зашифровать

openssl bf -in filename -out filename.bf
- bf - алгоритм шифрования

Расшифровать

openssl bf -d -in filename.bf -out filename



3) Mcrypt

Зашифровать

mcrypt -a blowfish filename


Расшифровать

mcrypt -d filename.nc

четверг, 2 апреля 2009 г.

Tools4hack.Ettercap.v0.1

Ettercap

Запуск :
ettercap [опции] TARGET1 TARGET2

TARGET1 - источник
TARGET2 - назначение

Формат TARGETS :
MACs/IPs/PORTs

Опции :
-T, --text - использовать только текстовый интерфейс
-q, --quiet - не отображать содержимое пакетов
-L, --log <> - указание файла логов
-i, --iface <> - указание сетевого интерфейса для прослушивания
-P, --plugin <> - активация плагина
-F, --filter <> - использование фильтров

Примеры :
1) Прослушка пароля

root@m-pc:~# ettercap -Tq

ettercap NG-0.7.3 copyright 2001-2004 ALoR & NaGA

Dissector "dns" not supported (etter.conf line 70)
Listening on eth0... (Ethernet)

eth0 -> 00:09:61:9A:7B:2D 192.168.0.2 255.255.255.0

SSL dissection needs a valid 'redir_command_on' script in the etter.conf file
Privileges dropped to UID 65534 GID 65534...

28 plugins
39 protocol dissectors
53 ports monitored
7587 mac vendor fingerprint
1698 tcp OS fingerprint
2183 known services

Starting Unified sniffing...


Text only Interface activated...
Hit 'h' for inline help

POP : 94.100.177.6:110 -> USER: user_1 PASS: 12345


2) Прослушка определенного порта у определенного хоста


root@m-pc:~# ettercap -Tt tcp // /192.168.0.1/80

ettercap NG-0.7.3 copyright 2001-2004 ALoR & NaGA

Dissector "dns" not supported (etter.conf line 70)
Listening on eth0... (Ethernet)

eth0 -> 00:09:61:9A:7B:2D 192.168.0.2 255.255.255.0

SSL dissection needs a valid 'redir_command_on' script in the etter.conf file
Privileges dropped to UID 65534 GID 65534...

28 plugins
39 protocol dissectors
53 ports monitored
7587 mac vendor fingerprint
1698 tcp OS fingerprint
2183 known services

Randomizing 255 hosts for scanning...
Scanning the whole netmask for 255 hosts...
* |==================================================>| 100.00 %

1 hosts added to the hosts list...
Starting Unified sniffing...


Text only Interface activated...
Hit 'h' for inline help



Fri Apr 3 00:00:43 2009
TCP 192.168.0.2:38137 --> 192.168.0.1:80 | S




Fri Apr 3 00:00:43 2009
TCP 192.168.0.1:80 --> 192.168.0.2:38137 | RA




Fri Apr 3 00:00:43 2009
TCP 192.168.0.2:38138 --> 192.168.0.1:80 | S




Fri Apr 3 00:00:43 2009
TCP 192.168.0.1:80 --> 192.168.0.2:38138 | RA




Fri Apr 3 00:00:46 2009
TCP 192.168.0.2:38142 --> 192.168.0.1:80 | S




Fri Apr 3 00:00:46 2009
TCP 192.168.0.1:80 --> 192.168.0.2:38142 | RA


среда, 26 марта 2008 г.

Немного о GRUB

Коротко о GRUB :
Grub- это универсальный загрузчик ОС.
Загрузчик операционной системы - это программа, расположенная в первых
секторах жесткого диска (далее просто загрузчик), например в MBR
(главная загрузочная запись) жесткого диска. После теста системы, в
момент загрузки, BIOS (базовая система ввода-вывода) передает
управление MBR, если система настроена для загрузки из неё. Затем
программа, расположенная в MBR начинает выполняться. Эта программа
называется загрузчиком, её задача - передать управление ядру
операционной системы, которое продолжит загрузку.

Существуют несколько загрузчиков, включая GNU GRUB (универсальный
загрузчик), Boot manager, LILO (загрузчик ОС Linux), NTLDR (загрузчик
Windows NT систем) и другие.


Простая установка grub в раздел :

# grub
grub>root (hd0,4) #если /boot находится на /dev/hda5
grub>setup (hd0)


Инсталляция GRUB :

Компилим GRUB и ищем файлы

stage1
stage2
*_stage1_5
grub


(Обычно в /usr/share/i386-pc или в /usr/local/share/i386-pc)
Копируем в /boot/grub .

Замечание. GRUB индексирует диски не как система, например /dev/hda5 он определяет как (hd0,4) : hd0 - первый диск, 4 - пятый раздел на диске.

Запускаем grub :

# /boot/grub/grub
grub>


Инсталлим файлы :


grub> install (hd0,4)/boot/grub/stage1 (hd0) \
(hd0,4)/boot/grub/stage2 p (hd0,4) /boot/grub/menu.conf


/boot/grub/menu.conf - конфигурационный файл для отображения меню

Инсталляция GRUB на дискету :

# dd if=stage1 of=/dev/fd0 bs=512 count=1
# dd if=stage2 of=/dev/fd0 bs=512 seek=1

if = input file
of = output file
bs = byted to read and write
count = number of copies
seek = сколько раз пропустить по bs байт прежде чем записать (предохраняет от стирания stage1)

Конфигурация GRUB :

Загрузка из GRUB :

grub> root (hd0,4)
grub> kernel /boot/kernel.img root=/dev/hda5
grub> boot

kernel.img - образ ядра

Конфигурация menu.conf :

title Linux OC
root (hd0,4)
kernel /boot/kernel.img root=/dev/hda5
boot