summaryrefslogtreecommitdiffstats
path: root/inc/vision-artificial/image/iface.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'inc/vision-artificial/image/iface.hpp')
-rw-r--r--inc/vision-artificial/image/iface.hpp333
1 files changed, 333 insertions, 0 deletions
diff --git a/inc/vision-artificial/image/iface.hpp b/inc/vision-artificial/image/iface.hpp
new file mode 100644
index 0000000..3d1fdd4
--- /dev/null
+++ b/inc/vision-artificial/image/iface.hpp
@@ -0,0 +1,333 @@
+/******************************************************************************
+ * Copyright (C) 2018 Alejandro Colomar Andrés *
+ * SPDX-License-Identifier: GPL-2.0-only *
+ ******************************************************************************/
+
+
+/******************************************************************************
+ ******* include guard ********************************************************
+ ******************************************************************************/
+#ifndef VA_IMAGE_IFACE_HPP
+#define VA_IMAGE_IFACE_HPP
+
+
+/******************************************************************************
+ ******* headers **************************************************************
+ ******************************************************************************/
+#include <cstddef>
+
+#include <vector>
+
+#include <opencv2/opencv.hpp>
+
+
+/******************************************************************************
+ ******* macros ***************************************************************
+ ******************************************************************************/
+#define CONTOURS_MAX (0xFFFF)
+#define OCR_TEXT_MAX (0xFFFFFF)
+#define ZB_CODES_MAX (10)
+#define ZBAR_LEN_MAX (0xFFFFFF)
+
+#define IMG_IFACE_THR_OTSU (-1)
+
+
+/******************************************************************************
+ ******* enums ****************************************************************
+ ******************************************************************************/
+enum Img_Iface_Action {
+ IMG_IFACE_ACT_FOO = 0x000000u,
+
+ IMG_IFACE_ACT_ALX = 0x000010u,
+ IMG_IFACE_ACT_LOCAL_MAX,
+ IMG_IFACE_ACT_SKELETON,
+ IMG_IFACE_ACT_LINES_HORIZONTAL,
+ IMG_IFACE_ACT_LINES_VERTICAL,
+ IMG_IFACE_ACT_MEAN_HORIZONTAL,
+ IMG_IFACE_ACT_MEAN_VERTICAL,
+ IMG_IFACE_ACT_MEDIAN_HORIZONTAL,
+ IMG_IFACE_ACT_MEDIAN_VERTICAL,
+
+ IMG_IFACE_ACT_CV = 0x000100u,
+ IMG_IFACE_ACT_PIXEL_GET,
+ IMG_IFACE_ACT_PIXEL_SET,
+ IMG_IFACE_ACT_SET_ROI,
+ IMG_IFACE_ACT_SET_ROI_2RECT,
+ IMG_IFACE_ACT_AND_2REF,
+ IMG_IFACE_ACT_NOT,
+ IMG_IFACE_ACT_OR_2REF,
+ IMG_IFACE_ACT_COMPONENT,
+ IMG_IFACE_ACT_DILATE,
+ IMG_IFACE_ACT_ERODE,
+ IMG_IFACE_ACT_DILATE_ERODE,
+ IMG_IFACE_ACT_ERODE_DILATE,
+ IMG_IFACE_ACT_SMOOTH,
+ IMG_IFACE_ACT_SOBEL,
+ IMG_IFACE_ACT_BORDER,
+ IMG_IFACE_ACT_MIRROR,
+ IMG_IFACE_ACT_ROTATE_ORTO,
+ IMG_IFACE_ACT_ROTATE,
+ IMG_IFACE_ACT_ROTATE_2RECT,
+ IMG_IFACE_ACT_ADAPTIVE_THRESHOLD,
+ IMG_IFACE_ACT_CVT_COLOR,
+ IMG_IFACE_ACT_DISTANCE_TRANSFORM,
+ IMG_IFACE_ACT_THRESHOLD,
+ IMG_IFACE_ACT_HISTOGRAM,
+ IMG_IFACE_ACT_HISTOGRAM_C3,
+ IMG_IFACE_ACT_CONTOURS,
+ IMG_IFACE_ACT_CONTOURS_SIZE,
+ IMG_IFACE_ACT_BOUNDING_RECT,
+ IMG_IFACE_ACT_FIT_ELLIPSE,
+ IMG_IFACE_ACT_MIN_AREA_RECT,
+ IMG_IFACE_ACT_HOUGH_CIRCLES,
+
+ IMG_IFACE_ACT_ORB = 0x000200u,
+ IMG_IFACE_ACT_ALIGN,
+
+ IMG_IFACE_ACT_CALIB3D = 0x000400u,
+ IMG_IFACE_ACT_CALIBRATE,
+ IMG_IFACE_ACT_UNDISTORT,
+
+ IMG_IFACE_ACT_ZB = 0x000800u,
+ IMG_IFACE_ACT_DECODE,
+
+ IMG_IFACE_ACT_OCR = 0x001000u,
+ IMG_IFACE_ACT_READ,
+
+ IMG_IFACE_ACT_IMGI = 0x002000u,
+ IMG_IFACE_ACT_APPLY,
+ IMG_IFACE_ACT_DISCARD,
+ IMG_IFACE_ACT_SAVE_MEM,
+ IMG_IFACE_ACT_LOAD_MEM,
+ IMG_IFACE_ACT_SAVE_REF,
+
+ IMG_IFACE_ACT_SAVE = 0x004000u,
+ IMG_IFACE_ACT_SAVE_FILE,
+ IMG_IFACE_ACT_SAVE_UPDT
+};
+
+enum Img_Iface_Cmp {
+ IMG_IFACE_CMP_BLUE = 0,
+ IMG_IFACE_CMP_GREEN,
+ IMG_IFACE_CMP_RED
+};
+
+enum Img_Iface_Cmp_HSV {
+ IMG_IFACE_CMP_HUE = 0,
+ IMG_IFACE_CMP_SATURATION,
+ IMG_IFACE_CMP_VALUE
+};
+
+enum ImgI_Smooth {
+ IMGI_SMOOTH_MEAN = 1,
+ IMGI_SMOOTH_GAUSS,
+ IMGI_SMOOTH_MEDIAN
+};
+
+enum Img_Iface_OCR_Lang {
+ IMG_IFACE_OCR_LANG_ENG = 0,
+ IMG_IFACE_OCR_LANG_SPA,
+ IMG_IFACE_OCR_LANG_CAT,
+ IMG_IFACE_OCR_LANG_DIGITS,
+ IMG_IFACE_OCR_LANG_DIGITS_COMMA
+};
+
+enum Img_Iface_OCR_Conf {
+ IMG_IFACE_OCR_CONF_NONE = 0,
+ IMG_IFACE_OCR_CONF_PRICE
+};
+
+
+/******************************************************************************
+ ******* structs / unions *****************************************************
+ ******************************************************************************/
+/* cv ------------------------------------------------------------------------*/
+struct Img_Iface_Data_Pixel_Get {
+ unsigned char *val;
+ ptrdiff_t x;
+ ptrdiff_t y;
+};
+
+struct Img_Iface_Data_Pixel_Set {
+ unsigned char val;
+ ptrdiff_t x;
+ ptrdiff_t y;
+};
+
+struct Img_Iface_Data_SetROI {
+ class cv::Rect_ <int> rect;
+};
+
+struct Img_Iface_Data_Component {
+ ptrdiff_t cmp;
+};
+
+struct Img_Iface_Data_Dilate_Erode {
+ int i;
+};
+
+struct Img_Iface_Data_Smooth {
+ int method;
+ int ksize;
+};
+
+struct Img_Iface_Data_Sobel {
+ int dx;
+ int dy;
+ int ksize;
+};
+
+struct Img_Iface_Data_Border {
+ ptrdiff_t size;
+};
+
+struct Img_Iface_Data_Mirror {
+ int axis;
+};
+
+struct Img_Iface_Data_Rotate_Orto {
+ int n;
+};
+
+struct Img_Iface_Data_Rotate {
+ class cv::Point_ <float> center;
+ double angle;
+};
+
+struct Img_Iface_Data_Adaptive_Thr {
+ int method;
+ int thr_typ;
+ int ksize;
+};
+
+struct Img_Iface_Data_Cvt_Color {
+ int method;
+};
+
+struct Img_Iface_Data_Threshold {
+ int thr_typ;
+ int thr_val;
+};
+
+struct Img_Iface_Data_Histogram {
+ class cv::Mat *hist_c0;
+ class cv::Mat *hist_c1;
+ class cv::Mat *hist_c2;
+ class cv::Mat *hist_img;
+};
+
+struct Img_Iface_Data_Contours {
+ class std::vector <class std::vector <class cv::Point_ <int>>> *contours;
+ class cv::Mat *hierarchy;
+};
+
+struct Img_Iface_Data_Contours_Size {
+ const class std::vector <class std::vector <class cv::Point_ <int>>> *contours;
+ double *area;
+ double *perimeter;
+};
+
+struct Img_Iface_Data_Bounding_Rect {
+ const class std::vector <class cv::Point_ <int>> *contour;
+ class cv::Rect_ <int> *rect;
+ bool show;
+};
+
+struct Img_Iface_Data_MinARect {
+ const class std::vector <class cv::Point_ <int>> *contour;
+ class cv::RotatedRect *rect;
+ bool show;
+};
+
+struct Img_Iface_Data_Hough_Circles {
+ class std::vector <class cv::Vec <float, 3>> *circles;
+ double dist_min;
+ double param_1;
+ double param_2;
+ int radius_min;
+ int radius_max;
+};
+
+/* calib3d -------------------------------------------------------------------*/
+struct Img_Iface_Data_Calibrate {
+ class cv::Mat *intrinsic_mat;
+ class cv::Mat *dist_coefs;
+ class std::vector <class cv::Mat> *rvecs;
+ class std::vector <class cv::Mat> *tvecs;
+};
+
+struct Img_Iface_Data_Undistort {
+ const class cv::Mat *intrinsic_mat;
+ const class cv::Mat *dist_coefs;
+};
+
+/* zbar ----------------------------------------------------------------------*/
+struct Img_Iface_Data_Decode {
+ int code_type;
+};
+
+struct Img_Iface_ZB_Codes {
+ ptrdiff_t n;
+ struct {
+ int type;
+ char sym_name [80];
+ char data [ZBAR_LEN_MAX];
+ } arr [ZB_CODES_MAX];
+};
+
+/* ocr -----------------------------------------------------------------------*/
+struct Img_Iface_Data_Read {
+ int lang;
+ int conf;
+ struct {
+ void *data;
+ ptrdiff_t width;
+ ptrdiff_t height;
+ int B_per_pix;
+ int B_per_line;
+ } img;
+};
+
+
+/******************************************************************************
+ ******* variables ************************************************************
+ ******************************************************************************/
+extern char img_ocr_text [OCR_TEXT_MAX];
+extern struct Img_Iface_ZB_Codes zb_codes;
+
+
+/******************************************************************************
+ ******* extern functions *****************************************************
+ ******************************************************************************/
+extern "C"
+{
+void img_iface_init (void);
+void img_iface_deinit (void);
+void img_iface_load (const char *fpath, const char *fname);
+void img_iface_cleanup (void);
+void img_iface_act (int action, const void *data);
+void img_iface_show_img (void);
+void img_iface_show_hist_c1 (void);
+void img_iface_show_hist_c3 (void);
+}
+
+
+/******************************************************************************
+ ******* static inline functions (prototypes) *********************************
+ ******************************************************************************/
+
+
+/******************************************************************************
+ ******* static inline functions (definitions) ********************************
+ ******************************************************************************/
+
+
+/******************************************************************************
+ ******* include guard ********************************************************
+ ******************************************************************************/
+#endif /* vision-artificial/image/iface.hpp */
+
+
+/******************************************************************************
+ ******* end of file **********************************************************
+ ******************************************************************************/