예제 #1
0
void track_get_model_hsv(int ch, int *h_min, int *h_max, int *s_min, int *v_min)
{
    if (!channel_in_bounds(ch)) return;
    *h_min = tracklib_results_snapshot.channels[ch].hsv_model[0];
    *h_max = tracklib_results_snapshot.channels[ch].hsv_model[1];
    *s_min = tracklib_results_snapshot.channels[ch].hsv_model[2];
    *v_min = tracklib_results_snapshot.channels[ch].hsv_model[3];
}
예제 #2
0
void track_set_model_hsv(int ch, int h_min, int h_max, int s_min, int v_min)
{
    if (!channel_in_bounds(ch)) return;
    tracklib_results_snapshot.channels[ch].new_model = 1;
    tracklib_results_snapshot.channels[ch].hsv_model[0] = h_min;
    tracklib_results_snapshot.channels[ch].hsv_model[1] = h_max;
    tracklib_results_snapshot.channels[ch].hsv_model[2] = s_min;
    tracklib_results_snapshot.channels[ch].hsv_model[3] = v_min;
    shared_mem_write(tracklib_sm_results, &tracklib_results_snapshot, sizeof(tracklib_results_snapshot));
}
예제 #3
0
int track_count(int ch)
{
  if (!channel_in_bounds(ch)) return -1;
  return tracklib_results_snapshot.channels[ch].n_blobs;
}
예제 #4
0
static int blob_in_bounds(int ch, int i)
{
  if (!channel_in_bounds(ch)) return 0;
  return 0 <= i && i < tracklib_results_snapshot.channels[ch].n_blobs;
}
int ADC_device_sample(const size_t channel)
{
        return channel_in_bounds(channel) ?
                ADCConvertedValues[channel] : -1;
}