// testResizeIntel5.2vs2019.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include "pch.h" #include #include "Image.h" #include "testDlg.h" #include namespace fs = std::experimental::filesystem; bool InitIntel2019(); bool InitIntel5_2(); int main() { int intel = testGetI("enter Intel version(0 - Intel 5.2 , 1 - Intel 2019):"); int resizeScheme = testGetI("enter resize scheme(0 - original , 1 - modified, 2 - modified2):"); std::string filename; while (true) { filename = testGetF("enter image filename (color image 24bit):"); if (fs::exists(filename.c_str())) break; printf("file doesn't exist\n"); } std::string strNumThreads = testGetS("enter num threads:"); float xScale = testGetD("enter xScale:"); float yScale = testGetD("enter yScale:"); int interpolation = 0; while (true) { interpolation = testGetI("enter interpolation (4 - Cubic , 8 - Super):"); if (interpolation == 4 || interpolation == 8) break; printf("wrong value\n"); } bool saveOutputImage = testGetI("should save output image:") == 1 ? true : false; std::string outFilename; if (saveOutputImage) outFilename = testGetS("enter output filename:"); int parallelMode = testGetI("enter parallel mode (0 - parellel_for, 1 - regular"); int numIterations = testGetI("enter num iterations per num threads"); char intelVersion[32]; if (intel == 0) { strcpy(intelVersion, "5.2"); printf("loading Intel 5.2...\n"); InitIntel5_2(); } else { strcpy(intelVersion, "2019"); printf("loading Intel 2019...\n"); InitIntel2019(); } printf("reading image...\n"); CImage img; img.Read(filename.c_str()); printf("scaling down image size %.2fGB (%dx%d) using Intel %s...\n", (float)img.Size() / 1024 / 1024 / 1024, img.Cols(), img.Rows(), intelVersion); char ss[256]; strcpy(ss, strNumThreads.c_str()); char* pToken = strtok(ss, ";"); int tt[512] = { 0 }; while (pToken) { int num = atoi(pToken); { for (int i = 0; i < numIterations; i++) { int elapseTime; CImage* pScaledIm = nullptr; if (resizeScheme == 0) { pScaledIm = img.Resize(xScale, yScale, interpolation, num, intel, &elapseTime); } else if (resizeScheme == 1) { pScaledIm = img.ResizeMod(xScale, yScale, interpolation, num, intel, parallelMode, &elapseTime); } else if (resizeScheme == 2) { pScaledIm = img.ResizeMod2(xScale, yScale, interpolation, num, intel, parallelMode, &elapseTime); } if (saveOutputImage) pScaledIm->Write(outFilename.c_str()); printf("num threads= %d time=%d\n", num, elapseTime); delete pScaledIm; } } pToken = strtok(nullptr, ";"); } }