int ImgDataTEST::T_Constructor() { int fail = 0; logger->trace("=============================="); logger->trace("Testing Constructor:"); logger->trace(" Init Mat obj using camCap()..."); logger->trace(" Showing capped img..."); cv::Mat img = ImgDataTEST::camCap(); logger->trace(" Constructing new ImgData obj with arg \"data\" and Mat obj..."); ImgData* data = new ImgData("data", img); logger->trace(" Complete."); logger->trace(" Checking initialized variables..."); logger->trace(" Using getID()..."); if (data->getID() == "data") logger->trace(" ok"); else { logger->warn(" NOT ok, ID initialization incorrect"); fail += 1; } logger->trace(" Using showImg()..."); logger->trace(" If both imgs are identical press spacebar, else press esc..."); data->showImg(); char key; while (1) { key = cvWaitKey(0); if (char(key) == 32) { logger->trace(" ok"); break; } else if (char(key) == 27) { logger->warn(" NOT ok, img not same"); fail++; break; } } // logger->trace(" Using getImg() and comparing..."); //TODO logger->trace("Test complete."); logger->trace("Closing windows..."); data->closeImg(); cvDestroyWindow("camCap"); logger->trace("Deleting data..."); delete data; if (fail > 0) logger->warn(" TEST FAILED: Data Constructor"); logger->trace("=============================="); return fail; }
int RGBFilterTEST::T_filter() { int fail = 0; logger->trace("=============================="); logger->trace("Testing filter():"); // logger->trace(" Using imread..."); // cv::Mat img = cv::imread("rgb_mode_0.jpg",CV_LOAD_IMAGE_COLOR); // if (! img.data) // logger->warn(" OH NO, img not read"); logger->trace(" Using camCap..."); ImgDataTEST* imgTest = new ImgDataTEST(); cv::Mat img = imgTest->camCap(); cvDestroyWindow("camCap"); logger->trace(" Loading test image into a ImgData wrapper..."); ImgData* testImg = new ImgData("raw",img); logger->trace(" Copying ImgData to second wrapper..."); ImgData* testImg2 = new ImgData(*testImg); logger->trace(" Showing one copy of test image (should be named \"raw\")..."); testImg->showImg(); logger->trace(" Filtering first data w/ full luminosity specturm, aka mode 0..."); logger->trace(" Init int arr[3]..."); int arr[] = {25,-15,-20}; logger->trace(" Using filter factory, create mode 0 filter..."); RGBFilter* rgbFilter = new RGBFilter(arr);//(RGBFilter*)FilterFactory::createRGBFilter(arr); logger->trace(" Creating filter manager w/ id \"RGBFilter MODE 0\"..."); FilterManager* fm = new FilterManager("RGBFilter MODE 0"); logger->trace(" Inserting filter as \"rgb mode 0\"..."); fm->insertFilter("rgb mode 0",rgbFilter); logger->trace(" Attempt filtering using filter manager..."); fm->applyFilterChain(testImg); logger->trace(" Showing filtered test image..."); testImg->showImg(); logger->trace(" Expect 2 windows, \"raw\" and \"RGBFilter MODE 0\", the latter should be red shifted"); logger->trace(" If true, hit space, else hit esc"); char key; while (1) { key = cvWaitKey(0); if (char(key) == 32) { logger->trace(" ok"); break; } else if (char(key) == 27) { logger->warn(" NOT ok, details of output under mode 0 not correct"); fail++; break; } } logger->trace(" Filtering data 2 w/ 3 zones of luminosity separately, aka mode 1..."); logger->trace(" Init int high[3],mid[3],shad[3]..."); int high[] = {255,255,255}; int mid[] = {50,-30,-30}; int shad[] = {-255,-255,-255}; logger->trace(" Using filter factory, create mode 1 filter..."); RGBFilter* rgbFilter2 = new RGBFilter(high,mid,shad);//(RGBFilter*)FilterFactory::createRGBFilter(high,mid,shad); logger->trace(" Creating filter manager w/ id \"RGBFilter MODE 1\"..."); FilterManager* fm2 = new FilterManager("RGBFilter MODE 1"); logger->trace(" Inserting filter as \"rgb mode 1\"..."); fm2->insertFilter("rgb mode 1",rgbFilter2); logger->trace(" Attempt filtering using filter manager..."); fm2->applyFilterChain(testImg2); logger->trace(" Showing filtered test image..."); testImg2->showImg(); logger->trace(" Expect 3 windows in total, \"raw\" and \"RGBFilter MODE 0\" and \"RGBFilter MODE 1\", the latter should be red shifted, but a bit differently"); logger->trace(" If true, hit space, else hit esc"); while (1) { key = cvWaitKey(0); if (char(key) == 32) { logger->trace(" ok"); break; } else if (char(key) == 27) { logger->warn(" NOT ok, details of output under mode 1 not correct"); fail++; break; } } delete fm; delete fm2; cvDestroyWindow("raw"); testImg->closeImg(); testImg2->closeImg(); delete testImg; delete testImg2; img.release(); if (fail > 0) logger->warn(" TEST FAILED: filter()"); logger->trace("=============================="); return fail; }