亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mainfrm.cpp

?? 基于隱馬爾可夫模型的人臉識別源代碼,是作模式識別的最好學習代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*M///////////////////////////////////////////////////////////////////////////////////////
//
//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
//  By downloading, copying, installing or using the software you agree to this license.
//  If you do not agree to this license, do not download, install,
//  copy or use the software.
//
//
//                        Intel License Agreement
//                For Open Source Computer Vision Library
//
// Copyright (C) 2000, Intel Corporation, all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
//   * Redistribution's of source code must retain the above copyright notice,
//     this list of conditions and the following disclaimer.
//
//   * Redistribution's in binary form must reproduce the above copyright notice,
//     this list of conditions and the following disclaimer in the documentation
//     and/or other materials provided with the distribution.
//
//   * The name of Intel Corporation may not be used to endorse or promote products
//     derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "HMMDemo.h"

#include "MainFrm.h"
#include "HMMDemoDoc.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#include "highgui.h"
extern CHMMDemoApp theApp;
extern CStringArray maskFileNameArray;
/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
    //{{AFX_MSG_MAP(CMainFrame)
    ON_WM_CREATE()
    ON_UPDATE_COMMAND_UI(ID_CAPTURE, OnUpdateCapture)
    ON_COMMAND(ID_CAPTURE, OnCapture)
    ON_UPDATE_COMMAND_UI(ID_CAPOPTIONS, OnUpdateCapOptions)
    ON_COMMAND(ID_CAPOPTIONS, OnCapOptions)
    ON_UPDATE_COMMAND_UI(ID_CAPFORMAT, OnUpdateCapFormat)
    ON_COMMAND(ID_CAPFORMAT, OnCapFormat)
    ON_COMMAND(ID_ADD_OBJ, OnAddObj)
    ON_UPDATE_COMMAND_UI(ID_ADD_OBJ, OnUpdateAddObj)
    ON_COMMAND(ID_REMOVE_OBJ, OnRemoveObj)
    ON_UPDATE_COMMAND_UI(ID_REMOVE_OBJ, OnUpdateRemoveObj)
	ON_COMMAND(ID_ZOOMIN, OnZoomIn)
    ON_COMMAND(ID_ZOOMOUT, OnZoomOut)
	ON_COMMAND(ID_SETINFO, OnChangeBaseParams)
	ON_COMMAND(ID_TRAIN, OnTrain)
    ON_UPDATE_COMMAND_UI(ID_TRAIN, OnUpdateTrain)
	ON_COMMAND(ID_RECOG, OnRecognize)
	ON_UPDATE_COMMAND_UI(ID_RECOG, OnUpdateRecog)
	ON_COMMAND(ID_SELECTALL, OnSelectAll)
	ON_COMMAND(ID_DEL_HMM, OnDelHmm)
	ON_COMMAND(ID_ADD_TEST, OnAddTest)
	ON_UPDATE_COMMAND_UI(ID_ADD_TEST, OnUpdateAddTest)
	ON_COMMAND(ID_TEST_FOLDER, OnTestFolder)
	ON_COMMAND(ID_RECOBASE, OnRecobase)
	ON_UPDATE_COMMAND_UI(ID_RECOBASE, OnUpdateRecobase)
	ON_COMMAND(ID_SETTINGS, OnSettings)
	ON_COMMAND(ID_Single_Directory_DO, OnSingleDirectoryDO)
	ON_COMMAND(ID_All_Directorys_DO, OnAllDirectorysDO)
	ON_COMMAND(ID_CAPTURE_BMP, OnCaptureBmp)
	ON_COMMAND(ID_CAPTURE_MANY_BMPS, OnCaptureManyBmps)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
    m_busy = FALSE;
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
        return -1;

    if( !m_wndToolBar.CreateEx(this) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
        return -1;

    if( !m_wndReBar.Create(this) ||
        !m_wndReBar.AddBar(&m_wndToolBar))
        return -1;

    if (!m_wndStatusBar.Create(this) ||
        !m_wndStatusBar.SetIndicators(indicators,
        sizeof(indicators)/sizeof(UINT)))
        return -1;
    
    m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
        CBRS_TOOLTIPS | CBRS_FLYBY);

    return 0;
}


BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
                                CCreateContext* pContext)
{
    m_wndSplitter.CreateStatic(this,1,2);
    
    m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CImageBaseView),CSize(300,100),pContext);
    m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CHMMDemoView),CSize(300,100),pContext);
//    m_wndSplitter.CreateView(0,2,RUNTIME_CLASS(CTestImageBaseView),CSize(300,100),pContext);
   
    return TRUE;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;

	return TRUE;
}

CImageBaseView* CMainFrame::GetImageBaseView()
{
    return (CImageBaseView*)m_wndSplitter.GetPane(0,0);
}

CHMMDemoView* CMainFrame::GetCameraView()
{
    return (CHMMDemoView*)m_wndSplitter.GetPane(0,1);
}


void CMainFrame::OnUpdateCapture(CCmdUI* pCmdUI) 
{
    CHMMDemoView* view = GetCameraView();
    bool enable = false;
    bool press = false;

    if( view )
    {
        enable = view->Camera().IsInitialized();
        press = view->Camera().IsRunning();
    }

    pCmdUI->Enable( enable );
    pCmdUI->SetCheck( press );
}

void CMainFrame::OnCapture() 
{
    CHMMDemoView* view = GetCameraView();

    if( view && view->Camera().IsInitialized())
    {
        if( view->Camera().IsRunning())
        {
            view->Camera().Stop();
        }
        else
        {
            view->SetImageList(0);
            view->Camera().Start();
        }
    }    
}

void CMainFrame::OnUpdateCapOptions(CCmdUI* pCmdUI) 
{
    CHMMDemoView* view = GetCameraView();
    pCmdUI->Enable( view != 0 );
}

void CMainFrame::OnCapOptions() 
{
    CHMMDemoView* view = GetCameraView();

    if( view )
    {
        view->Camera().VideoSourceDlg();
        view->InvalidateRect(0);
    }
}

void CMainFrame::OnUpdateCapFormat(CCmdUI* pCmdUI) 
{
    CHMMDemoView* view = GetCameraView();
    pCmdUI->Enable( view != 0 );
}

void CMainFrame::OnCapFormat() 
{
	CHMMDemoView* view = GetCameraView();

    if( view )
    {
        view->Camera().VideoFormatDlg();
        view->InvalidateRect(0);
    }
}


void CMainFrame::OnUpdateAddObj(CCmdUI* pCmdUI) 
{
    CHMMDemoView* view = GetCameraView();
    bool enable = false;

    if( view )
    {
        enable = !view->GetSelection().IsRectEmpty();
    }
    pCmdUI->Enable( enable );
}


void CMainFrame::OnAddObj() 
{
    CHMMDemoView* view = GetCameraView();
    CHMMDemoDoc* doc = GetHMMDoc();

    if( view && doc )
    {
        CCamera& camera = view->Camera();
        camera.Stop();
        doc->AddObj( camera.GetFrame(), view->GetSelection(), view->GetImageList() );
        camera.Start();
    }
}

//try to write new file to directory 
CString GetFreeFilename( CString folder, CString base_name )
{   
    int i = 0;
    CString full_name;
    
    for(;;)
    {
        FILE* f = 0;
        for( ; i < 10000; i++ )
        {     
            
            //GetPersonFullImageName( m_folder, m_folder.GetLength(), filename, path );
            full_name.Format( "%s\\%s%04d.bmp", folder, base_name, i );
            f = fopen( full_name, "rb" );
            if( !f ) break;
            fclose(f);
        }
        if( i == 10000 )
        {
            ASSERT(0); //so many images already exist
            return CString("");
        }
        
        // try to open for writing. If success, output name
        f = fopen( full_name, "wb" );
        if( !f ) continue;
        
        fclose(f);
        remove( full_name );
        break;
    }
    
    return full_name;
}


void CMainFrame::OnAddTest() 
{       
    CHMMDemoView* camera_view = GetCameraView();
    CImageBaseView* view = GetImageBaseView();
    CHMMDemoDoc* doc = GetHMMDoc();

    if( view && doc )
    {
        CRect m_sel = camera_view->GetSelection();
        CCamera& camera = camera_view->Camera();

        camera.Stop();
        
        //get selected person name
        CPerson* person = doc->GetFaceBase().GetPerson( view->GetPersonIndex() );
        CString name = person->GetName();

        //add image which is in view
        CString filename = GetFreeFilename( camera_view->GetTestPath(), name );
        CImage new_img;
        new_img.CopyOf( camera.GetFrame() );
        IplImage* iplimage = new_img.GetImage();

        if( !iplimage )
        {
            MessageBox("No image was selected!");
            return;
        }
        
        cvSetImageROI( iplimage, RectToCvRect( m_sel ));
        CImage tofile;
        tofile.CopyOf( iplimage );
        tofile.Save( filename );
        
        //add other images
        CStringList* imageList = camera_view->GetImageList();

        if ( imageList && (imageList->GetCount() > 1) )
        {
            //add batch
            POSITION pos = imageList->GetHeadPosition();
            imageList->GetNext( pos );
                        
            while (pos)
            {
                CImage img;
                img.Load( imageList->GetNext( pos ), 1 );
                
                
                img.Save( GetFreeFilename( camera_view->GetTestPath(), name ) );
            }
        }
        MessageBox("Images were added to test base");

        camera.Start();

    }
    return;

}


void CMainFrame::OnUpdateRemoveObj(CCmdUI* pCmdUI) 
{
    CImageBaseView* view = GetImageBaseView();
    bool enable = false;

    if( view )
    {
        enable = view->GetActive() >= 0;
    }
    pCmdUI->Enable( enable );
}

void CMainFrame::OnRemoveObj() 
{
    CImageBaseView* view = GetImageBaseView();
    CHMMDemoDoc* doc = GetHMMDoc();

    if( doc && view )
    {
        int active = view->GetActive();
        int person_index = view->GetPersonIndex();

        if( active >= 0 )
        {
            if( doc->RemoveObj( person_index, active ))
            {
                view->ResetActive();
                view->RefreshView();
            }
        }
    }
}


void CMainFrame::OnZoomIn() 
{
    CImageBaseView* view = GetImageBaseView();
    view->Zoom();
}


void CMainFrame::OnZoomOut() 
{
    CImageBaseView* view = GetImageBaseView();
    view->Zoom( false );
}


void CMainFrame::OnChangeBaseParams() 
{
    CHMMDemoDoc* doc = GetHMMDoc();

    if( doc )
    {
        doc->ChangeBaseParams();
    }
}

void CMainFrame::OnTrain() 
{
    CWaitCursor wait;
	//if 1 person selected - train its HMM
    //if all base in view - train all untrained persons
    CHMMDemoDoc* doc = GetHMMDoc();
    CImageBaseView* base_view = GetImageBaseView();
                               
    if( doc && base_view )
    {
        //int view_mode = base_view->GetMode();
        CFaceBase& base = doc->GetFaceBase();
        
        if( base_view->GetPersonIndex() >= 0 )
        {
            base.TrainPerson( base_view->GetPersonIndex(), true );
        }
        else
            base.TrainAll( TRAIN_UNTRAINED ); 
    } 
}

void CMainFrame::OnRecognize() 
{         
		CWaitCursor wait;

		CHMMDemoView* view = GetCameraView();
		CHMMDemoDoc* doc = GetHMMDoc();
		CImageBaseView* baseview = GetImageBaseView();
		
		if( doc && view && baseview )
		{
			CFaceBase& base = doc->GetFaceBase();
			CCamera& camera = view->Camera();
			camera.Stop();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级理论片| 久久99精品一区二区三区| 亚洲国产色一区| 日本不卡一区二区三区| 成人a级免费电影| 欧美一区二区国产| 亚洲乱码国产乱码精品精可以看 | 欧美成人性福生活免费看| 中文字幕中文字幕在线一区| 日韩成人午夜精品| 色综合久久中文字幕| 久久久不卡网国产精品二区| 午夜精品久久一牛影视| 99久久免费精品高清特色大片| 日韩一区二区三区免费看| 亚洲伦理在线精品| 成人免费视频国产在线观看| 日韩精品一区二区三区老鸭窝| 亚洲综合久久久久| 色香蕉成人二区免费| 欧美国产欧美亚州国产日韩mv天天看完整| 日韩福利电影在线观看| 欧美在线你懂得| 亚洲摸摸操操av| 成人国产精品免费观看视频| 国产亚洲一区二区三区| 久久国产精品露脸对白| 日韩一级完整毛片| 全部av―极品视觉盛宴亚洲| 91麻豆精品国产91久久久使用方法| 一区二区三区中文字幕电影| 色婷婷综合久久久中文字幕| 中文字幕人成不卡一区| 国产v日产∨综合v精品视频| 久久久久久久综合色一本| 韩国三级中文字幕hd久久精品| 日韩三级在线观看| 日本麻豆一区二区三区视频| 欧美日韩精品欧美日韩精品一 | 国产不卡免费视频| 国产亚洲欧美色| 国产91对白在线观看九色| 精品久久久久久综合日本欧美| 久久精品国产色蜜蜜麻豆| 日韩一区二区在线播放| 另类小说欧美激情| 日本一区二区电影| 91小视频在线| 亚洲在线中文字幕| 欧美一区二区三区爱爱| 久久国产尿小便嘘嘘尿| 精品久久久网站| 丰满放荡岳乱妇91ww| 中文字幕亚洲不卡| 欧美亚洲尤物久久| 青青草97国产精品免费观看| 精品欧美一区二区三区精品久久| 国产呦萝稀缺另类资源| 最新久久zyz资源站| 欧美在线播放高清精品| 蜜芽一区二区三区| 中文字幕不卡三区| 日本韩国一区二区三区| 免费不卡在线视频| 国产精品入口麻豆九色| 色噜噜狠狠一区二区三区果冻| 水野朝阳av一区二区三区| 久久女同性恋中文字幕| 色欧美日韩亚洲| 久久精品国产精品亚洲综合| 欧美国产日本视频| 91精品国产aⅴ一区二区| 国产在线一区二区| 亚洲精品欧美在线| 久久天天做天天爱综合色| 91麻豆精品在线观看| 麻豆精品久久久| 亚洲视频免费看| 精品久久久久久久久久久院品网 | 国产日韩成人精品| 欧美日韩国产一区二区三区地区| 国产一区二区伦理| 亚洲国产欧美日韩另类综合 | 91免费国产视频网站| 日韩av中文字幕一区二区| 日韩理论电影院| 久久嫩草精品久久久久| 欧美一区二区三区四区高清| 国产成人精品三级| 蜜桃av一区二区| 亚洲一区在线视频| 中文一区在线播放| 久久综合一区二区| 欧美一区二区免费观在线| 色视频欧美一区二区三区| 成人一区二区三区视频| 免费不卡在线观看| 五月天中文字幕一区二区| 成人免费在线观看入口| 久久蜜桃av一区精品变态类天堂| 欧美精三区欧美精三区| 色系网站成人免费| 99麻豆久久久国产精品免费优播| 老鸭窝一区二区久久精品| 丝袜亚洲另类欧美| 午夜激情综合网| 亚洲国产精品精华液网站| 亚洲欧美中日韩| 亚洲国产精品成人综合| 久久久噜噜噜久噜久久综合| 日韩欧美一级精品久久| 91精品国产综合久久蜜臀| 欧美在线|欧美| 欧美撒尿777hd撒尿| 欧美婷婷六月丁香综合色| 91蝌蚪国产九色| 91视频国产资源| 94色蜜桃网一区二区三区| 波多野结衣视频一区| 不卡视频免费播放| 97精品久久久午夜一区二区三区| 国产suv精品一区二区6| av中文字幕在线不卡| 99re在线精品| 在线中文字幕一区| 69av一区二区三区| 欧美大胆一级视频| 久久久久免费观看| 国产精品久久久久天堂| 亚洲色图一区二区三区| 一区二区三区蜜桃| 午夜激情一区二区| 激情综合五月婷婷| 国产成人免费视频| av在线免费不卡| 在线亚洲一区二区| 日韩欧美激情在线| 国产精品免费丝袜| 亚洲一区二区在线观看视频 | 国内一区二区在线| 国产精品99久久久久久似苏梦涵| 高清不卡在线观看av| 99re8在线精品视频免费播放| 色久综合一二码| 欧美一区二区三区在线视频| 2024国产精品| 亚洲欧美成人一区二区三区| 性做久久久久久免费观看| 久久精品国产秦先生| 成人av电影在线网| 在线视频观看一区| 久久综合九色综合欧美98| 自拍偷在线精品自拍偷无码专区 | 久久亚洲精品国产精品紫薇| 国产精品拍天天在线| 亚洲综合999| 黑人精品欧美一区二区蜜桃 | 欧美三级日韩在线| 久久综合色8888| 亚洲国产精品一区二区www在线| 麻豆精品久久久| 色综合视频一区二区三区高清| 欧美日韩高清一区二区三区| 久久久久久久综合| 天堂久久久久va久久久久| 99麻豆久久久国产精品免费| 日韩视频一区二区三区| 亚洲一区二区精品久久av| 国产精品一区专区| 91麻豆精品国产自产在线观看一区| 欧美激情一二三区| 久久66热偷产精品| 在线观看国产91| 亚洲国产精品t66y| 狠狠色丁香婷婷综合| 欧美卡1卡2卡| 日韩美女精品在线| 国模少妇一区二区三区| 欧美日韩一区二区三区视频| 中文字幕一区二区三区av| 狠狠网亚洲精品| 91精品国产入口在线| 亚洲综合小说图片| heyzo一本久久综合| 国产喂奶挤奶一区二区三区| 捆绑变态av一区二区三区| 欧美日韩中文国产| 亚洲永久精品大片| 日本高清免费不卡视频| 中文字幕在线播放不卡一区| 国产成人精品一区二区三区网站观看 | 久久欧美一区二区| 久久精品国产99| 欧美久久高跟鞋激| 日韩中文字幕1| 欧美在线一二三| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美一区二区私人影院日本| 亚洲午夜视频在线| 色综合激情五月|