基于改进的颜色直方图的图像检索算法(4)

2018-11-18 21:10

ZeroMemory(&browse,sizeof(browse));//fills a block of memory with zeros. browse.hwndOwner = NULL;

browse.pszDisplayName = m_strPath.GetBuffer(MAX_PATH); browse.lpszTitle = \请选择一个图像目录\

LPITEMIDLIST lpItem = SHBrowseForFolder(&browse); if(lpItem == NULL) return ; m_strPath.ReleaseBuffer();

if(SHGetPathFromIDList(lpItem,m_strPath.GetBuffer(MAX_PATH)) == false)

return;

m_strPath.ReleaseBuffer();

AfxMessageBox(\您选择的目录为:\

B_OK);

//得到图像目录下文件的路径 CString tempath; CString temps; tempath=m_strPath;

tempath.TrimRight();tempath.TrimLeft(); //去除前后多余 CString strfilepath=tempath; counts=0;

StartDir(strfilepath);

temps.Format(\该目录下共有%d幅图像!\

AfxMessageBox(temps,MB_ICONINFORMATION|MB_OK);

//for (int i = 0; i

// AfxMessageBox(temp[i],MB_ICONINFORMATION|MB_OK);

}

//}

//对所有目录查找,取得图像目录下文件路径

void CImageRetrievalDlg::StartDir(const CString& strfile1) {

BOOL yesno; CFileFind find; char tempFileFind[200];

sprintf(tempFileFind,\RunDir(strfile1);

yesno = (BOOL)find.FindFile(tempFileFind); //查找下级目录 while(yesno) {

yesno = find.FindNextFile(); if (find.IsDots() != TRUE) {

char foundFileName[200];

strcpy(foundFileName,find.GetFileName().GetBuffer(200));

if((find.IsDirectory() == TRUE)) {

char tempDir[200];

sprintf(tempDir,\ // 递归调用

}

}

StartDir(tempDir);

}

} find.Close(); return;

//对*.bmp文件查找

void CImageRetrievalDlg::RunDir(const CString& strfile2) {

BOOL yesno; CFileFind find; char tempFileFind[200];

sprintf(tempFileFind,\ yesno = find.FindFile(tempFileFind); while(yesno) {

yesno = find.FindNextFile(); char foundFileName[200];

strcpy(foundFileName,find.GetFileName().GetBuffer(200)); if(!find.IsDots()) {

char tempFileName[200];

sprintf(tempFileName,\

CString strfilepath1;

}

}

}

strfilepath1.Format(\ counts++;

temp[tempi] = new CString(strfilepath1); tempi++;

find.Close(); return;

//单个图像特征向量

void CImageRetrievalDlg::OnSingleImageIndb() { }

//显示关键图的直方图

void CImageRetrievalDlg::OnShowIm() {

CString imagefilepath = strfile; CFileOpen fileOpenDlg1(TRUE);

if (fileOpenDlg1.DoModal () != IDOK) return; //取得文件路径

POSITION pos = fileOpenDlg1.GetStartPosition(); strfile = fileOpenDlg1.GetNextPathName(pos);

AfxMessageBox(strfile);

//if (imagefilepath = ' ') {AfxMessageBox(\请选择一幅关键图\

CalculateColor(imagefilepath);

HistogramShow(IDC_DLG_HIST_SHOW); }

//计算颜色直方图

void CImageRetrievalDlg::CalculateColor(CString pathfile) {

CBitmap hbmp; HBITMAP hbitmap;

int R,G,B,H,S,V;

int i,j;

hbitmap=(HBITMAP)::LoadImage (::AfxGetInstanceHandle(),pathfile, IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION); hbmp.Attach(hbitmap); BITMAP bm;

hbmp.GetBitmap(&bm); CDC dcMem;

dcMem.CreateCompatibleDC(GetDC()); dcMem.SelectObject(hbmp); int width=bm.bmWidth/4; int height=bm.bmHeight/4;

COLORREF clr; //定义一个COLORREF结构,因为提取的象素点的颜色是

以RGB形式表示的

int x,y;

for(int fda=0;fda<4;fda++)


基于改进的颜色直方图的图像检索算法(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:标准化管理

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: