Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- BEGIN_PROCESSING();
- int nrImages1 = 0;
- int* h1r = new int[256];
- int* h1g = new int[256];
- int* h1b = new int[256];
- float SAD = 32000;
- int imgid=0;
- for (int k = 0; k < 256; k++)
- h1r[k] = h1g[k] = h1b[k] = 0;
- for (int i = 0; i<dwHeight; i++)
- for (int j = 0; j < dwWidth; j++)
- {
- int k = lpSrc[i*w + j];
- h1r[bmiColorsSrc[k].rgbRed]++;
- h1g[bmiColorsSrc[k].rgbGreen]++;
- h1b[bmiColorsSrc[k].rgbBlue]++;
- }
- BYTE *lpSI, *lpSrcI;
- DWORD dwWidthI, dwHeightI, wI;
- HDIB hBmpSrcI;
- CFile fileIn;
- CFileException fE;
- AfxEnableControlContainer();
- BROWSEINFO rBI = { 0 };
- rBI.ulFlags = BIF_RETURNONLYFSDIRS | BIF_USENEWUI;
- //rBI.lpszTitle = L"Select Folder for Output Files";
- TCHAR szPath[MAX_PATH];
- LPITEMIDLIST pidl = SHBrowseForFolder(&rBI);
- if (pidl != NULL) { // else, user canceled
- BOOL fRet = SHGetPathFromIDList(pidl, szPath);
- }
- char directoryPath[MAX_PATH];
- CFileFind finder;
- CString msg;
- // build a string with wildcards
- CString strWildcard(szPath);
- strWildcard += _T("\\*.bmp");
- BOOL bWorking = finder.FindFile(strWildcard);
- while (bWorking)
- {
- nrImages1++;
- bWorking = finder.FindNextFile();
- CString fnIn = finder.GetFilePath();
- fileIn.Open(fnIn, CFile::modeRead | CFile::shareDenyWrite, &fE);
- hBmpSrcI = (HDIB)::ReadDIBFile(fileIn);
- fileIn.Close();
- lpSI = (BYTE*)::GlobalLock((HGLOBAL)hBmpSrcI);
- dwWidthI = ::DIBWidth((LPSTR)lpSI);
- dwHeightI = ::DIBHeight((LPSTR)lpSI);
- lpSrcI = (BYTE*)::FindDIBBits((LPSTR)lpSI);
- DWORD wI = WIDTHBYTES(dwWidthI * 8);
- ///////////// DO THE PROCESING WITH THE CURRENT IMAGE IN CLASS 1
- //
- int* h2r = new int[256];
- int* h2g = new int[256];
- int* h2b = new int[256];
- float SAD2 = 0;
- float sdifr = 0;
- float sdifg = 0;
- float sdifb = 0;
- for (int k = 0; k < 256; k++)
- h2r[k] = h2g[k] = h2b[k] = 0;
- for (int i = 0; i<dwHeightI; i++)
- for (int j = 0; j < dwWidthI; j++)
- {
- int k = lpSrcI[i*w + j];
- h2r[bmiColorsSrc[k].rgbRed]++;
- h2g[bmiColorsSrc[k].rgbGreen]++;
- h2b[bmiColorsSrc[k].rgbBlue]++;
- }
- for (int i = 0; i < 256; i++)
- {
- sdifr += abs(h1r[i] - h2r[i]);
- sdifg += abs(h1g[i] - h2g[i]);
- sdifb += abs(h1b[i] - h2b[i]);
- }
- SAD2 = (sdifr / 256 + sdifg / 256 + sdifb / 256)/3;
- if (SAD2 < SAD)
- {
- SAD=SAD2;
- imgid=nrImages1;
- }
- //
- ::GlobalUnlock((HGLOBAL)hBmpSrcI);
- }
- msg.Format(_T("Found and processed %d images"), nrImages1);
- AfxMessageBox(msg);
- //CString msg;
- msg.Format(_TEXT("Most similar image: %d"),imgid);
- AfxMessageBox(msg);
- END_PROCESSING("");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement