#include #include #include #include using namespace std; void mainx() { auto cap = cv::VideoCapture("rtsp://192.168.100.50/live/ch00_1"); cv::Mat frame; cv::Mat enhanced; string WINDOW_TITLE = "Comparison"; cv::namedWindow(WINDOW_TITLE, cv::WINDOW_NORMAL); cv::resizeWindow(WINDOW_TITLE, 3840, 1080); cv::Mat canvas(1080, 3840, CV_8UC3); while (cap.isOpened()) { cap.read(frame); cv::detailEnhance(frame, enhanced); frame.copyTo(canvas(cv::Rect(0, 0, 1920, 1080))); enhanced.copyTo(canvas(cv::Rect(1920, 0, 1920, 1080))); cout < dataset[] = { std::make_pair("F:/datasets/images/bayer/demosaic16.tif", CUVI_BAYER_RGGB), std::make_pair("F:/datasets/images/bayer/mandi16.tif", CUVI_BAYER_BGGR) }; CuviStatus st; for (int idx = 0; idx < N; idx++) { CuviImage img = cuvi::io::loadImage(dataset[dataset_idx].first, loadType[idx]); if (img.isInitialized()) { cout << endl << "Image : [ " << img.width() << " x " << img.height() << " ] " << cuvi::getTypeString(img.type()) << endl; CuviImage dst; CuviTimer t; t.Start(); for (int i = 0; i < iterations; i++) { st = cuvi::colorOperations::demosaicDFPD(img, dst, dataset[dataset_idx].second, false); if (CUVI_SUCCESS != st) { cout << cuvi::getStatusString(st) << endl; } } t.Stop(); cout << "(DFPD) "<< cuvi::getTypeString(dst.type()) << " Mean Elapsed Time = " << (t.GetElapsedTime() * 1000000.0f) / iterations << " us" << endl; //dst.show(cuvi::getTypeString(dst.type())); //cuvi::io::saveImage(dst, "F:/datasets/images/bayerReference/output_" + cuvi::getTypeString(dst.type()) + ".tif"); } else { cout << "Image Not Initialized" << endl; } } } void benchmarkHQLI(const int dataset_idx, const int iterations) { const int N = 2; CuviLoadType loadType[N] = { CUVI_LOAD_IMAGE_GRAYSCALE, CUVI_LOAD_IMAGE_GRAYSCALE_KEEP_DEPTH }; std::pair dataset[] = { std::make_pair("F:/datasets/images/bayer/demosaic16.tif", CUVI_BAYER_RGGB), std::make_pair("F:/datasets/images/bayer/mandi16.tif", CUVI_BAYER_BGGR) }; const int filterSizes[] = { 5,7,9 }; CuviStatus st; for (int idx = 0; idx < N; idx++) { CuviImage img = cuvi::io::loadImage(dataset[dataset_idx].first, loadType[idx]); if (img.isInitialized()) { cout << endl << "Image : [ " << img.width() << " x " << img.height() << " ] " << cuvi::getTypeString(img.type()) << endl; for (int f = 0; f < 3; f++) { int fsize = filterSizes[f]; CuviImage dst;// (img.size(), img.depth(), 3); CuviTimer t; t.Start(); for (int i = 0; i < iterations; i++) { st = cuvi::colorOperations::demosaicHQLI(img, dst, dataset[dataset_idx].second, fsize); if (CUVI_SUCCESS != st) { cout << cuvi::getStatusString(st) << endl; } } t.Stop(); cout << "(HQLI" << fsize << ") " << cuvi::getTypeString(dst.type()) << " Mean Elapsed Time = " << (t.GetElapsedTime() * 1000000.0f) / iterations << " us" << endl; //dst.show(cuvi::getTypeString(dst.type())); //cuvi::io::saveImage(dst, "F:/datasets/images/bayerReference/output_" + cuvi::getTypeString(dst.type()) + ".tif"); } } else { cout << "Image Not Initialized" << endl; return; } cout << endl; } } int main() { cudaBootstrap(); const int iterations = 500; const int dataset_idx = 1; cout << "Starting benchmark with " << iterations << " iterations ..." << endl << endl; benchmarkDFPD(dataset_idx, iterations); cout << endl; benchmarkHQLI(dataset_idx, iterations); return 0; }