From 5ca2a5312613867125b35a75b1d939a07828740a Mon Sep 17 00:00:00 2001
From: am0ebe <am0ebe@gmx.de>
Date: Mon, 12 Feb 2024 20:01:19 +0100
Subject: [PATCH] dox+sub

---
 b                                             |   2 +-
 ...ew-camtron.odt => 00_overview_camtron.odt} | Bin
 ...=> 01_camera_tracking_method_englisch.odt} | Bin
 dox/{notes_A => notes_a}                      |   0
 dox/{notes_B => notes_b}                      |   4 +
 dox/{notes_C => notes_c}                      |   0
 dox/{notes_D => notes_d}                      |   0
 dox/{notes_X => notes_x}                      |   0
 dox/scrap                                     | 473 +++++++++++++++++-
 dox/timeplan-milestones.ods                   | Bin 22633 -> 0 bytes
 dox/timeplan_milestones.ods                   | Bin 0 -> 24120 bytes
 dox/todo_ct                                   |  52 +-
 12 files changed, 492 insertions(+), 39 deletions(-)
 rename dox/{00-overview-camtron.odt => 00_overview_camtron.odt} (100%)
 rename dox/{01-camera-tracking-method-englisch.odt => 01_camera_tracking_method_englisch.odt} (100%)
 rename dox/{notes_A => notes_a} (100%)
 rename dox/{notes_B => notes_b} (98%)
 rename dox/{notes_C => notes_c} (100%)
 rename dox/{notes_D => notes_d} (100%)
 rename dox/{notes_X => notes_x} (100%)
 delete mode 100644 dox/timeplan-milestones.ods
 create mode 100644 dox/timeplan_milestones.ods

diff --git a/b b/b
index a6d5b19..aaaaf3f 160000
--- a/b
+++ b/b
@@ -1 +1 @@
-Subproject commit a6d5b193aa6c6d525828e9de7677701f3e4b1252
+Subproject commit aaaaf3faf667d2e3a66349bf1d6aa64321a6739b
diff --git a/dox/00-overview-camtron.odt b/dox/00_overview_camtron.odt
similarity index 100%
rename from dox/00-overview-camtron.odt
rename to dox/00_overview_camtron.odt
diff --git a/dox/01-camera-tracking-method-englisch.odt b/dox/01_camera_tracking_method_englisch.odt
similarity index 100%
rename from dox/01-camera-tracking-method-englisch.odt
rename to dox/01_camera_tracking_method_englisch.odt
diff --git a/dox/notes_A b/dox/notes_a
similarity index 100%
rename from dox/notes_A
rename to dox/notes_a
diff --git a/dox/notes_B b/dox/notes_b
similarity index 98%
rename from dox/notes_B
rename to dox/notes_b
index f1074a5..a4baf0d 100644
--- a/dox/notes_B
+++ b/dox/notes_b
@@ -9,6 +9,10 @@ Does
 use opencv to convert raw cam images into JPEG pixel format
 ###############################
 
+VmbSystem::RegisterCameraListObserver
+	For being notified whenever a camera is detected, disconnected, or changes its open state, use
+
+
 map cam -> MAC -> IP -> name (contains ID)
 	camtron1 000A4708ED3F 172.18.227.210 allied-alviumg1-240c-04ytr.idiv.de
 	camtron2 000A471C0C9D 172.18.227.211 allied-alviumg1-240c-04ytp.idiv.de
diff --git a/dox/notes_C b/dox/notes_c
similarity index 100%
rename from dox/notes_C
rename to dox/notes_c
diff --git a/dox/notes_D b/dox/notes_d
similarity index 100%
rename from dox/notes_D
rename to dox/notes_d
diff --git a/dox/notes_X b/dox/notes_x
similarity index 100%
rename from dox/notes_X
rename to dox/notes_x
diff --git a/dox/scrap b/dox/scrap
index e6bb121..83d2184 100644
--- a/dox/scrap
+++ b/dox/scrap
@@ -1,5 +1,474 @@
+//###############################
+//
+//    We create a FrameProcessor class that subclasses QObject and defines a slot processFrame() to handle frame processing.
+//    We create a FrameObserver class that subclasses IFrameObserver. In its constructor, we create an instance of FrameProcessor and move it to a worker thread.
+//    We connect the FrameObserver::frameReceived signal to the FrameProcessor::processFrame slot, so frame processing happens asynchronously in the worker thread.
+//    In the FrameObserver::FrameReceived function, we emit the frameReceived signal with the received frame, triggering asynchronous frame processing.
+//
+//  This way, frame processing occurs asynchronously in another thread, separate from the GUI thread. Adjust the code as needed to fit your application's requirements.
+//
+//###############################
+#include <QtCore>
+#include <VimbaCPP/Include/VimbaCPP.h>
+#include <opencv2/opencv.hpp>
 
-# misc - abbrev
-LUT - LookupTable
+using namespace AVT::VmbAPI;
 
+class FrameProcessor : public QObject
+{
+    Q_OBJECT
+
+public slots:
+    void processFrame(FramePtr pFrame)
+    {
+        VmbUint64_t timestamp;
+        if (VmbErrorSuccess == pFrame->GetTimestamp(timestamp))
+        {
+            // Convert timestamp to QDateTime for better handling with Qt
+            QDateTime dateTime = QDateTime::fromMSecsSinceEpoch(timestamp / 1000);
+
+            // Convert QDateTime to a string format
+            QString timestampStr = dateTime.toString("yyyy-MM-dd_HH-mm-ss");
+
+            // Process the frame
+            VmbUchar_t *buffer;
+            if (VmbErrorSuccess == pFrame->GetImage(buffer))
+            {
+                int width, height;
+                VmbUint32_t imageSize;
+                pFrame->GetWidth(width);
+                pFrame->GetHeight(height);
+                pFrame->GetImageSize(imageSize);
+
+                cv::Mat image(height, width, CV_8UC1, buffer);
+
+                // Save the frame with timestamp using Qt functions
+                QString filename = "camera_image_" + timestampStr + ".jpg";
+                cv::imwrite(filename.toStdString(), image);
+            }
+        }
+    }
+};
+
+class FrameObserver : public IFrameObserver
+{
+public:
+    FrameObserver(CameraPtr pCamera, QObject *parent = nullptr) : IFrameObserver(pCamera), m_processor(new FrameProcessor), m_thread(new QThread(parent))
+    {
+        m_processor->moveToThread(m_thread);
+        connect(this, &FrameObserver::frameReceived, m_processor, &FrameProcessor::processFrame);
+        m_thread->start();
+    }
+
+    ~FrameObserver()
+    {
+        m_thread->quit();
+        m_thread->wait();
+        delete m_thread;
+    }
+
+    void FrameReceived(const FramePtr pFrame) override
+    {
+        emit frameReceived(pFrame);
+    }
+
+signals:
+    void frameReceived(FramePtr pFrame);
+
+private:
+    FrameProcessor *m_processor;
+    QThread *m_thread;
+};
+
+###############################
+## FrameReceived with storing images along with timestamps
+#include <QtCore>
+#include <VimbaCPP/Include/VimbaCPP.h>
+#include <opencv2/opencv.hpp>
+
+using namespace AVT::VmbAPI;
+
+void FrameObserver::FrameReceived(const FramePtr pFrame)
+{
+    VmbUint64_t timestamp;
+    if (VmbErrorSuccess == pFrame->GetTimestamp(timestamp))
+    {
+        // Convert timestamp to QDateTime for better handling with Qt
+        QDateTime dateTime = QDateTime::fromMSecsSinceEpoch(timestamp / 1000);
+
+        // Convert QDateTime to a string format
+        QString timestampStr = dateTime.toString("yyyy-MM-dd_HH-mm-ss");
+
+        // Process the frame
+        VmbUchar_t *buffer;
+        if (VmbErrorSuccess == pFrame->GetImage(buffer))
+        {
+            int width, height;
+            VmbUint32_t imageSize;
+            pFrame->GetWidth(width);
+            pFrame->GetHeight(height);
+            pFrame->GetImageSize(imageSize);
+
+            cv::Mat image(height, width, CV_8UC1, buffer);
+
+            // Save the frame with timestamp using Qt functions
+            QString filename = "camera_image_" + timestampStr + ".jpg";
+            cv::imwrite(filename.toStdString(), image);
+        }
+    }
+}
+
+###############################
+## IsCommandDone
+err = feature->RunCommand();
+        if (err == VmbErrorSuccess)
+        {
+            bool commandDone = false;
+            do
+            {
+                if (feature->IsCommandDone(commandDone) != VmbErrorSuccess)
+                {
+                    break;
+                }
+            } while (commandDone == false);
+        }
+###############################
+
+#include <VimbaC/Include/VimbaC.h>
+#include <iostream>
+#include <chrono>
+
+using namespace std;
+using namespace chrono;
+
+class Camera {
+public:
+    Camera();
+    ~Camera();
+
+    bool initialize();
+    bool open();
+    void close();
+    bool startCapture();
+    void stopCapture();
+    bool captureFrame();
+
+private:
+    VmbHandle_t cameraHandle;
+};
+
+Camera::Camera() : cameraHandle(nullptr) {}
+
+Camera::~Camera() {
+    close();
+}
+
+bool Camera::initialize() {
+    return VmbErrorSuccess == VmbStartup();
+}
+
+bool Camera::open() {
+    VmbError_t err;
+
+    VmbCameraInfo_t* pCameraList = nullptr;
+    VmbUint32_t nCount = 0;
+
+    err = VmbCamerasList(nullptr, 0, &nCount, sizeof(VmbCameraInfo_t));
+    if (err != VmbErrorSuccess || nCount == 0) {
+        cout << "No cameras found or error listing cameras" << endl;
+        return false;
+    }
+
+    pCameraList = new VmbCameraInfo_t[nCount];
+    err = VmbCamerasList(pCameraList, nCount, &nCount, sizeof(VmbCameraInfo_t));
+    if (err != VmbErrorSuccess) {
+        cout << "Error retrieving camera list" << endl;
+        delete[] pCameraList;
+        return false;
+    }
+
+    if (nCount == 0) {
+        cout << "No cameras found" << endl;
+        delete[] pCameraList;
+        return false;
+    }
+
+    err = VmbCameraOpen(pCameraList[0].cameraIdString, VmbAccessModeFull, &cameraHandle);
+    delete[] pCameraList;
+
+    return err == VmbErrorSuccess;
+}
+
+void Camera::close() {
+    if (cameraHandle != nullptr) {
+        VmbCameraClose(cameraHandle);
+        cameraHandle = nullptr;
+    }
+}
+
+bool Camera::startCapture() {
+    return VmbErrorSuccess == VmbCaptureStart(cameraHandle);
+}
+
+void Camera::stopCapture() {
+    VmbCaptureEnd(cameraHandle);
+}
+
+bool Camera::captureFrame() {
+    VmbError_t err;
+
+    VmbFrame_t frame;
+    err = VmbFrameAnnounce(cameraHandle, &frame, sizeof(VmbFrame_t));
+    if (err != VmbErrorSuccess) {
+        cout << "Error announcing frame" << endl;
+        return false;
+    }
+
+    err = VmbCaptureFrameQueue(cameraHandle, &frame, nullptr);
+    if (err != VmbErrorSuccess) {
+        cout << "Error queuing frame" << endl;
+        return false;
+    }
+
+    err = VmbCaptureFrameWait(cameraHandle, &frame, VMB_INFINITE);
+    if (err != VmbErrorSuccess) {
+        cout << "Error waiting for frame" << endl;
+        return false;
+    }
+
+    // Get timestamp
+    VmbUint64_t timestamp;
+    err = VmbFrameGetTimestamp(cameraHandle, frame, &timestamp);
+    if (err == VmbErrorSuccess) {
+        auto duration = duration_cast<milliseconds>(nanoseconds(timestamp));
+        cout << "Frame captured at timestamp: " << duration.count() << "ms" << endl;
+    }
+
+    err = VmbFrameRevoke(cameraHandle, &frame);
+    if (err != VmbErrorSuccess) {
+        cout << "Error revoking frame" << endl;
+        return false;
+    }
+
+    return true;
+}
+
+int main() {
+    Camera camera;
+
+    if (!camera.initialize()) {
+        cout << "Failed to initialize Vimba" << endl;
+        return -1;
+    }
+
+    if (!camera.open()) {
+        cout << "Failed to open camera" << endl;
+        return -1;
+    }
+
+    if (!camera.startCapture()) {
+        cout << "Failed to start capture" << endl;
+        return -1;
+    }
+
+    // Capture frames and perform processing
+
+    // For demonstration purposes, let's capture 10 frames
+    for (int i = 0; i < 10; ++i) {
+        if (!camera.captureFrame()) {
+            cout << "Error capturing frame" << endl;
+            break;
+        }
+        // Add your processing logic here
+    }
+
+    camera.stopCapture();
+    camera.close();
+
+    VmbShutdown();
+
+    return 0;
+}
+
+###############################
+#include <QCoreApplication>
+#include <QDebug>
+#include <QString>
+#include <QDateTime>
+#include <QThread>
+#include <VimbaC/Include/VimbaC.h>
+#include <opencv2/opencv.hpp>
+
+class VimbaCamera : public QObject {
+    Q_OBJECT
+
+public:
+    VimbaCamera(QObject *parent = nullptr);
+    ~VimbaCamera();
+
+    bool initialize();
+    bool open();
+    void close();
+    bool startCapture();
+    void stopCapture();
+    bool captureFrame();
+
+signals:
+    void frameCaptured(const QString &timestamp, const cv::Mat &image);
+
+private:
+    VmbHandle_t cameraHandle;
+    VmbFrame_t frame;
+    // Add other camera-related members here
+};
+
+VimbaCamera::VimbaCamera(QObject *parent) : QObject(parent), cameraHandle(nullptr) {}
+
+VimbaCamera::~VimbaCamera() {
+    close();
+}
+
+bool VimbaCamera::initialize() {
+    return VmbErrorSuccess == VmbStartup();
+}
+
+bool VimbaCamera::open() {
+    VmbError_t err;
+
+    // Add code to list and open the Vimba camera
+    // ...
+
+    return err == VmbErrorSuccess;
+}
+
+void VimbaCamera::close() {
+    if (cameraHandle != nullptr) {
+        // Add code to close the Vimba camera
+        // ...
+        cameraHandle = nullptr;
+    }
+}
+
+bool VimbaCamera::startCapture() {
+    VmbError_t err;
+
+    // Add code to configure camera settings for capturing
+    // ...
+
+    // Announce the frame
+    err = VmbFrameAnnounce(cameraHandle, &frame, sizeof(VmbFrame_t));
+    if (err != VmbErrorSuccess) {
+        qDebug() << "Error announcing frame";
+        return false;
+    }
+
+    // Add code to start capturing frames using Vimba API
+    // ...
+
+    return true;
+}
+
+void VimbaCamera::stopCapture() {
+    // Add code to stop capturing frames using Vimba API
+    // ...
+
+    // Revoke the frame
+    VmbError_t err = VmbFrameRevoke(cameraHandle, &frame);
+    if (err != VmbErrorSuccess) {
+        qDebug() << "Error revoking frame";
+    }
+}
+
+bool VimbaCamera::captureFrame() {
+    VmbError_t err;
+
+    // Add code to capture a frame with timestamp using Vimba API
+    // ...
+
+    err = VmbCaptureFrameWait(cameraHandle, &frame, VMB_INFINITE);
+    if (err != VmbErrorSuccess) {
+        qDebug() << "Error waiting for frame";
+        return false;
+    }
+
+    // Get timestamp
+    VmbUint64_t timestamp;
+    err = VmbFrameGetTimestamp(cameraHandle, frame, &timestamp);
+    if (err == VmbErrorSuccess) {
+        auto duration = QDateTime::fromMSecsSinceEpoch(timestamp / 1000000);  // Convert microseconds to milliseconds
+        qDebug() << "Frame captured at timestamp:" << duration.toString("yyyy-MM-dd hh:mm:ss.zzz");
+
+        // Convert the frame to a QImage and emit the signal
+        cv::Mat image(frame.height, frame.width, CV_8UC1, frame.buffer);
+        emit frameCaptured(duration.toString("yyyy-MM-dd_hhmmsszzz"), image.clone());
+    }
+
+    // Revoke the frame
+    err = VmbFrameRevoke(cameraHandle, &frame);
+    if (err != VmbErrorSuccess) {
+        qDebug() << "Error revoking frame";
+        return false;
+    }
+
+    return true;
+}
+
+class CameraThread : public QThread {
+    Q_OBJECT
+
+public:
+    CameraThread(int cameraIndex, QObject *parent = nullptr) : QThread(parent), cameraIndex(cameraIndex) {}
+
+protected:
+    void run() override {
+        VimbaCamera camera;
+        connect(&camera, &VimbaCamera::frameCaptured, this, &CameraThread::handleFrameCaptured);
+
+        if (!camera.initialize()) {
+            qDebug() << "Camera" << cameraIndex << "Failed to initialize Vimba";
+            return;
+        }
+
+        if (!camera.open()) {
+            qDebug() << "Camera" << cameraIndex << "Failed to open Vimba camera";
+            return;
+        }
+
+        if (!camera.startCapture()) {
+            qDebug() << "Camera" << cameraIndex << "Failed to start capturing frames";
+            return;
+        }
+
+        exec();  // Start the thread event loop
+    }
+
+private:
+    int cameraIndex;
+
+private slots:
+    void handleFrameCaptured(const QString &timestamp, const cv::Mat &image) {
+        // Handle the captured frame (e.g., save as JPEG)
+        QString filename = "camera" + QString::number(cameraIndex) + "_" + timestamp + ".jpg";
+        cv::imwrite(filename.toStdString(), image);
+        qDebug() << "Camera" << cameraIndex << "Frame saved as:" << filename;
+    }
+};
+
+int main(int argc, char *argv[]) {
+    QCoreApplication a(argc, argv);
+
+    // For demonstration purposes, create two camera threads
+    CameraThread cameraThread1(1);
+    CameraThread cameraThread2(2);
+
+    // Start the camera threads
+    cameraThread1.start();
+    cameraThread2.start();
+
+    // Wait for the threads to finish (this won't block the main thread event loop)
+    cameraThread1.wait();
+    cameraThread2.wait();
+
+    return a.exec();
+}
 
diff --git a/dox/timeplan-milestones.ods b/dox/timeplan-milestones.ods
deleted file mode 100644
index af243d44fd0f261616d34b706e7bf70aa9c71c3c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 22633
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
PK3`1FgPKjXi@kpVPUJ2{

diff --git a/dox/timeplan_milestones.ods b/dox/timeplan_milestones.ods
new file mode 100644
index 0000000000000000000000000000000000000000..79c6e203e4c5bcd897cb17c9483ee24fba1b5326
GIT binary patch
literal 24120
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

literal 0
HcmV?d00001

diff --git a/dox/todo_ct b/dox/todo_ct
index 2c62887..e4dd6d1 100644
--- a/dox/todo_ct
+++ b/dox/todo_ct
@@ -8,48 +8,24 @@ CAMTRON PROCESSING PIPELINE
 ###########################
 "tackle long-term complex projects from beginning to end"
 
-- ⏲️
-- 🗣️  sebastian hostname-fix IP
-- ‼️ cam works with VM?
-	read docu, write alliedvision
-	-- if yes.
-		test (VV)
-		set hostname (for fixip)
-	-- if no
-		- communicate w sebastian 1rst.
-		- communicate w uli
-- ‼️  HPC. store some data 2018/2019 + vids. delete rest. write HPC guy
-- ‼️  mv big ct-data to hdd
-- use copilot more efficiently
-	- read Tuts, configure
-
-
-
 B) recorder - camera produces frames and timestamps
 ###########################
-	(depends on cam in A)!!!
-	- use new api VimbaX
-	- read manual (c++ / vimba)
-============================
+	- 🗣️  sebastian hostname-fix IP -> ‼️ cam works with VM?
 	- wait and detect cams
-	- ‼️ produce frames & timestamps
+	- ‼️ produce frames & timestamps & save as jpg
+	- put cams in own thread
 ============================
 	CORE
 		- list cameras
 			- test: core::listCams worx with multiple cams?
-
-		- store/load cam settings
+		- store/load cam and app settings (opencv or vimba or QT)
+			- cam mappings (IP/MAC/ID)
+			- out_dir
 		- calibrate
-			- see ada - HPC - CALI SW
+			- see opencv tut + code/bash cali example
+			- ada-HPC-CALISW
 		- record
 		- stop recording
-	- consider using app settings in a json-file / QSettings
-		- cam mappings (IP/MAC/ID)
-		- out_dir
-
-	CONSOLE
-		- print: convert '\n' to linebreaks
-		-
 
 ===============================
 	- get pix, using VV and recorder
@@ -70,13 +46,12 @@ B) recorder - camera produces frames and timestamps
 A)
 ###########################
 	- test vm, else buy ws!
-	- !! light
+	- ‼️ light
 		- 2*LEDs: 1*day + 1*night
 		- find ecolux hw (Boxes, DMX per unit, DMX splitter/controller)
-	- !! arenas
+	- ‼️ 🗣️ arenas - @laura asks 3D-Printer
 		- Acrylzylinder in 2 teile gesaegt.
-	- floor ?
-		- gips+color+lack..
+	- floor: find big white paperrolle in BUG/Storage
 
 
 C) background subtraction
@@ -142,6 +117,11 @@ ctb
 
 Done
 #######################
+- use new api VimbaX
+- read manual (c++ / vimba)
+- write alliedvision (MTU)
+- HPC. store some data 2018/2019 + vids. delete rest. write HPC guy
+- use copilot more efficiently -> read Tuts, configure -> see ai
 - print and printlist()
 - integrate versionstring in new arch
 - mark current cam [*] <-- selected. others []
-- 
GitLab