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 LockMutex(); // lock Config
// //
// 1. if no position of the object is known, search brightest // 1. check near the last known position.
// 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;
}
}
// //
// 2. check near the last known position. if (objectX >= objectW/2 && objectX <= (inFrame.w-objectW/2) &&
// objectY >= objectH/2 && objectY <= (inFrame.h-objectH/2))
else { {
switch (autofollowtype) { switch (autofollowtype) {
case AUTOFOLLOW_BRIGHT: case AUTOFOLLOW_BRIGHT:
InputDetect(&objectX, &objectY); 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); oldFrame.CopyFrom(&inFrame);
UnLockInMutex(); UnLockInMutex();
@ -225,6 +228,8 @@ void Detect::InputDetect(int *posx, int *posy) {
didx = 3* (image.w * dy + dx); didx = 3* (image.w * dy + dx);
for (i = 0; i < 3; i++) pxi[didx+i] = pxs[idx+i]; for (i = 0; i < 3; i++) pxi[didx+i] = pxs[idx+i];
} }
return;
} }
/* returns approx. 8-bit gray value */ /* returns approx. 8-bit gray value */
@ -320,6 +325,7 @@ void Detect::InputDetectCrossC(int *posx, int *posy) {
*posx += (mxx-DET_MAXSHIFT/2); *posx += (mxx-DET_MAXSHIFT/2);
*posy += (mxy-DET_MAXSHIFT/2); *posy += (mxy-DET_MAXSHIFT/2);
CopyObjectImage (*posx, *posy); CopyObjectImage (*posx, *posy);
return;
} }

@ -147,6 +147,7 @@ struct {
uint32_t *detmatrix; uint32_t *detmatrix;
int posx; // position of the detected object int posx; // position of the detected object
int posy; // position of the detected object int posy; // position of the detected object
int valid; // valid position detected
} typedef DetectOutput; } 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 *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 *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 *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 *rbdefdetect = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "detect-pos-cbbright"));
GtkWidget *rbcrossc = GTK_WIDGET(gtk_builder_get_object (GTK_BUILDER(_builder_), "detect-type-indet2")); 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 // 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(rbdefdetect), true);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(rbcrossc), true); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(rbdeffolow), true);
gtk_widget_set_sensitive(btnstart, true); gtk_widget_set_sensitive(btnstart, true);

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

Loading…
Cancel
Save