Paparazzi UAS  v5.15_devel-81-gd13dafb
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
colorfilter.c
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015
3  *
4  * This file is part of Paparazzi.
5  *
6  * Paparazzi is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2, or (at your option)
9  * any later version.
10  *
11  * Paparazzi is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with Paparazzi; see the file COPYING. If not, write to
18  * the Free Software Foundation, 59 Temple Place - Suite 330,
19  * Boston, MA 02111-1307, USA.
20  */
21 
26 // Own header
28 #include <stdio.h>
29 
31 
32 #ifndef COLORFILTER_FPS
33 #define COLORFILTER_FPS 0
34 #endif
35 PRINT_CONFIG_VAR(COLORFILTER_FPS)
36 
37 
38 #ifndef COLORFILTER_SEND_OBSTACLE
39 #define COLORFILTER_SEND_OBSTACLE FALSE
40 #endif
41 PRINT_CONFIG_VAR(COLORFILTER_SEND_OBSTACLE)
42 
43 struct video_listener *listener = NULL;
44 
45 // Filter Settings
52 
53 // Result
54 volatile int color_count = 0;
55 
56 #include "subsystems/abi.h"
57 
58 // Function
59 static struct image_t *colorfilter_func(struct image_t *img)
60 {
61  // Filter
62  color_count = image_yuv422_colorfilt(img, img,
63  color_lum_min, color_lum_max,
64  color_cb_min, color_cb_max,
65  color_cr_min, color_cr_max
66  );
67 
69  if (color_count > 20)
70  {
71  AbiSendMsgOBSTACLE_DETECTION(OBS_DETECTION_COLOR_ID, 1.f, 0.f, 0.f);
72  }
73  else
74  {
75  AbiSendMsgOBSTACLE_DETECTION(OBS_DETECTION_COLOR_ID, 10.f, 0.f, 0.f);
76  }
77  }
78 
79  return img; // Colorfilter did not make a new image
80 }
81 
82 void colorfilter_init(void)
83 {
84  cv_add_to_device(&COLORFILTER_CAMERA, colorfilter_func, COLORFILTER_FPS);
85 }
void colorfilter_init(void)
Definition: colorfilter.c:82
uint8_t color_cb_max
Definition: colorfilter.c:49
uint8_t color_lum_max
Definition: colorfilter.c:47
Definition: image.h:43
struct video_listener * cv_add_to_device(struct video_config_t *device, cv_function func, uint16_t fps)
Definition: cv.c:46
struct video_listener * listener
Definition: colorfilter.c:43
Image helper functions like resizing, color filter, converters...
uint8_t color_cr_max
Definition: colorfilter.c:51
#define COLORFILTER_FPS
Default FPS (zero means run at camera fps)
Definition: colorfilter.c:33
uint8_t color_cb_min
Definition: colorfilter.c:48
static struct image_t * colorfilter_func(struct image_t *img)
Definition: colorfilter.c:59
unsigned char uint8_t
Definition: types.h:14
uint8_t color_lum_min
Definition: colorfilter.c:46
#define OBS_DETECTION_COLOR_ID
uint8_t color_cr_min
Definition: colorfilter.c:50
uint16_t image_yuv422_colorfilt(struct image_t *input, struct image_t *output, uint8_t y_m, uint8_t y_M, uint8_t u_m, uint8_t u_M, uint8_t v_m, uint8_t v_M)
Filter colors in an YUV422 image.
Definition: image.c:160
#define COLORFILTER_SEND_OBSTACLE
Default sonar/agl to use in opticflow visual_estimator.
Definition: colorfilter.c:39
volatile int color_count
Definition: colorfilter.c:54