diff --git a/src/beauty/beauty-demo.cpp b/src/beauty/beauty-demo.cpp index c445fd41f..fb8c56036 100644 --- a/src/beauty/beauty-demo.cpp +++ b/src/beauty/beauty-demo.cpp @@ -212,7 +212,7 @@ int main(int argc, char **argv) { }); //BGR - cv::UMat rgb, resized, down, faceBgMask, diff, blurred, reduced, sharpened, masked; + cv::UMat rgb, down, faceBgMask, diff, blurred, reduced, sharpened, masked; cv::UMat frameOut(HEIGHT, WIDTH, CV_8UC3); cv::UMat lhalf(HEIGHT * SCALE, WIDTH * SCALE, CV_8UC3); cv::UMat rhalf(lhalf.size(), lhalf.type()); @@ -237,7 +237,6 @@ int main(int argc, char **argv) { cl::compute([&](CLExecContext_t& clclx, cv::UMat& frameBuffer){ cvtColor(frameBuffer,rgb,cv::COLOR_BGRA2RGB); - cv::resize(rgb, resized, cv::Size(WIDTH, HEIGHT)); cv::resize(rgb, down, cv::Size(0, 0), SCALE, SCALE); cvtColor(down, downGrey, cv::COLOR_BGRA2GRAY); detector->detect(down, faces); @@ -286,8 +285,8 @@ int main(int argc, char **argv) { cv::subtract(faceBgMaskGrey, faceFgMaskGrey, faceBgMaskGrey); cv::bitwise_not(faceBgMaskGrey, faceBgMaskInvGrey); - unsharp_mask(resized, sharpened, UNSHARP_STRENGTH); - reduce_shadows(resized, reduced, REDUCE_SHADOW); + unsharp_mask(rgb, sharpened, UNSHARP_STRENGTH); + reduce_shadows(rgb, reduced, REDUCE_SHADOW); blender.prepare(cv::Rect(0, 0, WIDTH, HEIGHT)); blender.feed(reduced, faceBgMaskGrey, cv::Point(0, 0)); blender.feed(sharpened, faceBgMaskInvGrey, cv::Point(0, 0)); @@ -295,11 +294,11 @@ int main(int argc, char **argv) { frameOutFloat.convertTo(frameOut, CV_8U, 1.0); cv::boxFilter(frameOut, blurred, -1, cv::Size(BLUR_KERNEL_SIZE, BLUR_KERNEL_SIZE), cv::Point(-1, -1), true, cv::BORDER_REPLICATE); - cv::subtract(blurred, resized, diff); + cv::subtract(blurred, rgb, diff); bitwise_and(diff, faceBgMask, masked); cv::add(frameOut, masked, reduced); - cv::resize(resized, lhalf, cv::Size(0, 0), 0.5, 0.5); + cv::resize(rgb, lhalf, cv::Size(0, 0), 0.5, 0.5); cv::resize(reduced, rhalf, cv::Size(0, 0), 0.5, 0.5); frameOut = cv::Scalar::all(0); @@ -310,7 +309,7 @@ int main(int argc, char **argv) { } else { cl::compute([&](CLExecContext_t& clclx, cv::UMat &frameBuffer) { frameOut = cv::Scalar::all(0); - cv::resize(resized, lhalf, cv::Size(0, 0), 0.5, 0.5); + cv::resize(rgb, lhalf, cv::Size(0, 0), 0.5, 0.5); lhalf.copyTo(frameOut(cv::Rect(0, 0, lhalf.size().width, lhalf.size().height))); lhalf.copyTo(frameOut(cv::Rect(lhalf.size().width, 0, lhalf.size().width, lhalf.size().height))); cvtColor(frameOut, frameBuffer, cv::COLOR_BGR2RGBA); diff --git a/src/common/subsystems.hpp b/src/common/subsystems.hpp index 4e29f4011..839784352 100644 --- a/src/common/subsystems.hpp +++ b/src/common/subsystems.hpp @@ -297,6 +297,7 @@ bool read(std::function fn) { return false; //Color-conversion from RGB to BGRA (OpenCL) cv::cvtColor(va::videoFrame, cl::frameBuffer, cv::COLOR_RGB2BGRA); + cv::resize(cl::frameBuffer, cl::frameBuffer, cv::Size(app::window_width, app::window_height)); cl::release_to_gl(cl::frameBuffer); return true; } diff --git a/src/nanovg/nanovg-demo.cpp b/src/nanovg/nanovg-demo.cpp index 4b035237c..f9278f637 100644 --- a/src/nanovg/nanovg-demo.cpp +++ b/src/nanovg/nanovg-demo.cpp @@ -186,9 +186,7 @@ int main(int argc, char **argv) { //Color-conversion from HSV to RGB. (OpenCL) cv::cvtColor(hsv, rgb, cv::COLOR_HSV2RGB_FULL); //Color-conversion from RGB to BGRA. (OpenCL) - cv::cvtColor(rgb, bgra, cv::COLOR_RGB2BGRA); - //Resize the frame if necessary. (OpenCL) - cv::resize(bgra, frameBuffer, cv::Size(WIDTH, HEIGHT)); + cv::cvtColor(rgb, frameBuffer, cv::COLOR_RGB2BGRA); }); //Render using nanovg diff --git a/src/optflow/optflow-demo.cpp b/src/optflow/optflow-demo.cpp index 41755802a..626588c96 100644 --- a/src/optflow/optflow-demo.cpp +++ b/src/optflow/optflow-demo.cpp @@ -181,13 +181,13 @@ void composite_layers(const cv::UMat background, const cv::UMat foreground, cons cv::add(background, glow, dst); } -nanogui::Window* win; void setup_gui() { using namespace kb::gui; using namespace kb::display; - win = form->add_window(nanogui::Vector2i(6, 45), "Settings"); + static nanogui::Window* win = form->add_window(nanogui::Vector2i(6, 45), "Settings"); + auto useOpenCL = make_gui_variable("Use OpenCL", use_opencl, "Enable or disable OpenCL acceleration"); useOpenCL->set_callback([](bool b){ cv::ocl::setUseOpenCL(b); @@ -264,7 +264,7 @@ int main(int argc, char **argv) { //BGRA cv::UMat background, foreground(frameBufferSize, CV_8UC4, cv::Scalar::all(0)); //RGB - cv::UMat rgb, resized, down; + cv::UMat rgb, down; //GREY cv::UMat backgroundGrey, downPrevGrey, downNextGrey, downMotionMaskGrey; vector detectedPoints; @@ -279,10 +279,8 @@ int main(int argc, char **argv) { break; cl::compute([&](CLExecContext_t& clctx, cv::UMat& frameBuffer){ - cvtColor(frameBuffer,rgb,cv::COLOR_BGRA2RGB); - cv::resize(rgb, resized, frameBufferSize); - cv::resize(rgb, down, cv::Size(WIDTH * fg_scale, HEIGHT * fg_scale)); - cv::cvtColor(resized, background, cv::COLOR_RGB2BGRA); + cv::resize(frameBuffer, down, cv::Size(WIDTH * fg_scale, HEIGHT * fg_scale)); + cv::cvtColor(frameBuffer, background, cv::COLOR_RGB2BGRA); cv::cvtColor(down, downNextGrey, cv::COLOR_RGB2GRAY); //Subtract the background to create a motion mask prepare_motion_mask(downNextGrey, downMotionMaskGrey); diff --git a/src/pedestrian/pedestrian-demo.cpp b/src/pedestrian/pedestrian-demo.cpp index 416cc771e..5fc3c0c84 100644 --- a/src/pedestrian/pedestrian-demo.cpp +++ b/src/pedestrian/pedestrian-demo.cpp @@ -163,9 +163,8 @@ int main(int argc, char **argv) { break; cl::compute([&](CLExecContext_t& clclx, cv::UMat& frameBuffer){ - cvtColor(frameBuffer,rgb,cv::COLOR_BGRA2RGB); - cv::resize(rgb, videoFrameUp, cv::Size(WIDTH, HEIGHT)); - cv::resize(rgb, videoFrameDown, cv::Size(DOWNSIZE_WIDTH, DOWNSIZE_HEIGHT)); + cvtColor(frameBuffer,videoFrameUp,cv::COLOR_BGRA2RGB); + cv::resize(frameBuffer, videoFrameDown, cv::Size(DOWNSIZE_WIDTH, DOWNSIZE_HEIGHT)); cv::cvtColor(videoFrameDown, videoFrameDownGrey, cv::COLOR_RGB2GRAY); cv::cvtColor(videoFrameUp, background, cv::COLOR_RGB2BGRA); hog.detectMultiScale(videoFrameDownGrey, locations, 0, cv::Size(), cv::Size(), 1.025, 2.0, false); diff --git a/src/tetra/tetra-demo.cpp b/src/tetra/tetra-demo.cpp index 4a0cac3d6..294e8f6ed 100644 --- a/src/tetra/tetra-demo.cpp +++ b/src/tetra/tetra-demo.cpp @@ -2,8 +2,8 @@ #include "../common/subsystems.hpp" -constexpr long unsigned int WIDTH = 1920; -constexpr long unsigned int HEIGHT = 1080; +constexpr long unsigned int WIDTH = 3840; +constexpr long unsigned int HEIGHT = 2160; constexpr double FPS = 60; constexpr bool OFFSCREEN = false; constexpr const char* OUTPUT_FILENAME = "tetra-demo.mkv"; diff --git a/src/video/video-demo.cpp b/src/video/video-demo.cpp index f1810a0cc..f4741803f 100644 --- a/src/video/video-demo.cpp +++ b/src/video/video-demo.cpp @@ -6,7 +6,7 @@ constexpr long unsigned int WIDTH = 1920; constexpr long unsigned int HEIGHT = 1080; constexpr const int VA_HW_DEVICE_INDEX = 0; -constexpr bool OFFSCREEN = true; +constexpr bool OFFSCREEN = false; constexpr const char* OUTPUT_FILENAME = "video-demo.mkv"; constexpr unsigned long DIAG = hypot(double(WIDTH), double(HEIGHT)); @@ -129,11 +129,6 @@ int main(int argc, char **argv) { if(!success) break; - cl::compute([](CLExecContext_t& clctx, cv::UMat& frameBuffer){ - //Resize the frame if necessary. (OpenCL) - cv::resize(frameBuffer, frameBuffer, cv::Size(WIDTH, HEIGHT)); - }); - gl::render([](int w, int h) { //Render using OpenGL render_scene(w, h);