if follow is not working use default detection.

master
Steffen Pohle 2 years ago
parent c54953fcc8
commit 7274530fae

@ -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;
}

@ -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;

@ -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);

@ -307,7 +307,6 @@
<property name="halign">start</property>
<property name="valign">start</property>
<property name="draw-indicator">True</property>
<property name="group">detect-pos-cbbright</property>
<signal name="toggled" handler="cb_detect_detecttype" swapped="no"/>
</object>
<packing>

Loading…
Cancel
Save