From cb1c7772e87c0376ae14ec92558c0cb989762612 Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Wed, 12 Mar 2025 09:55:45 +0100 Subject: [PATCH] [grabber] remove leftover code, explicitly set the image size --- dualcamgrabber.cpp | 35 ++++++++--------------------------- grabber.cpp | 3 ++- 2 files changed, 10 insertions(+), 28 deletions(-) diff --git a/dualcamgrabber.cpp b/dualcamgrabber.cpp index 8fcb1e9..97ccf92 100644 --- a/dualcamgrabber.cpp +++ b/dualcamgrabber.cpp @@ -8,6 +8,7 @@ typedef high_resolution_clock Time; typedef milliseconds ms; typedef duration fsec; + void DualcamGrabber::run() { stop_request = false; size_t counter = 0; @@ -25,51 +26,31 @@ void DualcamGrabber::run() { Pylon::CPylonImage stitchedImage; std::string errorMessage = ""; - // int ifi = 0; - // int deviation = 0; - // std::cerr << wrapper->frameRate(0) << "\t" << wrapper->frameRate(1) << "\t" << framerate << std::endl; - // int desired_ifi = (1./wrapper->frameRate(0) * 1000000); - // auto framestart = high_resolution_clock::now(); while (cameras.IsGrabbing() && !stop_request) { - // if (counter > 0) { - // deviation = desired_ifi - ifi; - // if (deviation > 0) - // // usleep(deviation); - // std::cerr << desired_ifi << "\t" << deviation << std::endl; - // } - // auto start = high_resolution_clock::now(); - MyImage *img = new MyImage(); - // auto stop1 = high_resolution_clock::now(); + auto before = high_resolution_clock::now(); try { cameras[0].RetrieveResult( 5000, frame0, Pylon::TimeoutHandling_ThrowException ); - // auto stop2 = high_resolution_clock::now(); cameras[1].RetrieveResult( 5000, frame1, Pylon::TimeoutHandling_ThrowException ); - // auto stop3 = high_resolution_clock::now(); leftImage.AttachGrabResultBuffer( frame0 ); rightImage.AttachGrabResultBuffer( frame1 ); } catch(const std::exception& e) { qDebug() << "Grabbing frame failed! " << e.what(); } + auto after = high_resolution_clock::now(); if (leftImage.IsValid() && rightImage.IsValid()) { try { StitchImage::StitchToRight(leftImage, rightImage, &stitchedImage, errorMessage); + MyImage *img = new MyImage(stitchedImage.GetWidth(), stitchedImage.GetHeight()); img->setFrame(stitchedImage); buffer->push(img); } catch(const std::exception& e) { std::cerr << e.what() << '\n'; } } - // auto stop4 = high_resolution_clock::now(); - // auto duration1 = duration_cast(stop1 - start); - // auto duration2 = duration_cast(stop2 - stop1); - // auto duration3 = duration_cast(stop3 - stop2); - // auto duration4 = duration_cast(stop4 - stop3); - // std::cerr << "framecount: " << counter << " image constr: " << duration1.count() << "\t" << " retrieve1: " << duration2.count() << "\t" << " retrieve2: " << duration3.count() << "\t" << "conversion: " << duration4.count() << std::endl; - // ifi = duration_cast(stop4 - framestart).count(); - // framestart = stop4; - // if (counter > 0) { - // std::cerr << "frame " << counter << " inter frame interval: " << ifi << "microseconds" << std::endl; - // } + auto stitch = high_resolution_clock::now(); + auto grab_duration = duration_cast(after - before); + auto stitch_duration = duration_cast(stitch - after); + std::cerr << "framecount: " << counter << " grab_duration (us): " << grab_duration.count() << "\t" << " stitching (us): " << stitch_duration.count() << std::endl; counter += 1; } cameras.StopGrabbing(); diff --git a/grabber.cpp b/grabber.cpp index fc87e10..0876562 100644 --- a/grabber.cpp +++ b/grabber.cpp @@ -9,11 +9,12 @@ void Grabber::run() { camera->frameRate(static_cast(framerate)); camera->exposureTime(exposure); camera->gain(gain); + ImageSettings settings = camera->getImageSettings(); Pylon::CInstantCamera *cam = camera->getCamera(); Pylon::CGrabResultPtr frame; cam->StartGrabbing(); while (camera->isOpen() && !stop_request) { - MyImage *img = new MyImage(); + MyImage *img = new MyImage(settings.width, settings.height); cam->RetrieveResult( 5000, frame, Pylon::TimeoutHandling_ThrowException); img->setFrame(frame); buffer->push(img);