Пример #1
0
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;
}
Пример #2
0
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;
}