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