From 7274530fae28f87a8885dd6a31384d4b5604b959 Mon Sep 17 00:00:00 2001 From: Steffen Pohle Date: Fri, 8 Mar 2024 16:17:19 +0100 Subject: [PATCH] if follow is not working use default detection. --- detect.cc | 38 ++++++++++++++++++++++---------------- detect.h | 1 + gui.cc | 8 ++++---- simpleskycam.ui | 1 - 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/detect.cc b/detect.cc index 1df7ba5..121de5d 100644 --- a/detect.cc +++ b/detect.cc @@ -93,23 +93,11 @@ void Detect::Thread() { LockMutex(); // lock Config // - // 1. if no position of the object is known, search brightest - // object on the inFrame image. - if (objectX < objectW/2 || objectX > (inFrame.w-objectW/2) || - objectY < objectH/2 || objectY > (inFrame.h-objectH/2)) - { - switch (autodetecttype) { - case AUTODETECT_BRIGHT: - InputDetect(&objectX, &objectY); - break; - default: - break; - } - } + // 1. check near the last known position. // - // 2. check near the last known position. - // - else { + if (objectX >= objectW/2 && objectX <= (inFrame.w-objectW/2) && + objectY >= objectH/2 && objectY <= (inFrame.h-objectH/2)) + { switch (autofollowtype) { case AUTOFOLLOW_BRIGHT: InputDetect(&objectX, &objectY); @@ -127,6 +115,21 @@ void Detect::Thread() { } } + // + // 2. if no position of the object is known, search brightest + // object on the inFrame image. + if (objectX < objectW/2 || objectX > (inFrame.w-objectW/2) || + objectY < objectH/2 || objectY > (inFrame.h-objectH/2)) + { + switch (autodetecttype) { + case AUTODETECT_BRIGHT: + InputDetect(&objectX, &objectY); + break; + default: + break; + } + } + oldFrame.CopyFrom(&inFrame); UnLockInMutex(); @@ -225,6 +228,8 @@ void Detect::InputDetect(int *posx, int *posy) { didx = 3* (image.w * dy + dx); for (i = 0; i < 3; i++) pxi[didx+i] = pxs[idx+i]; } + + return; } /* returns approx. 8-bit gray value */ @@ -320,6 +325,7 @@ void Detect::InputDetectCrossC(int *posx, int *posy) { *posx += (mxx-DET_MAXSHIFT/2); *posy += (mxy-DET_MAXSHIFT/2); CopyObjectImage (*posx, *posy); + return; } diff --git a/detect.h b/detect.h index d3f47c3..2b30a53 100644 --- a/detect.h +++ b/detect.h @@ -147,6 +147,7 @@ struct { uint32_t *detmatrix; int posx; // position of the detected object int posy; // position of the detected object + int valid; // valid position detected } typedef DetectOutput; diff --git a/gui.cc b/gui.cc index af31462..132d807 100644 --- a/gui.cc +++ b/gui.cc @@ -56,12 +56,12 @@ void cb_window_show (GtkWidget *widget, gpointer data) { GtkWidget *btnstop = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "btn-video-stop")); GtkWidget *w = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "detect-entry-w")); GtkWidget *h = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "detect-entry-h")); - GtkWidget *rboff = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "detect-pos-cboff")); - GtkWidget *rbcrossc = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "detect-type-indet2")); + GtkWidget *rbdefdetect = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "detect-pos-cbbright")); + GtkWidget *rbdeffolow = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "detect-type-indet2")); // changing the value, will cause the 'change' event to be triggered - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(rboff), true); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(rbcrossc), true); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(rbdefdetect), true); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(rbdeffolow), true); gtk_widget_set_sensitive(btnstart, true); diff --git a/simpleskycam.ui b/simpleskycam.ui index f7fb5bb..bca2a0a 100644 --- a/simpleskycam.ui +++ b/simpleskycam.ui @@ -307,7 +307,6 @@ start start True - detect-pos-cbbright