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

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

?? dlgrecmatch.cpp

?? 提供了圖像識別
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// DlgRecMatch.cpp : implementation file
//

#include "stdafx.h"
#include "ImageProcessing.h"
#include "DlgRecMatch.h"
#include "CDib.h"
#include "GlobalApi.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDlgRecMatch dialog


CDlgRecMatch::CDlgRecMatch(CWnd* pParent /*=NULL*/,CImageProcessingDoc* pDoc)
	: CDialog(CDlgRecMatch::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgRecMatch)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// 設置計算圖象控件位置標志位為FALSE
	m_bCalImgLoc = FALSE;

	// 設置初始圖象
	m_pDibInit = pDoc->m_pDibInit;

	// 獲得文檔指針
	m_pDoc = pDoc;

	// 分配模板圖象內存
	m_pDibModel = new CDib;
		
	// 分配結果圖象
	m_pDibResult = new CDib;
	

}

void CDlgRecMatch::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgRecMatch)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgRecMatch, CDialog)
	//{{AFX_MSG_MAP(CDlgRecMatch)
	ON_BN_CLICKED(IDC_RECOG_OPEN_MODEL, OnRecogOpenModel)
	ON_BN_CLICKED(IDC_RECOG_MATCH, OnRecogMatch)
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgRecMatch message handlers

void CDlgRecMatch::OnRecogOpenModel() 
{
	CFileDialog dlg(TRUE,"bmp","*.bmp");
	if(dlg.DoModal() == IDOK)
	{
 
	 	CFile file;
	 
	 	CString strPathName;
 
		strPathName = dlg.GetPathName();
 
		// 打開文件
		if( !file.Open(strPathName, CFile::modeRead | CFile::shareDenyWrite))
		{
			// 返回	
			return ;
		}

		// 讀入模板圖象
		if(!m_pDibModel->Read(&file)){
			// 恢復光標形狀
			EndWaitCursor();

			// 清空已分配內存
			m_pDibModel->Empty();

			// 返回
 			return;
		}
	}
	
	// 判斷是否是8-bpp位圖(這里為了方便,只處理8-bpp位圖的模板配準,其它的可以類推)
	if(m_pDibModel->m_nColorTableEntries != 256)
	{
		// 提示用戶
		MessageBox("目前只支持256色位圖!", "系統提示" , MB_ICONINFORMATION | MB_OK);

		// 清空已分配內存
		m_pDibModel->Empty();

		// 返回
		return;
	}

	// 初始圖象的長寬大小
	CSize sizeImage			= m_pDibInit->GetDimensions();
	int nImageWidth			= sizeImage.cx		;
	int nImageHeight			= sizeImage.cy		;
	
	// 模板圖象的長寬大小
	CSize sizeModelImage	= m_pDibModel->GetDimensions()	;
	int nModelWidth		= sizeImage.cx		;
	int nModelHeight	= sizeImage.cy		;

	// 判斷模板尺寸和初始圖象的大小,如果模板大于初始圖象,則推出
	if(nModelHeight > nImageHeight || nModelWidth > nImageWidth )
	{
		// 提示用戶
		MessageBox("模板尺寸大于源圖像尺寸!", "系統提示" , MB_ICONINFORMATION | MB_OK);

		// 釋放已分配內存
		m_pDibModel->Empty();

		// 返回
		return;

	}

	// 如果打開新的待配準文件,將圖象位置設置標志位設為FALSE,以便再次調整位置
	m_bCalImgLoc = FALSE;
	
	// 更新顯示	
	this->Invalidate();	
	
}

/*************************************************************************
 *
 * \函數名稱:
 *   CalImageLocation()
 *
 * \輸入參數:
 *   無
 *
 * \返回值:
 *   無
 *
 * \說明:
 *   該函數設置對話框中的控件位置和大小,并設置顯示圖象的位置。默認的圖象大小為352×288,如果圖象小于
 *此大小,則控件大小設置為256*256,并將圖象放置在控件中間。
 *
 *************************************************************************
 */
void CDlgRecMatch::CalImageLocation()
{
	// ------------------------------------------------------
	// 獲得控件IDC_RECOG_INIIMAGE的句柄,并獲得控件的初始位置信息
	CWnd* pWnd=GetDlgItem(IDC_RECOG_INIIMAGE);
	WINDOWPLACEMENT *winPlacement;
	winPlacement=new WINDOWPLACEMENT;
	pWnd->GetWindowPlacement(winPlacement);
	
	// 圖象寬度
	int nImageWidth;
	nImageWidth = m_pDibInit->m_lpBMIH->biWidth;

	// 圖象高度
	int nImageHeight;
	nImageHeight = m_pDibInit->m_lpBMIH->biHeight;

	// -----------------------------------------------------------------
	// 調整控件IDC_RECOG_INIIMAGE的大小位置,并同時設置顯示基準圖象的位置
	if(nImageHeight > 256){
		winPlacement->rcNormalPosition.bottom = winPlacement->rcNormalPosition.top + nImageHeight;	
		m_rectInitImage.bottom = winPlacement->rcNormalPosition.bottom;
		m_rectInitImage.top    = winPlacement->rcNormalPosition.top;		
	}
	else{
		winPlacement->rcNormalPosition.bottom = winPlacement->rcNormalPosition.top + 256;
		m_rectInitImage.bottom = winPlacement->rcNormalPosition.top + 128 + nImageHeight/2;
		m_rectInitImage.top    = winPlacement->rcNormalPosition.top + 128 - nImageHeight/2;
	}
	if(nImageWidth > 256){
		winPlacement->rcNormalPosition.right = winPlacement->rcNormalPosition.left + nImageWidth;
		m_rectInitImage.right = winPlacement->rcNormalPosition.right;
		m_rectInitImage.left  = winPlacement->rcNormalPosition.left;			
	}
	else{
		winPlacement->rcNormalPosition.right = winPlacement->rcNormalPosition.left + 256;
		m_rectInitImage.right = winPlacement->rcNormalPosition.left + 128 + nImageWidth/2;
		m_rectInitImage.left  = winPlacement->rcNormalPosition.left + 128 - nImageWidth/2;
	}

	// 設置IDC_RECOG_INIIMAGE控件的大小位置
	pWnd->SetWindowPlacement(winPlacement);	
			
	// 獲得顯示模板圖象控件的右邊位置,以便確認顯示模板圖象控件的位置
	int nIniImgRight;
	nIniImgRight = winPlacement->rcNormalPosition.right;
	
	int  nIniImgLeft;
	nIniImgLeft   = winPlacement->rcNormalPosition.left;

	// 獲得IDC_REG_INIT_IMAGE控件的下邊位置,以便調整其他控件的位置
	int nIniImgBottom;
	nIniImgBottom = winPlacement->rcNormalPosition.bottom;

	// 獲得IDC_REG_INIT_IMAGE控件的下邊位置,以便調整其他控件的位置
	int nIniImgtop = winPlacement->rcNormalPosition.top;

	// ------------------------------------------------------
	// 獲得控件IDC_RECOG_MODIMAGE的句柄,并獲得初始位置信息
	pWnd=GetDlgItem(IDC_RECOG_MODIMAGE);
	pWnd->GetWindowPlacement(winPlacement);
	
	// 如果還未打開模板圖象,則設置結果圖象大小和初始圖象大小相等
	if(!m_pDibModel->IsEmpty()){
		nImageWidth  = m_pDibModel->m_lpBMIH->biWidth;
		nImageHeight = m_pDibModel->m_lpBMIH->biHeight;
	}
	
	// 調整控件IDC_RECOG_MODIMAGE的大小位置,并同時設置顯示結果圖象的位置

	// 先調整控件的左邊位置,和IDC_REG_INIT_IMAGE控件相隔15個象素
	winPlacement->rcNormalPosition.left = nIniImgRight + 15;

	if(nImageHeight > 256){		
		winPlacement->rcNormalPosition.top = nIniImgtop;
		winPlacement->rcNormalPosition.bottom = winPlacement->rcNormalPosition.top + nImageHeight;
		m_rectModelImage.bottom = winPlacement->rcNormalPosition.bottom;
		m_rectModelImage.top    = nIniImgtop;		
	}
	else{
		winPlacement->rcNormalPosition.top = nIniImgtop;
		winPlacement->rcNormalPosition.bottom = winPlacement->rcNormalPosition.top + 256;
		m_rectModelImage.bottom = winPlacement->rcNormalPosition.top + 128 + nImageHeight/2;
		m_rectModelImage.top    = winPlacement->rcNormalPosition.top + 128 - nImageHeight/2;
	}
	if(nImageWidth > 256){		
		winPlacement->rcNormalPosition.right = winPlacement->rcNormalPosition.left + nImageWidth;
		m_rectModelImage.right = winPlacement->rcNormalPosition.right;
		m_rectModelImage.left  = winPlacement->rcNormalPosition.left;			
	}
	else{		
		winPlacement->rcNormalPosition.right = winPlacement->rcNormalPosition.left + 256;
		m_rectModelImage.right = winPlacement->rcNormalPosition.left + 128 + nImageWidth/2;
		m_rectModelImage.left  = winPlacement->rcNormalPosition.left + 128 - nImageWidth/2;
	}

	// 設置IDC_RECOG_MODIMAGE控件的大小位置
	pWnd->SetWindowPlacement(winPlacement);
		
	// 獲得IDC_RECOG_MODIMAGE控件的右邊位置,以便調整其他控件的位置
	nIniImgRight  = winPlacement->rcNormalPosition.right;

	// ------------------------------------------------------
	// 獲得控件IDC_RECOG_RESLTIMAGE的句柄,并獲得初始位置信息
	pWnd=GetDlgItem(IDC_RECOG_RESLTIMAGE);
	pWnd->GetWindowPlacement(winPlacement);
	
	// 如果還未生成結果圖象,則設置結果圖象大小和初始圖象大小相等
	if(!m_pDibResult->IsEmpty()){
		nImageWidth  = m_pDibResult->m_lpBMIH->biWidth;
		nImageHeight = m_pDibResult->m_lpBMIH->biHeight;
	}
	
	// 調整控件IDC_RECOG_RESLTIMAGE的大小位置,并同時設置顯示結果圖象的位置

	// 先調整控件的左邊位置,和IDC_RECOG_MODIMAGE控件相隔15個象素
	winPlacement->rcNormalPosition.left = nIniImgRight + 15;

	if(nImageHeight > 256){		
		winPlacement->rcNormalPosition.top = nIniImgtop;
		winPlacement->rcNormalPosition.bottom = winPlacement->rcNormalPosition.top + nImageHeight;	
		m_rectResltImage.bottom = winPlacement->rcNormalPosition.bottom;
		m_rectResltImage.top    = winPlacement->rcNormalPosition.top;		
	}
	else{
		winPlacement->rcNormalPosition.top = nIniImgtop;
		winPlacement->rcNormalPosition.bottom = winPlacement->rcNormalPosition.top + 256;
		m_rectResltImage.bottom = winPlacement->rcNormalPosition.top + 128 + nImageHeight/2;
		m_rectResltImage.top    = winPlacement->rcNormalPosition.top + 128 - nImageHeight/2;
	}
	if(nImageWidth > 256){
		winPlacement->rcNormalPosition.right = winPlacement->rcNormalPosition.left + nImageWidth;
		m_rectResltImage.right = winPlacement->rcNormalPosition.right;
		m_rectResltImage.left  = winPlacement->rcNormalPosition.left;			
	}
	else{
		winPlacement->rcNormalPosition.right = winPlacement->rcNormalPosition.left + 256;
		m_rectResltImage.right = winPlacement->rcNormalPosition.left + 128 + nImageWidth/2;
		m_rectResltImage.left  = winPlacement->rcNormalPosition.left + 128 - nImageWidth/2;
	}

	// 設置IDC_REG_RESLT_IMAGE控件的大小位置
	pWnd->SetWindowPlacement(winPlacement);
	
	// ------------------------------------------------------
	if(nIniImgBottom > winPlacement->rcNormalPosition.bottom)
		nIniImgBottom = winPlacement->rcNormalPosition.bottom;
	
	nIniImgRight  = winPlacement->rcNormalPosition.right;
	
	// 設置控件IDOK的位置大小
	pWnd=GetDlgItem(IDOK);
	pWnd->GetWindowPlacement(winPlacement);
	winPlacement->rcNormalPosition.top = nIniImgBottom +15;
	winPlacement->rcNormalPosition.bottom = nIniImgBottom + 60;
	pWnd->SetWindowPlacement(winPlacement);
	
	// 設置控件IDCANCEL的位置大小
	pWnd=GetDlgItem(IDCANCEL);
	pWnd->GetWindowPlacement(winPlacement);
	winPlacement->rcNormalPosition.top = nIniImgBottom +15;
	winPlacement->rcNormalPosition.bottom = nIniImgBottom + 60;
	pWnd->SetWindowPlacement(winPlacement);

	// 設置控件IDC_RECOG_OPEN_MODEL的位置大小
	pWnd=GetDlgItem(IDC_RECOG_OPEN_MODEL);
	pWnd->GetWindowPlacement(winPlacement);
	winPlacement->rcNormalPosition.top = nIniImgBottom +15;
	winPlacement->rcNormalPosition.bottom = nIniImgBottom + 60;
	pWnd->SetWindowPlacement(winPlacement);
	
	// 設置控件IDC_RECOG_MATCH的位置大小

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久| 色综合久久久久综合| 99久久国产综合精品色伊| 欧美日韩午夜在线视频| 国产精品卡一卡二卡三| 久久精工是国产品牌吗| 欧美性色黄大片| 中文字幕一区二区在线观看| 奇米影视一区二区三区| 欧美日韩一卡二卡三卡| 亚洲人成伊人成综合网小说| 国产精品1区2区3区| 日韩精品一区在线| 天天综合天天综合色| 91久久国产最好的精华液| 国产精品久久久久久福利一牛影视| 另类小说图片综合网| 欧美久久久久久蜜桃| 亚洲永久免费av| 欧美综合久久久| 亚洲蜜臀av乱码久久精品蜜桃| 不卡的av中国片| 国产无人区一区二区三区| 国产一区在线观看视频| 欧美哺乳videos| 久久精品国产77777蜜臀| 欧美久久高跟鞋激| 日韩高清中文字幕一区| 91麻豆精品国产91久久久久久| 五月天久久比比资源色| 欧美日韩美少妇| 亚洲福利一二三区| 欧美三级蜜桃2在线观看| 亚洲第一二三四区| 欧美日韩国产美| 麻豆一区二区三| 精品va天堂亚洲国产| 国产精品一区二区不卡| 国产精品妹子av| 91小视频免费观看| 亚洲综合一区二区| 欧美日韩日日夜夜| 美女视频免费一区| 久久亚洲春色中文字幕久久久| 国产剧情一区二区| 亚洲色图在线播放| 欧美日韩国产a| 久久99精品久久久| 国产精品视频yy9299一区| 一本到三区不卡视频| 亚洲丶国产丶欧美一区二区三区| 欧美高清精品3d| 国产综合色精品一区二区三区| 中文字幕久久午夜不卡| 色琪琪一区二区三区亚洲区| 日韩精品乱码av一区二区| 欧美成va人片在线观看| 99视频精品全部免费在线| 亚洲伊人色欲综合网| 欧美变态口味重另类| 99久久综合国产精品| 亚洲成人黄色影院| 久久久久久夜精品精品免费| 99久久伊人精品| 日韩不卡一二三区| 国产精品色噜噜| 欧美日韩大陆在线| 国产成人aaa| 婷婷中文字幕一区三区| 国产午夜久久久久| 欧美日韩一区成人| 成人毛片视频在线观看| 男人的天堂亚洲一区| 最新成人av在线| 欧美成人video| 欧美性极品少妇| 国产99久久久国产精品潘金网站| 亚洲成人一区二区| 中文字幕一区二区视频| 亚洲精品在线网站| 欧美美女一区二区| 色噜噜狠狠成人中文综合| 韩国欧美国产一区| 亚洲a一区二区| 亚洲男女一区二区三区| 久久色在线观看| 欧美一级久久久久久久大片| 91精品办公室少妇高潮对白| 床上的激情91.| 国产呦精品一区二区三区网站| 视频一区在线视频| 亚洲一区二区成人在线观看| 亚洲欧洲av一区二区三区久久| 26uuu久久综合| 精品国产乱码久久久久久老虎| 欧美日韩国产精品成人| 欧美性色欧美a在线播放| 色婷婷综合久久久中文一区二区| 国产成人精品影院| 国产剧情一区在线| 国产乱国产乱300精品| 精品中文字幕一区二区| 秋霞电影网一区二区| 午夜精品久久久久久久久久久| 亚洲国产你懂的| 亚洲h精品动漫在线观看| 亚洲h动漫在线| 日韩精品亚洲一区二区三区免费| 午夜精品一区在线观看| 亚洲超碰97人人做人人爱| 亚洲国产精品综合小说图片区| 亚洲一区二区三区美女| 五月天一区二区| 秋霞电影网一区二区| 精品无码三级在线观看视频| 国产一区二区在线观看免费| 国产一区二区三区免费| 国产一区二区三区四区五区美女 | 亚洲欧美乱综合| 亚洲欧美日韩国产手机在线| 亚洲欧美日韩一区二区| 一区二区三区四区五区视频在线观看| 亚洲欧美激情在线| 亚洲国产日产av| 美美哒免费高清在线观看视频一区二区 | 欧美成人vps| 久久久亚洲高清| 中文字幕欧美一| 亚洲在线成人精品| 日韩成人一区二区| 激情综合网最新| 成人免费视频视频| 91福利视频久久久久| 欧美一区日本一区韩国一区| 精品国产乱码久久久久久蜜臀| 久久久久久久av麻豆果冻| 日韩一区日韩二区| 偷拍一区二区三区四区| 韩国av一区二区| 色综合视频在线观看| 精品视频一区二区不卡| 2020国产精品自拍| 亚洲三级在线免费| 免费的成人av| 91免费观看国产| 日韩精品中午字幕| 亚洲美腿欧美偷拍| 激情五月婷婷综合| 色综合久久综合中文综合网| 日韩精品在线一区二区| 亚洲欧洲av色图| 久久精品国产亚洲a| 色综合久久六月婷婷中文字幕| 日韩欧美在线网站| 最新不卡av在线| 狠狠色2019综合网| 欧美性一级生活| 欧美高清在线精品一区| 日本aⅴ精品一区二区三区| 99久久综合狠狠综合久久| 欧美mv日韩mv亚洲| 亚洲人123区| 国产一区二区三区香蕉| 777奇米四色成人影色区| 亚洲色图在线看| 国产一区二区精品在线观看| 欧美精品一卡两卡| 亚洲男同1069视频| 国产91在线观看丝袜| 欧美xxxxx裸体时装秀| 亚洲国产精品久久人人爱蜜臀| 成人影视亚洲图片在线| 精品欧美一区二区三区精品久久| 亚洲激情在线激情| 成人av先锋影音| 久久精品亚洲精品国产欧美| 手机精品视频在线观看| 欧美性受极品xxxx喷水| 亚洲天堂免费在线观看视频| 成人在线视频首页| 久久精品男人天堂av| 国产馆精品极品| 欧美性猛交xxxx黑人交| 国产精品传媒视频| 成人一区二区三区中文字幕| 欧美精品一区二区三区高清aⅴ| 婷婷成人激情在线网| 欧亚洲嫩模精品一区三区| 亚洲精品美腿丝袜| 91丨porny丨户外露出| 国产精品三级av在线播放| 国产精品小仙女| 国产无一区二区| 成人a免费在线看| 中文字幕第一区第二区| 成人性生交大片免费看中文网站| 日本一区二区成人| 岛国av在线一区| 国产精品欧美久久久久一区二区| 国产·精品毛片|