Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет СКУД Вихман.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.42 Mб
Скачать

Приложение 4. Руководство пользователя программы “Bank”

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ПРОГРАММЫ “BANK”

1. УСТАНОВКА ПО

1.1 Минимальные системные требования

  • Центральный процессор: Intel Pentium

  • Объём оперативной памяти: не менее 256Mb

  • Объём свободного дискового пространства не менее: 12Mb

  • Операционная MS Windows 2000 или старше.

1.2 Установка ПО Bank

  • Вставьте компакт-диск с программным обеспечением в CD-ROM

  • Скопировать программу с компакт-диска в нужную директорию

  • Программа готова к использованию

2. РАБОТА С ПО “BANK”

Для начала работы с программой необходимо запустить файл Project.exe. При запуске программы откроется следующее окно.

Рисунок П4-1. Интерфейс программы BANK

2.1 Добавление пользователя в БД

В окне программы Bank нажмите кнопку «Получить изображение». Для повышения точности идентификации необходимо занести в БД не менее 3 изображений, с целью создания более точной модели.

2.2 Идентификация пользователя

Для идентификации пользователя необходимо нажать кнопку «Сравнить с БД». В итоге при ее нажатии в левом нижнем углу появится захваченное текущее изображение, а снизу по центру – изображения, наиболее похожие на текущее, имеющиеся в БД. По нему охранник и производит идентификацию.

2.3 Интерфейс программы

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

2.4 Работа с БД

Для работы с БД необходимо вручную зайти в папку Faces и удалить или перенести в нужную папку файлы изображений.

Приложение 5. Листинг программы

Листинг модуля сохранения в БД:

void __fastcall TForm1::Button2Click(TObject *Sender)

{

IplImage* test_img;

test_img = cvCreateImage( cvSize(mini->width,mini->height), IPL_DEPTH_8U, 1 ); //создание изображения

cvCopy(mini,test_img,0);

int i=1;

AnsiString str;

while(1)

{

str=i;

str+=".pgm";

if(FileExists(str.c_str())){

i++;

continue;

}

cvSaveImage(str.c_str() ,test_img); //сохранение изображения

break;

}

cvReleaseImage( &test_img);

}

Листинг модуля идентификации лица:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

const unsigned int N_People=40; // Количество людей в БД

const unsigned int N_Samples=3; // Количество снимков на одного человека

IplImage* img_load;

IplImage* img_load_ch1[N_Samples];

IplImage* test_img;

CvEHMM **Ehmms;

Ehmms=new CvEHMM* [N_People];

CvSize size;

// Загрузка лиц и обучение

for (int j=0;j<N_People;j++)

{ //Загружаем набор фотографий для 1 человека и обучаем

for (int i=0;i<N_Samples;i++) // Цикл по фотографиям

{

img_load = cvLoadImage(("faces//s"+IntToStr(j+1)+"//"+IntToStr(i+1)+".pgm").c_str());

size=cvSize(img_load->width,img_load->height);

img_load_ch1[i] = cvCreateImage( size, IPL_DEPTH_8U, 1 );

cvSplit(img_load,img_load_ch1[i],NULL,NULL,NULL);

}

Ehmms[j]=Train(img_load_ch1,N_Samples);

}

// Полученное изображение

test_img = cvCreateImage( cvSize(mini->width,mini->height), IPL_DEPTH_8U, 1 );

cvCopy(mini,test_img,0);

APIDrawIpl(10 ,550,test_img,Form1->Handle);

// Проверка

float *likehood;

likehood = new float[N_People];

for ( j=0;j<N_People;j++) // Цикл по разным людям

likehood[j] = ComputeLikelihood(test_img,*Ehmms[j]); //вычисляем значение совпадения

float max=likehood[0];

int nmax=0;

for ( j=1;j<N_People;j++)

if(max<likehood[j]){max=likehood[j];nmax=j;}

delete likehood;

j=nmax;

for ( int i=0;i<N_Samples;i++) // Цикл по фото

{

img_load = cvLoadImage(("faces//s"+IntToStr(j+1)+"//"+IntToStr(i+1)+".pgm").c_str());

size=cvSize(img_load->width,img_load->height);

img_load_ch1[i] = cvCreateImage( size, IPL_DEPTH_8U, 1 );

cvSplit(img_load,img_load_ch1[i],NULL,NULL,NULL);

APIDrawIpl(10+(size.width+10)*i+200,550,img_load,Form1->Handle);

}

cvReleaseImage( &test_img);

}

27