From 9b92546622adeccf2e0094e02df970e2a22fbbe2 Mon Sep 17 00:00:00 2001 From: Nathan Date: Wed, 29 Apr 2026 02:28:18 -0500 Subject: [PATCH] opencv test --- .../Archimedes-Modules/Rubiks/Rubiks.cpp | 36 +++++++++++++++++-- .../Archimedes-Modules/Rubiks/default.nix | 2 ++ 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/modules/Archimedes-Modules/Rubiks/Rubiks.cpp b/src/modules/Archimedes-Modules/Rubiks/Rubiks.cpp index 8f9fff2..f4fe217 100644 --- a/src/modules/Archimedes-Modules/Rubiks/Rubiks.cpp +++ b/src/modules/Archimedes-Modules/Rubiks/Rubiks.cpp @@ -84,10 +84,34 @@ void Rubiks::run() { static cv::VideoWriter video; static bool rolling = false; - static int frames = 0; + static int frames = 30 * 15; if(rolling) { - frames++; + frames--; + + rolling = frames > 0; + + uint32_t rowStride = ((1920 + 63) & 0xFFFFFFC0) * sizeof(uint32_t); + + long screenBufferSize = rowStride * 1080; + + cv::Mat f(1080, 1920, CV_8UC4); + + glReadPixels(0, 0, 1920, 1080, GL_RGB, GL_UNSIGNED_BYTE, f.data); + cv::Mat cv_pixels( 1080, 1920, CV_8UC3 ); + + for( int y=0; y<1080; y++ ) for( int x=0; x<1920; x++ ) { + + cv_pixels.at(y,x)[2] = f.at(height-y-1,x)[0]; + cv_pixels.at(y,x)[1] = f.at(height-y-1,x)[1]; + cv_pixels.at(y,x)[0] = f.at(height-y-1,x)[2]; + } + + video << cv_pixels; + + } else if(frames <= 0) { + video.release(); + //UpdateVideoStatus(WM_VIDEO_STATUS_FILE_CLOSED); } static float scale = 0.96f; @@ -196,7 +220,13 @@ void Rubiks::run() { rubiksCube.solve(); - video.open(); + video.open("Rubiks.mp4", cv::VideoWriter::fourcc('x', '2', '6', '4'), 30.0, cv::Size(1920, 1080), true); + if(!video.isOpened()) { + std::cout << "VIDEO DID NOT OPEN!\n"; + std::abort(); + } + + //UpdateVideoStatus(WM_VIDEO_STATUS_FILE_OPENED); } if(ImGui::Button("randomize")) { diff --git a/src/modules/Archimedes-Modules/Rubiks/default.nix b/src/modules/Archimedes-Modules/Rubiks/default.nix index 939f807..763a3f0 100644 --- a/src/modules/Archimedes-Modules/Rubiks/default.nix +++ b/src/modules/Archimedes-Modules/Rubiks/default.nix @@ -25,6 +25,7 @@ stb opencv + pkg-config ]; buildPhase = '' @@ -44,6 +45,7 @@ -lEGL -lglfw -lGLEW \ $(curl-config --cflags) \ $(curl-config --libs) \ + $(pkg-config --cflags --libs opencv4) \ -Wall \ -o $name -DIMGUI_IMPL_GLFW_DISABLE_X11 '';