Advertisement
lepe

opencv.vapi

Jan 18th, 2012
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Vala 43.87 KB | None | 0 0
  1. /**
  2.  * http://code.coeusgroup.com/vapis/opencv.vapi
  3.  * OpenCV Vala Bindings
  4.  * Copyright 2010 Evan Nemerson <evan@coeus-group.com>
  5.  *
  6.  * This file contains modifications by A.Lepe
  7.  * If you want the last official version, contact Evan Nemerson
  8.  */
  9.  
  10. [CCode (cheader_filename = "cv.h", cprefix = "Cv", lower_case_cprefix = "cv")]
  11. namespace OpenCV {
  12.     [Compact, CCode (cname = "CvArr", has_type_id = false)]
  13.     public class Array {
  14.         [CCode (cname = "cvGetCol")]
  15.         public OpenCV.Matrix get_col (OpenCV.Matrix submat, int col);
  16.         [CCode (cname = "cvGetCols")]
  17.         public OpenCV.Matrix get_cols (OpenCV.Matrix submat, int start_col, int end_col);
  18.         [CCode (cname = "cvGetDiag")]
  19.         public OpenCV.Matrix get_diagonal (OpenCV.Matrix submat, int diag = 0);
  20.         [CCode (cname = "cvGetDimSize")]
  21.         public int get_dimension_size (int index);
  22.         [CCode (cname = "cvGetDims")]
  23.         public int get_dimensions (int[]? sizes = null);
  24.         [CCode (cname = "cvGetElemType")]
  25.         public OpenCV.Type get_elem_type ();
  26.         [CCode (cname = "cvGetImage")]
  27.         public OpenCV.IPL.Image get_image (OpenCV.IPL.Image header);
  28.         [CCode (cname = "cvGetMat")]
  29.         public OpenCV.Matrix get_matrix (OpenCV.Matrix header, int[]? coi = null, int allowND = 0);
  30.         [CCode (cname = "cvGetRow")]
  31.         public OpenCV.Matrix get_row (OpenCV.Matrix submat, int row);
  32.         [CCode (cname = "cvGetRows")]
  33.         public OpenCV.Matrix get_rows (OpenCV.Matrix submat, int start_row, int end_Row, int delta_row = 1);
  34.         [CCode (cname = "cvGetSubRect")]
  35.         public OpenCV.Matrix get_subrectangle (OpenCV.Matrix submat, OpenCV.Rectangle rect);
  36.  
  37.         [CCode (cname = "cvAdd")]
  38.         public void add (OpenCV.Array src2, OpenCV.Array dst, OpenCV.Array? mask = null);
  39.         [CCode (cname = "cvAddS")]
  40.         public void add_scalar (OpenCV.Scalar value, OpenCV.Array dst, OpenCV.Array? mask = null);
  41.         [CCode (cname = "cvSub")]
  42.         public void subtract (OpenCV.Array src2, OpenCV.Array dst, OpenCV.Array? mask = null);
  43.         [CCode (cname = "cvSubS")]
  44.         public void subtract_scalar (OpenCV.Scalar value, OpenCV.Array dst, OpenCV.Array? mask = null);
  45.         [CCode (cname = "cvSubRS")] // what is "R"? "subtract_r_scalar" sucks
  46.         public void subtract_r_scalar (OpenCV.Scalar value, OpenCV.Array dst, OpenCV.Array? mask = null);
  47.         [CCode (cname = "cvMul")]
  48.         public void multiply (OpenCV.Array src2, OpenCV.Array dst, double scale = 1.0);
  49.         [CCode (cname = "cvDiv")]
  50.         public void divide (OpenCV.Array src2, OpenCV.Array dst, double scale = 1.0);
  51.         [CCode (cname = "cvScaleAdd")]
  52.         public void scale_add (OpenCV.Scalar scale, OpenCV.Array src2, OpenCV.Array dst);
  53.         [CCode (cname = "cvAddWeighted")]
  54.         public void add_weighted (double alpha, OpenCV.Array src2, double beta, double gamma, OpenCV.Array dst);
  55.         [CCode (cname = "cvDotProduct")]
  56.         public double dot_product (OpenCV.Array src2);
  57.         [CCode (cname = "cvAnd")]
  58.         public void and (OpenCV.Array src2, OpenCV.Array dst, OpenCV.Array? mask = null);
  59.         [CCode (cname = "cvAndS")]
  60.         public void and_scalar (OpenCV.Scalar value, OpenCV.Array dst, OpenCV.Array? mask = null);
  61.         [CCode (cname = "cvOr")]
  62.         public void or (OpenCV.Array src2, OpenCV.Array dst, OpenCV.Array? mask = null);
  63.         [CCode (cname = "cvOrS")]
  64.         public void or_scalar (OpenCV.Scalar value, OpenCV.Array dst, OpenCV.Array? mask = null);
  65.         [CCode (cname = "cvXor")]
  66.         public void xor (OpenCV.Array src2, OpenCV.Array dst, OpenCV.Array? mask = null);
  67.         [CCode (cname = "cvXorS")]
  68.         public void xor_scalar (OpenCV.Scalar value, OpenCV.Array dst, OpenCV.Array? mask = null);
  69.         [CCode (cname = "cvNot")]
  70.         public void not (OpenCV.Array dst);
  71.         [CCode (cname = "cvInRange")]
  72.         public void in_range (OpenCV.Array lower, OpenCV.Array upper, OpenCV.Array dst);
  73.         [CCode (cname = "cvInRangeS")]
  74.         public void in_range_scalar (OpenCV.Scalar lower, OpenCV.Scalar upper, OpenCV.Array dst);
  75.         [CCode (cname = "cvCmp")]
  76.         public void compare (OpenCV.Array src2, OpenCV.Array dst, OpenCV.ComparisonOperator cmp_op = OpenCV.ComparisonOperator.EQUAL);
  77.         [CCode (cname = "cvCmpS")]
  78.         public void compare_scalar (double value, OpenCV.Array dst, OpenCV.ComparisonOperator cmp_op = OpenCV.ComparisonOperator.EQUAL);
  79.         [CCode (cname = "cvMin")]
  80.         public void min (OpenCV.Array src2, OpenCV.Array dst);
  81.         [CCode (cname = "cvMax")]
  82.         public void max (OpenCV.Array src2, OpenCV.Array dst);
  83.         [CCode (cname = "cvMinS")]
  84.         public void min_scalar (double value, OpenCV.Array dst);
  85.         [CCode (cname = "cvMaxS")]
  86.         public void max_scalar (double value, OpenCV.Array dst);
  87.         [CCode (cname = "cvAbsDiff")]
  88.         public void abs_diff (OpenCV.Array src2, OpenCV.Array dst);
  89.         [CCode (cname = "cvAbsDiffS")]
  90.         public void abs_diff_scalar (OpenCV.Array dst, OpenCV.Scalar value);
  91.         [CCode (cname = "cvAbs")]
  92.         public void abs (OpenCV.Array dst);
  93.  
  94.         [CCode (cname = "cvCartToPolar")]
  95.         public static void cartesian_to_polar (OpenCV.Array x, OpenCV.Array y, OpenCV.Array magnitude, OpenCV.Array? angle = null, int angle_in_degrees = 0);
  96.         [CCode (cname = "cvPolarToCart")]
  97.         public static void polar_to_cartesian (OpenCV.Array magnitude, OpenCV.Array angle, OpenCV.Array x, OpenCV.Array y, int angle_in_degress = 0);
  98.         [CCode (cname = "cvPow")]
  99.         public void pow (OpenCV.Array dst, double power);
  100.         [CCode (cname = "cvExp")]
  101.         public void exp (OpenCV.Array dst);
  102.         [CCode (cname = "cv")]
  103.         public void log (OpenCV.Array dst);
  104.         [CCode (cname = "cvCheckArr")]
  105.         public int check_array (OpenCV.Check flags = 0, double min_val = 0.0, double max_val = 0.0);
  106.         [CCode (cname = "cvSort")]
  107.         public void sort (OpenCV.Array? dst = null, OpenCV.Array? idxmat = null, OpenCV.Sort flags = OpenCV.Sort.EVERY_ROW | OpenCV.Sort.ASCENDING);
  108.         [CCode (cname = "cvCrossProduct")]
  109.         public void cross_product (OpenCV.Array src2, OpenCV.Array dst);
  110.         [CCode (cname = "cvMatMulAdd")]
  111.         public void matrix_multiply_add (OpenCV.Array src2, OpenCV.Array? src3, OpenCV.Array dst);
  112.         [CCode (cname = "cvMatMul")]
  113.         public void matrix_multiply (OpenCV.Array src2, OpenCV.Array dst);
  114.         [CCode (cname = "cvGEMM")]
  115.         public void GEMM (OpenCV.Array src2, double alpha, OpenCV.Array src3, double beta, OpenCV.Array dst, OpenCV.GEMMTranspose tABC = 0);
  116.         [CCode (cname = "cvTransform")]
  117.         public void transform (OpenCV.Array dst, OpenCV.Matrix transmat, OpenCV.Matrix? shiftvec = null);
  118.         [CCode (cname = "cvPerspectiveTransform")]
  119.         public void perspective_transform (OpenCV.Array dst, OpenCV.Matrix mat);
  120.         [CCode (cname = "cvMulTransposed")]
  121.         public void multiply_transposed (OpenCV.Array dst, int order, OpenCV.Array? delta = null, double scale = 1.0);
  122.         [CCode (cname = "cvTranspose")]
  123.         public void transpose (OpenCV.Array? dst = null);
  124.         [CCode (cname = "cvFlip")]
  125.         public void flip (OpenCV.Array? dst = null, OpenCV.FlipMode flip_mode = OpenCV.FlipMode.HORIZONTAL);
  126.         [CCode (cname = "cvSVD")]
  127.         public void SVD (OpenCV.Array w, OpenCV.Array? u = null, OpenCV.Array? v = null, OpenCV.SVDFlag flags = 0);
  128.         [CCode (cname = "cvSVBkSb")]
  129.         public static void SVBkSb (OpenCV.Array W, OpenCV.Array U, OpenCV.Array V, OpenCV.Array B, OpenCV.Array X, OpenCV.SVDFlag flags = 0);
  130.  
  131.         [CCode (cname = "cvLine")]
  132.         public void line (OpenCV.Point pt1, OpenCV.Point pt2, OpenCV.Scalar color, int thickness = 1);
  133.         [CCode (cname = "cvRectangle")]
  134.         public void rectangle (OpenCV.Point pt1, OpenCV.Point pt2, OpenCV.Scalar color, int thickness = 1, int line_type = 8, int shift = 0);
  135.         [CCode (cname = "cvCircle")]
  136.         public void circle (OpenCV.Point center, int radius, OpenCV.Scalar color, int thickness = 1, int line_type = 8, int shift = 0);
  137.         [CCode (cname = "cvEllipse")]
  138.         public void ellipse (OpenCV.Point center, OpenCV.Size axes, double angle, double start_angle, double end_angle, OpenCV.Scalar color, int thickness = 1);
  139.         [CCode (cname = "cvEllipseBox")]
  140.         public void ellipse_box (OpenCV.Box2D box, OpenCV.Scalar color, int thickness = 1, int line_type = 8, int shift = 0);
  141.         [CCode (cname = "cvFillConvexPoly")]
  142.         public void fill_convex_polygon (OpenCV.Point[] pts, OpenCV.Scalar color, int line_type = 8, int shift = 0);
  143.         [CCode (cname = "cvFillPoly")]
  144.         public void fill_polygon ([CCode (array_length = false)] OpenCV.Point[][] pts, [CCode (array_length = false)] int[] npts, int contours, OpenCV.Scalar color, int line_type = 8, int shift = 0);
  145.         [CCode (cname = "cvPolyLine")]
  146.         public void poly_line ([CCode (array_length = false)] OpenCV.Point[][] pts, [CCode (array_length = false)] int[] npts, int contours, int is_closed, OpenCV.Scalar color, int thickness = 1, int line_type = 8, int shift = 0);
  147.         [CCode (cname = "cvSegmentImage", cheader_filename = "cvaux.h")]
  148.         public OpenCV.Sequence segment_image (OpenCV.Array dstarr, double canny_threshhold, double ffill_threshhold, OpenCV.Memory.Storage storage);
  149.         [CCode (cname = "cvConvert")]
  150.         public static void convert (OpenCV.Array src, OpenCV.Array dst);
  151.     }
  152.  
  153.     [SimpleType, CCode (cname = "CvBox2D", has_type_id = false)]
  154.     public struct Box2D {
  155.         public OpenCV.Point2D32f center;
  156.         public OpenCV.Size2D32f size;
  157.         public float angle;
  158.     }
  159.  
  160.     [Flags, CCode (cname = "int", has_type_id = false, lower_case_cprefix = "CV_CHECK_")]
  161.     public enum Check {
  162.         RANGE,
  163.         QUIET
  164.     }
  165.  
  166.     [CCode (cname = "int", has_type_id = false, lower_case_cprefix = "CV_CMP_")]
  167.     public enum ComparisonOperator {
  168.         EQ,
  169.         GT,
  170.         GE,
  171.         LT,
  172.         LE,
  173.         NE,
  174.  
  175.         [CCode (cname = "CV_CMP_EQ")]
  176.         EQUAL,
  177.         [CCode (cname = "CV_CMP_GT")]
  178.         GREATER_THAN,
  179.         [CCode (cname = "CV_CMP_GE")]
  180.         GRATER_THAN_OR_EQUAL,
  181.         [CCode (cname = "CV_CMP_LT")]
  182.         LESS_THAN,
  183.         [CCode (cname = "CV_CMP_LE")]
  184.         LESS_THAN_OR_EQUAL,
  185.         [CCode (cname = "CV_CMP_NE")]
  186.         NOT_EQUAL
  187.     }
  188.  
  189.     [Compact, CCode (cname = "CvEHMM", cheader_filename = "cvaux.h", free_function = "cvRelease2DHMM", free_function_address_of = true)]
  190.     public class EHMM {
  191.         [CCode (cname = "cvCreate2DHMM")]
  192.         public EHMM.2D ([CCode (array_length = false)] int[] stateNumber, [CCode (array_length = false)] int[] numMix, int obsSize);
  193.  
  194.         [CCode (cname = "cvUniformImgSegm", instance_pos = -1)]
  195.         public void uniform_image_segment (OpenCV.EHMM.ImageObservationInfo obs);
  196.         [CCode (cname = "cvInitMixSegm", instance_pos = -1)]
  197.         public void init_mix_segment (OpenCV.EHMM.ImageObservationInfo[] obs_info_array);
  198.         [CCode (cname = "cvEstimateHMMStateParams", instance_pos = -1)]
  199.         public void estimate_state_params (OpenCV.EHMM.ImageObservationInfo[] obs_info_array);
  200.         [CCode (cname = "cvEstimateTransProb", instance_pos = -1)]
  201.         public void estimate_transition_probability (OpenCV.EHMM.ImageObservationInfo[] obs_info_array);
  202.         [CCode (cname = "cvEstimateObsProb", instance_pos = -1)]
  203.         public void estimate_observation_probability (OpenCV.EHMM.ImageObservationInfo obs_info);
  204.         [CCode (cname = "cvEViterbi", instance_pos = -1)]
  205.         public void viterbi (OpenCV.EHMM.ImageObservationInfo obs_info);
  206.         [CCode (cname = "cvMixSegmL2", instance_pos = -1)]
  207.         public void mix_segm_l2 (OpenCV.EHMM.ImageObservationInfo[] obs_info_array);
  208.  
  209.         public int level;
  210.         [CCode (array_length_cname = "num_states")]
  211.         public float[] transP;
  212.         [CCode (array_length = false)]
  213.         public float[][] obsProb;
  214.         public OpenCV.EHMM.StateInfo u;
  215.  
  216.         [Compact, CCode (cname = "CvEHMMState")]
  217.         public class State {
  218.             [CCode (array_length_cname = "num_mix")]
  219.             public float[] mu;
  220.             [CCode (array_length_cname = "num_mix")]
  221.             public float[] inv_var;
  222.             [CCode (array_length_cname = "num_mix")]
  223.             public float[] log_var_val;
  224.             [CCode (array_length_cname = "num_mix")]
  225.             public float[] weight;
  226.         }
  227.  
  228.         public struct StateInfo {
  229.             public OpenCV.EHMM.State state;
  230.             public OpenCV.EHMM ehmm;
  231.         }
  232.  
  233.         [Compact, CCode (cname = "CvImgObsInfo", free_function = "cvReleaseObsInfo", free_function_address_of = true)]
  234.         public class ImageObservationInfo {
  235.             public ImageObservationInfo (OpenCV.Size numObs, int obsSize);
  236.  
  237.             // [CCode (cname = "CV_COUNT_OBS", instance_pos = -1)]
  238.             // public void count (roi, win, delta);
  239.         }
  240.     }
  241.  
  242.     [CCode (cname = "int", has_type_id = false)]
  243.     public enum FlipMode {
  244.         [CCode (cname = "0")]
  245.         HORIZONTAL,
  246.         [CCode (cname = "1")]
  247.         VERTICAL,
  248.         [CCode (cname = "-1")]
  249.         BOTH
  250.     }
  251.  
  252.     [CCode (cname = "int", has_type_id = false, cprefix = "CV_FONT_")]
  253.     public enum FontFace {
  254.         HERSHEY_SIMPLEX,
  255.         HERSHEY_PLAIN,
  256.         HERSHEY_DUPLEX,
  257.         HERSHEY_COMPLEX,
  258.         HERSHEY_TRIPLEX,
  259.         HERSHEY_COMPLEX_SMALL,
  260.         HERSHEY_SCRIPT_SIMPLEX,
  261.         HERSHEY_SCRIPT_COMPLEX,
  262.         ITALIC,
  263.         VECTOR0
  264.     }
  265.  
  266.     [Flags, CCode (cname = "int", has_type_id = false)]
  267.     public enum GEMMTranspose {
  268.         [CCode (cname = "CV_GEMM_A_T")]
  269.         A,
  270.         [CCode (cname = "CV_GEMM_B_T")]
  271.         B,
  272.         [CCode (cname = "CV_GEMM_C_T")]
  273.         C
  274.     }
  275.  
  276.     [CCode (cname = "CvLineIterator", has_type_id = false)]
  277.     public struct LineIterator {
  278.         [CCode (cname = "cvInitLineIterator")]
  279.         public LineIterator (OpenCV.Array image, OpenCV.Point pt1, OpenCV.Point pt2, int connectivity = 8, int left_to_right = 0);
  280.  
  281.         public int err;
  282.         public int plus_delta;
  283.         public int minus_delta;
  284.         public int plus_step;
  285.         public int minus_step;
  286.     }
  287.  
  288.     [Flags, CCode (cname = "int", has_type_id = false, lower_case_cprefix = "CV_SORT_")]
  289.     public enum Sort {
  290.         EVERY_ROW,
  291.         EVERY_COLUMN,
  292.         ASCENDING,
  293.         DESCENDING
  294.     }
  295.  
  296.     [Flags, CCode (cname = "int", has_type_id = false, lower_case_cprefix = "CV_SVD_")]
  297.     public enum SVDFlag {
  298.         MODIFY_A,
  299.         U_T,
  300.         V_T
  301.     }
  302.  
  303.     [CCode (cname = "int", has_type_id = false)]
  304.     public enum Type {
  305.         [CCode (cname = "CV_8U")]
  306.         U8,
  307.         [CCode (cname = "CV_8S")]
  308.         S8,
  309.         [CCode (cname = "CV_16U")]
  310.         U16,
  311.         [CCode (cname = "CV_16S")]
  312.         S16,
  313.         [CCode (cname = "CV_32S")]
  314.         S32,
  315.         [CCode (cname = "CV_32F")]
  316.         F32,
  317.         [CCode (cname = "CV_64F")]
  318.         F64,
  319.         [CCode (cname = "CV_USRTYPE1")]
  320.         USR1,
  321.  
  322.         [CCode (cname = "CV_CV_8UC1")]
  323.         UC8_1,
  324.         [CCode (cname = "CV_8UC2")]
  325.         UC8_2,
  326.         [CCode (cname = "CV_8UC3")]
  327.         UC8_3,
  328.         [CCode (cname = "CV_8UC4")]
  329.         UC8_4,
  330.  
  331.         [CCode (cname = "CV_8SC1")]
  332.         SC8_1,
  333.         [CCode (cname = "CV_8SC2")]
  334.         SC8_2,
  335.         [CCode (cname = "CV_8SC3")]
  336.         SC8_3,
  337.         [CCode (cname = "CV_8SC4")]
  338.         SC8_4,
  339.  
  340.         [CCode (cname = "CV_16UC1")]
  341.         UC16_1,
  342.         [CCode (cname = "CV_16UC2")]
  343.         UC16_2,
  344.         [CCode (cname = "CV_16UC3")]
  345.         UC16_3,
  346.         [CCode (cname = "CV_16UC4")]
  347.         UC16_4,
  348.  
  349.         [CCode (cname = "CV_16SC1")]
  350.         SC16_1,
  351.         [CCode (cname = "CV_16SC2")]
  352.         SC16_2,
  353.         [CCode (cname = "CV_16SC3")]
  354.         SC16_3,
  355.         [CCode (cname = "CV_16SC4")]
  356.         SC16_4,
  357.  
  358.         [CCode (cname = "CV_32SC1")]
  359.         SC32_1,
  360.         [CCode (cname = "CV_32SC2")]
  361.         SC32_2,
  362.         [CCode (cname = "CV_32SC3")]
  363.         SC32_3,
  364.         [CCode (cname = "CV_32SC4")]
  365.         SC32_4,
  366.  
  367.         [CCode (cname = "CV_32FC1")]
  368.         FC32_1,
  369.         [CCode (cname = "CV_32FC2")]
  370.         FC32_2,
  371.         [CCode (cname = "CV_32FC3")]
  372.         FC32_3,
  373.         [CCode (cname = "CV_32FC4")]
  374.         FC32_4,
  375.  
  376.         [CCode (cname = "CV_64FC1")]
  377.         FC64_1,
  378.         [CCode (cname = "CV_64FC2")]
  379.         FC64_2,
  380.         [CCode (cname = "CV_64FC3")]
  381.         FC64_3,
  382.         [CCode (cname = "CV_64FC4")]
  383.         FC64_4
  384.     }
  385.  
  386.     [CCode (cname = "CvFont", has_type_id = false, destroy_function = "", has_copy_function = false)]
  387.     public struct Font {
  388.         [CCode (cname = "cvInitFont")]
  389.         public Font (OpenCV.FontFace font_face, double hscale, double vscale, double shear = 0.0, int thickness = 1, int line_type = 8);
  390.  
  391.         [CCode (cname = "cvGetTextSize", instance_pos = 1.9)]
  392.         public void get_text_size (string text_string, out OpenCV.Size text_size, out int baseline);
  393.  
  394.         public OpenCV.FontFace font_face;
  395.         [CCode (array_length = false, array_null_terminated = true)]
  396.         public int[] ascii;
  397.         [CCode (array_length = false, array_null_terminated = true)]
  398.         public int[] greek;
  399.         [CCode (array_length = false, array_null_terminated = true)]
  400.         public int[] cyrillic;
  401.         public float hscale;
  402.         public float vscale;
  403.         public int thickness;
  404.         public float dx;
  405.         public int line_type;
  406.     }
  407.  
  408.     [Compact, CCode (cname = "CvHaarClassifierCascade", has_free_function = false)]
  409.     public class HaarClassifierCascade {
  410.         [CCode (cname = "cvLoad", type = "void*")]
  411.         public static unowned HaarClassifierCascade? load (string filename, OpenCV.Memory.Storage storage, string? name = null, out string? real_name = null);
  412.  
  413.         [CCode (cname = "cvHaarDetectObjects", instance_pos = 1.9)]
  414.         public unowned OpenCV.Sequence<OpenCV.Rectangle?> detect_objects (OpenCV.Array image, OpenCV.Memory.Storage storage, double scale_factor = 1.0, int min_neighbors = 3, OpenCV.HaarClassifierCascade.Flags flags = 0, OpenCV.Size min_size = OpenCV.Size (0, 0));
  415.         [CCode (cname = "cvSetImagesForHaarClassifierCascade")]
  416.         public void set_images (OpenCV.Array sum, OpenCV.Array sqsum, OpenCV.Array tilted_sum, double scale);
  417.         [CCode (cname = "cvRunHaarClassifierCascade")]
  418.         public int run (OpenCV.Point pt, int start_stage = 0);
  419.  
  420.         [Flags, CCode (cname = "int", has_type_id = false, cprefix = "CV_HAAR_")]
  421.         public enum Flags {
  422.             DO_CANNY_PRUNING,
  423.             SCALE_IMAGE,
  424.             FIND_BIGGEST_OBJECT,
  425.             DO_ROUGH_SEARCH
  426.         }
  427.     }
  428.  
  429.     [SimpleType, CCode (cname = "CvInput")]
  430.     public struct Input {
  431.         public OpenCV.Callback @callback;
  432.         public void* data;
  433.     }
  434.  
  435.     [Compact, CCode (cname = "CvMat", has_type_id = false, free_function = "cvReleaseMat", free_function_address_of = true, copy_function = "cvCloneMat")]
  436.     public class Matrix : OpenCV.Array {
  437.         [CCode (cname = "cvCreateMat")]
  438.         public Matrix (int rows, int cols, int type);
  439.         [CCode (cname = "cvCreateMatHeader")]
  440.         public Matrix.header (int rows, int cols, int type);
  441.  
  442.         [CCode (cname = "cvCloneMat")]
  443.         public Matrix clone ();
  444.         [CCode (cname = "cvCompleteSymm")]
  445.         public void complete_symmetric (int LtoR);
  446.         [CCode (cname = "cvIplDepth")]
  447.         public static int depth (int type);
  448.         [CCode (cname = "cvmGet")]
  449.         public double get (int row, int col);
  450.         [CCode (cname = "cvmSet")]
  451.         public void set (int row, int col, double value);
  452.         [CCode (cname = "cvSolveCubic")]
  453.         public int solve_cubic (OpenCV.Matrix roots);
  454.         [CCode (cname = "cvSolvePoly")]
  455.         public void solve_polynomial (OpenCV.Matrix roots2, int maxiter = 20, int fig = 100);
  456.  
  457.         public OpenCV.Type type;
  458.         public int step;
  459.         public int rows;
  460.         public int cols;
  461.         public OpenCV.Matrix.Data data;
  462.  
  463.         [CCode (cname = "union { uchar* ptr; short* s; int* i; float* fl; double* db; }", has_type_id = false)]
  464.         public struct Data {
  465.             public void* ptr;
  466.             public short* s;
  467.             public int* i;
  468.             public float* fl;
  469.             public double* db;
  470.         }
  471.  
  472.         [Compact, CCode (cname = "cvMatND", has_type_id = false, free_function = "cvReleaseMatND", free_function_address_of = true, copy_function = "cvCloneMatND")]
  473.         public class ND {
  474.             [CCode (cname = "cvCreateMatND")]
  475.             public ND (int dims, [CCode (array_length = false, array_null_terminated = true)] int[] sizes, int type);
  476.  
  477.             [CCode (cname = "cvCloneMatND")]
  478.             public ND clone ();
  479.  
  480.             public OpenCV.Type type;
  481.             public int dims;
  482.             public OpenCV.Matrix.Data data;
  483.             // TODO: s/32/OpenCV.MAX_DIM/ when b.g.o. #624507 is resolved
  484.             public OpenCV.Matrix.ND.Dimension dim[32];
  485.  
  486.             public struct Dimension {
  487.                 public int size;
  488.                 public int step;
  489.             }
  490.         }
  491.  
  492.         [Compact, CCode (cname = "cvSparseMat", has_type_id = false, free_function = "cvReleaseSparseMat", free_function_address_of = true, copy_function = "cvCloneSparseMat")]
  493.         public class Sparse {
  494.             [CCode (cname = "cvCreateSparseMat")]
  495.             public Sparse (int dims, [CCode (array_length = false, array_null_terminated = true)] int[] sizes, int type);
  496.  
  497.             [CCode (cname = "cvCloneSparseMat")]
  498.             public Sparse clone ();
  499.  
  500.             public OpenCV.Type type;
  501.             public int dims;
  502.             // public struct CvSet* heap;
  503.             // public void** hashtable;
  504.             // public int hashsize;
  505.             [CCode (cname = "valoffset")]
  506.             public int value_offset;
  507.             [CCode (cname = "idxoffset")]
  508.             public int index_offset;
  509.             // TODO: s/32/OpenCV.MAX_DIM/ when b.g.o. #624507 is resolved
  510.             public int size[32];
  511.  
  512.             [CCode (cname = "CvSparseNode", has_type_id = false)]
  513.             public struct Node {
  514.                 [CCode (cname = "hashval")]
  515.                 public uint hash_value;
  516.                 public Node* next;
  517.             }
  518.  
  519.             [CCode (cname = "CvSparseMatIterator", has_type_id = false)]
  520.             public struct Iterator {
  521.                 [CCode (cname = "mat")]
  522.                 public OpenCV.Matrix.Sparse matrix;
  523.                 public Node* node;
  524.                 [CCode (cname = "curidx")]
  525.                 public int current_index;
  526.             }
  527.         }
  528.     }
  529.  
  530.     [CCode (cname = "CvString")]
  531.     public class String {
  532.         [CCode (cname = "cvMemStorageAllocString")]
  533.         public String (OpenCV.Memory.Storage storage, string str, int len = -1);
  534.  
  535.         public int len;
  536.         public string ptr;
  537.     }
  538.  
  539.     namespace Math {
  540.         [CCode (cname = "cvCeil")]
  541.         public static int ceil (double value);
  542.         [CCode (cname = "cvCbrt")]
  543.         public static float cubic_root (float value);
  544.         [CCode (cname = "cvFastArctan")]
  545.         public static float fast_arctan (float x, float y);
  546.         [CCode (cname = "cvFloor")]
  547.         public static int floor (double value);
  548.         [CCode (cname = "cvInvSqrt")]
  549.         public static float inv_sqrt ();
  550.         [CCode (cname = "cvIsInf")]
  551.         public static int is_inf (double value);
  552.         [CCode (cname = "cvIsNaN")]
  553.         public static int is_nan (double value);
  554.         [CCode (cname = "cvRound")]
  555.         public static int round (double value);
  556.         [CCode (cname = "cvSqrt")]
  557.         public static float sqrt (double value);
  558.     }
  559.  
  560.     namespace Memory {
  561.         [Compact, CCode (cname = "CvMemBlock")]
  562.         public struct Block {
  563.             public OpenCV.Memory.Block? prev;
  564.             public OpenCV.Memory.Block? next;
  565.         }
  566.  
  567.         [Compact, CCode (cname = "CvMemStorage", free_function = "cvReleaseMemStorage", free_function_address_of = true)]
  568.         public class Storage {
  569.             [CCode (cname = "cvCreateMemStorage")]
  570.             public Storage (int block_size = 0);
  571.             [CCode (cname = "cvCreateChildMemStorage")]
  572.             public Storage.from_parent (OpenCV.Memory.Storage parent);
  573.  
  574.             [CCode (cname = "cvClearMemStorage")]
  575.             public void clear ();
  576.             [CCode (cname = "cvSaveMemStoragePos")]
  577.             public void save_position (OpenCV.Memory.Storage.Position pos);
  578.             [CCode (cname = "cvRestoreMemStoragePos")]
  579.             public void restore_position (OpenCV.Memory.Storage.Position pos);
  580.             [CCode (cname = "cvMemStorageAlloc")]
  581.             public void* alloc (size_t size);
  582.             [CCode (cname = "cvMemStorageAllocString")]
  583.             public OpenCV.String alloc_string (string ptr, int len = -1);
  584.  
  585.             [CCode (cname = "cvLoad", instance_pos = 1.9)]
  586.             public void* load (string filename, string name, out string? real_name = null);
  587.  
  588.             public int signature;
  589.             public OpenCV.Memory.Block bottom;
  590.             public OpenCV.Memory.Block top;
  591.             public OpenCV.Memory.Storage parent;
  592.             public int block_size;
  593.             public int free_space;
  594.  
  595.             [CCode (cname = "CvMemStoragePos")]
  596.             public struct Position {
  597.                 public OpenCV.Memory.Block top;
  598.                 public int free_space;
  599.             }
  600.         }
  601.  
  602.         [CCode (cname = "cvAlloc")]
  603.         public static void* alloc ();
  604.         [CCode (cname = "cvFree")]
  605.         public static void free (void* ptr);
  606.     }
  607.  
  608.     [SimpleType, CCode (cname = "CvPoint", has_type_id = false)]
  609.     public struct Point {
  610.         [CCode (cname = "cvPoint")]
  611.         public Point (int x, int y);
  612.         [CCode (cname = "cvPointFrom32f")]
  613.         public Point.from_32f (OpenCV.Point2D32f point);
  614.  
  615.         [CCode (cname = "cvPointTo32f")]
  616.         public Point to_32f ();
  617.  
  618.         public int x;
  619.         public int y;
  620.     }
  621.  
  622.     [CCode (cname = "CvPoint2D32f", has_type_id = false)]
  623.     public struct Point2D32f {
  624.         public float x;
  625.         public float y;
  626.  
  627.         [CCode (cname = "cvPoint2D32f")]
  628.         public Point2D32f (float x, float y);
  629.         [CCode (cname = "cvPointTo32f")]
  630.         public Point2D32f.from_point (OpenCV.Point point);
  631.  
  632.         [CCode (cname = "cvPointFrom32f")]
  633.         public Point to_point (OpenCV.Point2D32f point);
  634.     }
  635.  
  636.     [CCode (cname = "CvPoint2D32f", has_type_id = false)]
  637.     public struct Point2D64f {
  638.         [CCode (cname = "cvPoint2D64f")]
  639.         public Point2D64f (double x, double y);
  640.  
  641.         public double x;
  642.         public double y;
  643.     }
  644.  
  645.     [CCode (cname = "CvPoint3D32f", has_type_id = false)]
  646.     public struct Point3D32f {
  647.         [CCode (cname = "cvPoint3D32f")]
  648.         public Point3D32f (float x, float y, float z);
  649.  
  650.         public float x;
  651.         public float y;
  652.         public float z;
  653.     }
  654.  
  655.     [CCode (cname = "CvPoint3D64f")]
  656.     public struct Point3D64f {
  657.         [CCode (cname = "cvPoint3D64f")]
  658.         public Point3D64f (double x, double y, double z);
  659.  
  660.         public double x;
  661.         public double y;
  662.         public double z;
  663.     }
  664.  
  665.     [SimpleType, CCode (cname = "CvRect", has_type_id = false, destroy_function = "")]
  666.     public struct Rectangle {
  667.         [CCode (cname = "cvRect")]
  668.         public Rectangle (int x, int y, int width, int height);
  669.         [CCode (cname = "cvRectToROI")]
  670.         public OpenCV.IPL.ROI to_roi (int coi);
  671.  
  672.         public int x;
  673.         public int y;
  674.         public int width;
  675.         public int height;
  676.     }
  677.  
  678.     [SimpleType, CCode (cname = "CvScalar", has_type_id = false, destroy_function = "")]
  679.     public struct Scalar {
  680.         [CCode (cname = "cvScalar")]
  681.         public Scalar (double val0, double val1 = 0.0, double val2 = 0.0, double val3 = 0.0);
  682.         [CCode (cname = "cvScalarAll")]
  683.         public Scalar.all (double val0123);
  684.         [CCode (cname = "cvRawDataToScalar")]
  685.         public Scalar.from_raw_data ([CCode (array_length = false)] uint8[] data, int type);
  686.         [CCode (cname = "cvColorToScalar")]
  687.         public Scalar.from_color (double packed_color, int arrtype);
  688.         [CCode (cname = "CV_RGB")]
  689.         public Scalar.from_rgb (double red, double green, double blue);
  690.  
  691.         [CCode (cname = "cvScalarToRawData")]
  692.         public void to_raw_data ([CCode (array_length = false)] uint8[] data, int type, int extend_to_12 = 0);
  693.  
  694.         public double val[4];
  695.     }
  696.  
  697.     [Compact, CCode (cname = "CvSeq", free_function = "")]
  698.     public class Sequence<T> {
  699.         [CCode (cname = "cvCreateSeq")]
  700.         public Sequence (int seq_flags, int header_size, int elem_size, OpenCV.Memory.Storage storage);
  701.  
  702.         [CCode (cname = "cvSetSeqBlockSize")]
  703.         public void set_block_size (int delta_elems);
  704.         [CCode (cname = "cvSeqPush")]
  705.         public unowned T push (T element);
  706.         [CCode (cname = "cvSeqPushFront")]
  707.         public unowned T push_front (T element);
  708.         [CCode (cname = "cvSeqPop")]
  709.         public void pop (T element = null);
  710.         [CCode (cname = "cvSeqPopFront")]
  711.         public void pop_front (T element = null);
  712.         [CCode (cname = "cvGetSeqElem")]
  713.         public unowned T? get (int index);
  714.         [CCode (cname = "cvSeqPushMulti")]
  715.         public void push_multi (T[] elements, bool in_front = false);
  716.         [CCode (cname = "cvSeqPopMulti")]
  717.         public void pop_multi (T[] elements, bool in_front = false);
  718.         [CCode (cname = "cvSeqInsert")]
  719.         public void insert (int before_index, T element);
  720.         [CCode (cname = "cvSeqRemove")]
  721.         public void remove (int index);
  722.         [CCode (cname = "cvClearSeq")]
  723.         public void clear (int index);
  724.         [CCode (cname = "cvCvtSeqToArray", array_length_pos = 1.9)]
  725.         public T[]? to_array (OpenCV.Slice slice = OpenCV.Slice.WHOLE_ARRAY);
  726.  
  727.         public int total;
  728.     }
  729.  
  730.     [SimpleType, CCode (cname = "CvSize", has_type_id = false)]
  731.     public struct Size {
  732.         public int width;
  733.         public int height;
  734.  
  735.         [CCode (cname = "cvSize")]
  736.         public Size (int width, int height);
  737.     }
  738.  
  739.     public struct Size2D32f {
  740.         [CCode (cname = "cvSize2D32f")]
  741.         public Size2D32f (double width, double heigh);
  742.  
  743.         public float width;
  744.         public float height;
  745.     }
  746.  
  747.     [SimpleType, CCode (cname = "CvSlice")]
  748.     public struct Slice {
  749.         public int start_index;
  750.         public int end_index;
  751.  
  752.         [CCode (cname = "cvSlice")]
  753.         public Slice (int start, int end);
  754.         [CCode (cname = "cvSliceLength")]
  755.         public int length (OpenCV.Sequence seq);
  756.  
  757.         [CCode (cname = "CV_WHOLE_ARR")]
  758.         public const OpenCV.Slice WHOLE_ARRAY;
  759.     }
  760.  
  761.     [SimpleType, CCode (cname = "CvTermCriteria", has_type_id = false)]
  762.     public struct TermCriteria {
  763.         public OpenCV.Type type;
  764.         public int max_iter;
  765.         public double epsilon;
  766.  
  767.         [CCode (cname = "cvTermCriteria")]
  768.         public TermCriteria (int type, int max_iter, double epsilon);
  769.     }
  770.  
  771.     [CCode (cheader_filename = "highgui.h")]
  772.     namespace Window {
  773.         [CCode (cname = "cvNamedWindow")]
  774.         public static int create_named (string window_name, OpenCV.Window.Flags flags = OpenCV.Window.Flags.AUTO_SIZE);
  775.         [CCode (cname = "cvShowImage")]
  776.         public static void show_image (string window_name, OpenCV.Array arr);
  777.         [CCode (cname = "cvDestroyWindow")]
  778.         public static void destroy (string window_name);
  779.         [CCode (cname = "cvGetWindowProperty")]
  780.         public static void get_property (string window_name, OpenCV.Window.Property prop_id);
  781.         [CCode (cname = "cvSetWindowProperty")]
  782.         public static void set_property (string window_name, OpenCV.Window.Property prop_id, double value);
  783.         [CCode (cname = "cvResizeWindow")]
  784.         public static void resize (string window_name, int width, int height);
  785.         [CCode (cname = "cvMoveWindow")]
  786.         public static void move (string window_name, int x, int y);
  787.         [CCode (cname = "cvDestroyAllWindows")]
  788.         public static void destroy_all ();
  789.         [CCode (cname = "cvGetWindowHandle")]
  790.         public static void* get_handle (string window_name);
  791.         [CCode (cname = "cvGetWindowName")]
  792.         public static unowned string get_name (void* handle);
  793.         [CCode (cname = "cvSetMouseCallback")]
  794.         public static void set_mouse_callback (string window_name, OpenCV.MouseCallback on_mouse);
  795.  
  796.         [Flags, CCode (cname = "int", has_type_id = false, cprefix = "CV_WINDOW_")]
  797.         public enum Flags {
  798.             [CCode (cname = "CV_WINDOW_AUTOSIZE")]
  799.             AUTO_SIZE
  800.         }
  801.  
  802.         [CCode (cname = "int", has_type_id = false, cprefix = "CV_WND_PROP_")]
  803.         public enum Property {
  804.             FULLSCREEN,
  805.             AUTOSIZE
  806.         }
  807.     }
  808.  
  809.     [CCode (cheader_filename = "highgui.h")]
  810.     namespace Trackbar {
  811.         [CCode (cname = "CvTrackBarCallback2")]
  812.         public delegate void Callback (int pos);
  813.  
  814.         [CCode (cname = "cvCreateTrackbar2")]
  815.         public int create (string trackbar_name, string window_name, ref int value, int count, OpenCV.Trackbar.Callback on_change);
  816.         [CCode (cname = "cvGetTrackbarPos")]
  817.         public int get_position (string trackbar_name, string window_name);
  818.         [CCode (cname = "cvSetTrackbarPos")]
  819.         public void set_position (string trackbar_name, string window_name, int pos);
  820.     }
  821.  
  822.     [CCode (cname = "int", has_type_id = false, cprefix = "CV_EVENT_", cheader_filename = "highgui.h")]
  823.     public enum EventType {
  824.         [CCode (cname = "CV_EVENT_MOUSEMOVE")]
  825.         MOUSE_MOVE,
  826.         [CCode (cname = "CV_EVENT_LBUTTONDOWN")]
  827.         LEFT_BUTTON_DOWN,
  828.         [CCode (cname = "CV_EVENT_RBUTTONDOWN")]
  829.         RIGHT_BUTTON_DOWN,
  830.         [CCode (cname = "CV_EVENT_MBUTTONDOWN")]
  831.         MIDDLE_BUTTON_DOWN,
  832.         [CCode (cname = "CV_EVENT_LBUTTONUP")]
  833.         LEFT_BUTTON_UP,
  834.         [CCode (cname = "CV_EVENT_RBUTTONUP")]
  835.         RIGHT_BUTTON_UP,
  836.         [CCode (cname = "CV_EVENT_MBUTTONUP")]
  837.         MIDDLE_BUTTON_UP,
  838.         [CCode (cname = "CV_EVENT_LBUTTONDBLCLK")]
  839.         LEFT_BUTTON_DOUBLE_CLICK,
  840.         [CCode (cname = "CV_EVENT_RBUTTONDBLCLK")]
  841.         RIGHT_BUTTON_DOUBLE_CLICK,
  842.         [CCode (cname = "CV_EVENT_MBUTTONDBLCLK")]
  843.         MIDDLE_BUTTON_DOUBLE_CLICK,
  844.  
  845.         MOUSEMOVE,
  846.         LBUTTONDOWN,
  847.         RBUTTONDOWN,
  848.         MBUTTONDOWN,
  849.         LBUTTONUP,
  850.         RBUTTONUP,
  851.         MBUTTONUP,
  852.         LBUTTONDBLCLK,
  853.         RBUTTONDBLCLK,
  854.         MBUTTONDBLCLK,
  855.     }
  856.  
  857.     [Flags, CCode (cname = "int", has_type_id = false, cprefix = "CV_EVENT_FLAG_", cheader_filename = "highgui.h")]
  858.     public enum EventFlag {
  859.         [CCode (cname = "CV_EVENT_FLAG_LBUTTON")]
  860.         LEFT_BUTTON,
  861.         [CCode (cname = "CV_EVENT_FLAG_RBUTTON")]
  862.         RIGHT_BUTTON,
  863.         [CCode (cname = "CV_EVENT_FLAG_MBUTTON")]
  864.         MIDDLE_BUTTON,
  865.         [CCode (cname = "CV_EVENT_FLAG_CTRLKEY")]
  866.         CONTROL_KEY,
  867.         [CCode (cname = "CV_EVENT_FLAG_SHIFTKEY")]
  868.         SHIFT_KEY,
  869.         [CCode (cname = "CV_EVENT_FLAG_ALTKEY")]
  870.         ALT_KEY,
  871.  
  872.         LBUTTON,
  873.         RBUTTON,
  874.         MBUTTON,
  875.         CTRLKEY,
  876.         SHIFTKEY,
  877.         ALTKEY
  878.     }
  879.  
  880.     [Compact, CCode (cname = "CvCapture", free_function = "cvReleaseCapture", free_function_address_of = true, has_type_id = false, cheader_filename = "highgui.h")]
  881.     public class Capture {
  882.         [CCode (cname = "cvCreateFileCapture")]
  883.         public Capture.from_file (string filename);
  884.         [CCode (cname = "cvCreateCameraCapture")]
  885.         public Capture.from_camera (int index);
  886.  
  887.         [CCode (cname = "cvGrabFrame")]
  888.         public bool grab_frame ();
  889.         [CCode (cname = "cvRetrieveFrame")]
  890.         public unowned OpenCV.IPL.Image retrieve_frame (int stream_index = 0);
  891.         [CCode (cname = "cvQueryFrame")]
  892.         public unowned OpenCV.IPL.Image query_frame ();
  893.         [CCode (cname = "cvGetCaptureProperty")]
  894.         public double get_property (OpenCV.Capture.Property property_id);
  895.         [CCode (cname = "cvSetCaptureProperty")]
  896.         public int set_property (OpenCV.Capture.Property property_id, double value);
  897.         [CCode (cname = "cvGetCaptureDomain")]
  898.         public OpenCV.Capture.Domain get_domain ();
  899.  
  900.         [CCode (cname = "int", has_type_id = false, cprefix = "CV_CAP_")]
  901.         public enum Domain {
  902.             ANY,
  903.             MIL,
  904.             VFW,
  905.             V4L,
  906.             V4L2,
  907.             FIREWARE,
  908.             FIREWIRE,
  909.             IEEE1394,
  910.             DC1394,
  911.             CMU1394,
  912.             STEREO,
  913.             TYZX,
  914.             [CCode (cname = "CV_TYZX_LEFT")]
  915.             TYZX_LEFT,
  916.             [CCode (cname = "CV_TYZX_RIGHT")]
  917.             TYZX_RIGHT,
  918.             [CCode (cname = "CV_TYZX_COLOR")]
  919.             TYZX_COLOR,
  920.             [CCode (cname = "CV_TYZX_Z")]
  921.             TYZX_Z,
  922.             QT,
  923.             UNICAP,
  924.             DSHOW,
  925.             PVAPI
  926.         }
  927.  
  928.         [CCode (cname = "int", has_type_id = false, cprefix = "CV_CAP_PROP_")]
  929.         public enum Property {
  930.             POS_MSEC,
  931.             POS_FRAMES,
  932.             POS_AVI_RATIO,
  933.             FRAME_WIDTH,
  934.             FRAME_HEIGHT,
  935.             FPS,
  936.             FOURCC,
  937.             FRAME_COUNT,
  938.             FORMAT,
  939.             MODE,
  940.             BRIGHTNESS,
  941.             CONTRAST,
  942.             SATURATION,
  943.             HUE,
  944.             GAIN,
  945.             EXPOSURE,
  946.             CONVERT_RGB,
  947.             WHITE_BALANCE,
  948.             RECTIFICATION,
  949.         }
  950.     }
  951.  
  952.     [CCode (cname = "CV_MAX_DIM")]
  953.     public const int MAX_DIM;
  954.  
  955.     [CCode (cname = "CvCallback")]
  956.     public delegate void Callback (int index, void* buffer);
  957.     [CCode (cname = "CvMouseCallback")]
  958.     public delegate void MouseCallback (OpenCV.EventType ev, int x, int y, OpenCV.EventFlag flags);
  959.  
  960.     [CCode (cname = "cvWaitKey")]
  961.     public static void wait_key (int delay = 0);
  962.  
  963.     [CCode (cheader_filename = "cvaux.h")]
  964.     namespace Eigen {
  965.         [CCode (cname = "cvCalcCovarMatrixEx")]
  966.         public static void calculate_covariation_matrix (int nObjects, void* input, int ioFlags, [CCode (array_length_pos = 3.9)] uint8[] buffer, void* user_data, OpenCV.IPL.Image avg, [CCode (array_length = false)] float[] covar_matrix);
  967.         [CCode (cname = "cvCalcEigenObjects")]
  968.         public static void calculate_objects (int nObjects, void* input, void* output, int ioFlags, int ioBufSize, void* userData, OpenCV.TermCriteria calc_limit, OpenCV.IPL.Image avg, [CCode (array_length = false)] float[] eigenvals);
  969.         [CCode (cname = "cvClacDecompCoeff")]
  970.         public static double calculate_decomposition_coefficient (OpenCV.IPL.Image obj, OpenCV.IPL.Image eigObj, OpenCV.IPL.Image avg);
  971.         [CCode (cname = "cvEigenDecomposite")]
  972.         public static void eigen_decomposite (OpenCV.IPL.Image obj, int nEigObjs, void* eigInput, int ioFlags, void* userData, OpenCV.IPL.Image avg, [CCode (array_length = false)] float[] coeffs);
  973.         [CCode (cname = "cvEigenProjection")]
  974.         public static void eigen_projection (void* eigInput, int nEigObjs, int ioFlags, void* userData, [CCode (array_length = false)] float[] coeffs, OpenCV.IPL.Image avg, OpenCV.IPL.Image proj);
  975.     }
  976.  
  977.     [CCode (cprefix = "Ipl")]
  978.     namespace IPL {
  979.         [Compact, CCode (cname = "IplImage", has_type_id = false, free_function = "cvReleaseImage", free_function_address_of = true, copy_function = "cvCloneImage")]
  980.         public class Image : OpenCV.Array {
  981.             [CCode (cname = "cvCreateImage")]
  982.             public Image (OpenCV.Size size, int depth, int channels);
  983.             [CCode (cname = "cvLoadImage", cheader_filename = "highgui.h")]
  984.             public Image.load (string filename, OpenCV.IPL.Image.LoadType type = OpenCV.IPL.Image.LoadType.COLOR);
  985.  
  986.             [CCode (cname = "cvCloneImage")]
  987.             public Image clone ();
  988.             [CCode (cname = "cvInitImageHeader")]
  989.             public void init_header (OpenCV.Size size, int depth, int channels, int origin = 0, int align = 4);
  990.             [CCode (cname = "cvGetImageCOI")]
  991.             public int get_coi ();
  992.             [CCode (cname = "cvGetImageROI")]
  993.             public OpenCV.Rectangle get_roi ();
  994.             [CCode (cname = "cvResetImageROI")]
  995.             public int reset_roi ();
  996.             [CCode (cname = "cvSetImageROI")]
  997.             public void set_roi (OpenCV.Rectangle roi);
  998.             [CCode (cname = "cvSetImageCOI")]
  999.             public void set_coi (int coi);
  1000.  
  1001.             [CCode (cname = "nSize")]
  1002.             public int n_size;
  1003.             [CCode (cname = "ID")]
  1004.             public int id;
  1005.             [CCode (cname = "nChannels")]
  1006.             public int n_channels;
  1007.             [CCode (cname = "alphaChannel")]
  1008.             public int alpha_channel;
  1009.             public int depth;
  1010.             [CCode (cname = "colorModel")]
  1011.             public char color_model[4];
  1012.             [CCode (cname = "channelSeq")]
  1013.             public char channel_sequence[4];
  1014.             [CCode (cname = "dataOrder")]
  1015.             public int data_order;
  1016.             public int origin;
  1017.             public int align;
  1018.             public int width;
  1019.             public int height;
  1020.             public OpenCV.IPL.ROI* roi;
  1021.             [CCode (cname = "maskROI")]
  1022.             public Image mask_roi;
  1023.             [CCode (cname = "imageId")]
  1024.             public void* image_id;
  1025.             // [CCode (cname = "tileInfo")]
  1026.             // public TileInfo tile_info;
  1027.             [CCode (cname = "imageData", array_length_cname = "imageSize")]
  1028.             public uint8[] image_data;
  1029.             [CCode (cname = "widthStep")]
  1030.             public int width_step;
  1031.             [CCode (cname = "BorderMode")]
  1032.             public int border_mode[4];
  1033.             [CCode (cname = "BorderConst")]
  1034.             public int border_const[4];
  1035.             // [CCode (cname = "imageDataOrigin")]
  1036.             // public ? image_data_origin;
  1037.  
  1038.             [CCode (cname = "int", has_type_id = false, cprefix = "CV_LOAD_IMAGE_")]
  1039.             public enum LoadType {
  1040.                 UNCHANGED,
  1041.                 GRAYSCALE,
  1042.                 COLOR,
  1043.                 [CCode (cname = "CV_LOAD_IMAGE_ANYDEPTH")]
  1044.                 ANY_DEPTH,
  1045.                 [CCode (cname = "CV_LOAD_IMAGE_ANYCOLOR")]
  1046.                 ANY_COLOR
  1047.             }
  1048.         }
  1049.  
  1050.         [SimpleType, CCode (cname = "IplROI", has_type_id = false)]
  1051.         public struct ROI {
  1052.             public int coi;
  1053.             [CCode (cname = "xOffset")]
  1054.             public int x_offset;
  1055.             [CCode (cname = "yOffset")]
  1056.             public int y_offset;
  1057.             public int width;
  1058.             public int height;
  1059.  
  1060.             [CCode (cname = "cvROIToRect")]
  1061.             public OpenCV.Rectangle to_rectangle ();
  1062.         }
  1063.  
  1064.         [CCode (cname = "IplConvKernel", has_type_id = false)]
  1065.         public struct ConvKernel {
  1066.             [CCode (cname = "nCols")]
  1067.             public int n_cols;
  1068.             [CCode (cname = "nRows")]
  1069.             public int n_rows;
  1070.             [CCode (cname = "anchorX")]
  1071.             public int anchor_x;
  1072.             [CCode (cname = "anchorY")]
  1073.             public int anchor_y;
  1074.             [CCode (array_length = false)]
  1075.             public int[] values;
  1076.             [CCode (cname = "nShiftR")]
  1077.             public int n_shift_r;
  1078.         }
  1079.  
  1080.         [CCode (cname = "IplConvKernelFP", has_type_id = false)]
  1081.         public struct ConvKernelFP {
  1082.             [CCode (cname = "nCols")]
  1083.             public int nCols;
  1084.             [CCode (cname = "nRows")]
  1085.             public int nRows;
  1086.             [CCode (cname = "anchorX")]
  1087.             public int anchorX;
  1088.             [CCode (cname = "anchorY")]
  1089.             public int anchorY;
  1090.             [CCode (array_length = false)]
  1091.             public float[] values;
  1092.         }
  1093.     }
  1094. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement