Система идентификации личности по отпечаткам пальцев

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



?ЕКСТ МОДУЛЯ Resource.h

//{{NO_DEPENDENCIES}}

// Microsoft Visual C++ generated include file.

// Used by FingerAnalyser.rc

//

#define IDM_ABOUTBOX 0x0010

#define IDD_ABOUTBOX 100

#define IDS_ABOUTBOX 101

#define IDD_FINGERANALYSER_DIALOG 102

#define IDR_MAINFRAME 128

#define IDR_TOOLBAR 130

#define IDI_FING_ICON 135

#define IDR_MENU1 138

#define IDC_OPEN_FILE 1000

#define IDC_ANALYSE 1001

#define IDC_COMPARE 1002

#define IDC_EXIT 1003

#define IDC_SAVE_TO_DB 1004

#define IDC_SPEC_DOT 1005

#define IDC_LOAD_PROGRESS 1006

#define IDC_WORK_FILE 1007

#define IDC_LOAD_COMPARE_PROGRESS 1008

#define IDC_TEMESCAN 1009

#define IDC_BUTTON_PREV 1012

#define IDC_BUTTON_NEXT 1013

#define IDC_SHOW_BASE 1014

#define IDC_EDIT1 1015

#define ID_BASE 32771

#define ID_PROPERTY 32772

// Next default values for new objects

//

#ifdef APSTUDIO_INVOKED

#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_NEXT_RESOURCE_VALUE 139

#define _APS_NEXT_COMMAND_VALUE 32774

#define _APS_NEXT_CONTROL_VALUE 1016

#define _APS_NEXT_SYMED_VALUE 101

#endif

#endif

П.1.6. ТЕКСТ МОДУЛЯ FingAnalyser.h

// FingerAnalyser.h : main header file for the PROJECT_NAME application

//

#pragma once

#ifndef __AFXWIN_H__

#error include stdafx.h before including this file for PCH

#endif

#include "resource.h"// main symbols

// CFingerAnalyserApp:

// See FingerAnalyser.cpp for the implementation of this class

//

class CFingerAnalyserApp : public CWinApp

{

public:

CFingerAnalyserApp();

// Overrides

public:

virtual BOOL InitInstance();

// Implementation

DECLARE_MESSAGE_MAP()

};

extern CFingerAnalyserApp theApp;

П.1.7. ТЕКСТ МОДУЛЯ FingAnalyser.cpp

// FingerAnalyser.cpp : Defines the class behaviors for the application.

//

#include "stdafx.h"

#include "FingerAnalyser.h"

#include "FingerAnalyserDlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// CFingerAnalyserApp

BEGIN_MESSAGE_MAP(CFingerAnalyserApp, CWinApp)

ON_COMMAND(ID_HELP, CWinApp::OnHelp)

END_MESSAGE_MAP()

// CFingerAnalyserApp construction

CFingerAnalyserApp::CFingerAnalyserApp()

{

// TODO: add construction code here,

// Place all significant initialization in InitInstance

}

// The one and only CFingerAnalyserApp object

CFingerAnalyserApp theApp;

// CFingerAnalyserApp initialization

BOOL CFingerAnalyserApp::InitInstance()

{

CWinApp::InitInstance();

// Standard initialization

// If you are not using these features and wish to reduce the size

// of your final executable, you should remove from the following

// the specific initialization routines you do not need

// Change the registry key under which our settings are stored

// TODO: You should modify this string to be something appropriate

// such as the name of your company or organization

SetRegistryKey(_T("Local AppWizard-Generated Applications"));

CFingerAnalyserDlg dlg;

m_pMainWnd = &dlg;

INT_PTR nResponse = dlg.DoModal();

if (nResponse == IDOK)

{

// TODO: Place code here to handle when the dialog is

// dismissed with OK

}

else if (nResponse == IDCANCEL)

{

// TODO: Place code here to handle when the dialog is

// dismissed with Cancel

}

// Since the dialog has been closed, return FALSE so that we exit the

// application, rather than start the applications message pump.

return FALSE;

}

П.1.8 ТЕКСТ МОДУЛЯ TAnalysePicture.h

#pragma once

#include "TFingPicture.h"

//MESSAGEOUT отображать отладочную информацию с помощью popup окон

//#define MESSAGEOUT true

#define MESSAGEOUT false

#define OUT_FILE "fingAnalyserOut.txt"//файл отчет

#define BLANK "blank.bmp"//пустое изображение

///////////////////////////////////////////////////////////////////////////////////

//важные параметры для обхода изображения

#define LEN_S 3//длина малого вектора (LEN_S точек)

#define LEN_L 4//длина большого вектора (LEN_L малых векторов)

#define KOL_L 2//необходимое количество больших векторов

#define KOL_S LEN_L*KOL_L//необходимое количество точек

#define TEST_ALPHA 130.0//тест на разворот вектора. Указывается угол в градусах

///////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////

// Класс АНАЛИЗА ИЗОБРАЖЕНИЯ

///////////////////////////////////////////////////////////////////////////////////

class TAnalysePicture

{

private:

TFingPicture *pic;//Собственно сама картинка

TFingPicture *tmpPic;//копия картинки

TFingPicture *pic2;//изображение для отображения в окне

int height, width;//высота и ширина изображения

CString srcImg;//путь к изображению

int err;//Код состояния картинки

TInfo info;//сопроводительная информация

private:

int ChangeLine(list &_map);//Обработка картинки, ее изменение

TAbsFing ReadPic(list::iterator _dot);//Нахождение на изображении спец точек

list LookPic();//Сканирование картинки и нахождение линий на ней

inline double GetAlpha(const CPoint A, const CPoint B);//Направлени из точки А в В [-pi,pi)

inline double GetS(CPoint A, CPoint B);//растояние между точками

CPoint FindAcceptDot(CPoint dot, double alpha, bool type);//Поиск продолжения из окончания/раздвоения

bool TestFindDot(int _x, int _y);//тест точки: Разность направлений вперед и назад должно быть меньше 110 градусов

double ChangeAlphaInterval(double _alpha);//Приведение итрервала к [-pi,pi)

int DotsFilter(TAbsFing &_dots);

/*Фильтрование полученных точек отсеиваются близкостоящие направленные в противоположные строки

а так же точки слева и справа от которых нет линий*/

bool LeftDot(TAbsFing::iterator &iter);

/*Если точка является окончанием, то слева и справа от нее должны быть линии если это не так, то точку нужно исключить из дальнейшего анализа*/

public:

TAnalysePicture(const CString src, CDC *screen);

~TAnalysePicture(void);

int getErr();

CString getErrMsg();

CString getPathSrc(){return srcImg;};

TAbsFing AnalysePicture();//Обработка загруженного изображения и получение образа

bool Show(int x, int y, int xt=-1, int yt=-1);

TFingPicture *GetPic1();

TFingPicture *GetPic2();

};

П.1.9 ТЕКСТ МОДУЛЯ TAnalysePicture.cpp

#include "StdAfx.h"

#include "TAnalysePicture.h"

TAnalysePicture::TAnalysePicture(const CString src, CDC *screen)

{

pic = new TFingPicture(screen);

err = -1;

if(!pic->Load(src)) err = 0;

pic->Rectangle(CPoint(0, 0), pic->GetSize(), 10);

srcImg = src;

tmpPic = new TFingPicture(screen);

tmpPic->Load(src);

pic2 = new TFingPicture(screen);

pic2->Load(BLANK);

}

TAnalysePicture::~TAnalysePicture(void)

{

delete(tmpPic);

delete(pic2);

delete(pic);

}

//Код ошибки

int TAnalysePicture::getErr()

{

return err;

}

//Сообщение ошибки

CString TAnalysePicture::getErrMsg()

{

CString msg = "";

switch (err)

{

case -1: {msg = "Ошибок при загрузке изображения нет"; break;}

case 0: {msg = "Изображение не загружено"; break;}

case 1: {msg = "Возникла ошибка при загрузке изображения"; break;}

default: {msg = "Нераспознанная ошибка";}

}

return msg;

}

// Обработка загруженного изображения и п