diff --git a/modules/c/include/opencv2/c/excluded_functions.hpp b/modules/c/include/opencv2/c/excluded_functions.hpp index 471738cfa5..0b22ef1c02 100644 --- a/modules/c/include/opencv2/c/excluded_functions.hpp +++ b/modules/c/include/opencv2/c/excluded_functions.hpp @@ -17,3 +17,16 @@ */ #include + +extern "C" { +void cv_randu2(Mat* dst, Scalar* low, Scalar* high); +void cv_goodFeaturesToTrack2(Mat* image, vector_Point2f* corners, int maxCorners, double qualityLevel, double minDistance, Mat* mask, int blockSize, bool useHarrisDetector, double k); +Mat* cv_create_Mat_as_vectort(vector_Point2f* vec, bool copyData); +Size* cv_RotatedRect_size(RotatedRect* self); +Point* cv_RotatedRect_center(RotatedRect* self); +RotatedRect* cv_create_RotatedRect(Point* center, Size* size, float angle); +void cv_inRangeS(Mat* src, Scalar* lowerb, Scalar* upperb, Mat* dst); +int cv_createTrackbar(String* trackbarname, String* winname, int* value, int count, TrackbarCallback onChange, void* userdata); +void cv_setMouseCallback(String* winname, MouseCallback onMouse, void* userdata); +} + diff --git a/modules/c/include/opencv2/c/mat.hpp b/modules/c/include/opencv2/c/mat.hpp index 9931589804..9eb4c89d19 100644 --- a/modules/c/include/opencv2/c/mat.hpp +++ b/modules/c/include/opencv2/c/mat.hpp @@ -21,6 +21,7 @@ extern "C" { Mat* cv_create_Mat(); Mat* cv_create_Mat_typed(int rows, int cols, int type); Mat* cv_create_Mat_with_data(int rows, int cols, int type, void* data); +Mat* cv_create_Mat_with_value(int rows, int cols, int type, Scalar* s); Mat* cv_Mat_assign(Mat* self, Mat* m); Mat* cv_Mat_assignVal(Mat* self, Scalar* s); Mat* cv_Mat_getRow(Mat* self, int y); @@ -35,6 +36,7 @@ void cv_Mat_copyTo(Mat* self, Mat* m); void cv_Mat_copyTo_masked(Mat* self, Mat* m, Mat* mask); void cv_Mat_assignTo(Mat* self, Mat* m); void cv_Mat_assignTo_t(Mat*self, Mat* m, int t); +void cv_Mat_convertTo(Mat* self,Mat* m, int rtype, double alpha, double beta); Mat* cv_Mat_setTo(Mat*self, Scalar* value); Mat* cv_Mat_setTo_masked(Mat* self, Scalar* value, Mat* mask); Mat* cv_Mat_reshape(Mat* self, int cn); @@ -50,6 +52,7 @@ int cv_Mat_rows(Mat* self); int cv_Mat_cols(Mat* self); int cv_Mat_empty(Mat* self); Size* cv_Mat_size(Mat* self); +size_t cv_Mat_get_Step(Mat* self); size_t cv_Mat_step1(Mat* self); uchar* cv_Mat_ptr(Mat* self); uchar* cv_Mat_ptr_index(Mat* self, int i); @@ -67,5 +70,8 @@ double cv_Mat_dot(Mat* self, Mat* m); Mat* cv_Mat_cross(Mat* self, Mat* m); void cv_Mat_locateROI(Mat* self, Size* s, Point* p); Mat* cv_Mat_adjustROI(Mat* self, int dtop, int dbottom, int dleft, int dright); +void cv_delete_Mat(Mat* self); +void cv_destruct_Mat(Mat* self); +void cv_delete_MatExpr(MatExpr* self); +void cv_destruct_MatExpr(MatExpr* self); } - diff --git a/modules/c/include/opencv2/c/scalar.hpp b/modules/c/include/opencv2/c/scalar.hpp new file mode 100644 index 0000000000..302e47ac5a --- /dev/null +++ b/modules/c/include/opencv2/c/scalar.hpp @@ -0,0 +1,23 @@ +/* + * ===================================================================================== + * + * Filename: scalar.hpp + * + * Description: Wrappers for the OpenCV Matrix class + * + * Version: 1.0 + * Created: 03/17/14 18:85:00 + * Revision: none + * Compiler: g++ + * + * Author: Arjun Comar + * + * ===================================================================================== + */ + +#include + +extern "C" { +Scalar* cv_create_Scalar(double val0, double val1, double val2, double val3); +Scalar* cv_create_scalarAll(double val0123); +} diff --git a/modules/c/src/excluded_functions.cpp b/modules/c/src/excluded_functions.cpp index e4cbf0c65c..df0a0e75b2 100644 --- a/modules/c/src/excluded_functions.cpp +++ b/modules/c/src/excluded_functions.cpp @@ -17,3 +17,43 @@ */ #include +extern "C" { + +void cv_randu2(Mat* dst, Scalar* low, Scalar* high) { + cv::randu(*dst, *low, *high); +} + +void cv_goodFeaturesToTrack2(Mat* image, vector_Point2f* corners, int maxCorners, double qualityLevel, double minDistance, Mat* mask, int blockSize, bool useHarrisDetector, double k) { + cv::goodFeaturesToTrack(*image, *corners, maxCorners, qualityLevel, minDistance, *mask, blockSize, useHarrisDetector, k); +} + +Mat* cv_create_Mat_as_vectort(vector_Point2f* vec, bool copyData) { + return new Mat(*vec, copyData); +} + +Point* cv_RotatedRect_center(RotatedRect* self) { + return new Point(self->center); +} + +Size* cv_RotatedRect_size(RotatedRect* self) { + return new Size(self->size); +} + +RotatedRect* cv_create_RotatedRect(Point* center, Size* size, float angle) { + return new RotatedRect(*center, *size, angle); +} + +void cv_inRangeS(Mat* src, Scalar* lowerb, Scalar* upperb, Mat* dst) { + cv::inRange(*src, *lowerb, *upperb, *dst); +} + +int cv_createTrackbar(String* trackbarname, String* winname, int* value, int count, TrackbarCallback onChange, void* userdata) { + return cv::createTrackbar(*trackbarname, *winname, value, count, onChange, userdata); +} + +void cv_setMouseCallback(String* winname, MouseCallback onMouse, void* userdata) { + return cv::setMouseCallback(*winname, onMouse, userdata); +} + + +} diff --git a/modules/c/src/genc.py b/modules/c/src/genc.py index 2646bda756..059ac0aef0 100755 --- a/modules/c/src/genc.py +++ b/modules/c/src/genc.py @@ -22,7 +22,7 @@ simple_types = ["int", "int64", "bool", "float", "double", "char*", "char", "size_t", "c_string", "void"] -excluded_functions = [] +excluded_functions = ["cv_randu2","cv_goodFeaturesToTrack2","cv_create_Mat_as_vectort","cv_RotatedRect_size","cv_RotatedRect_center","cv_create_RotatedRect","cv_inRangeS","cv_createTrackbar","cv_setMouseCallback"] class TypeInfo(object): diff --git a/modules/c/src/mat.cpp b/modules/c/src/mat.cpp index f4a8471544..2879e5f367 100644 --- a/modules/c/src/mat.cpp +++ b/modules/c/src/mat.cpp @@ -18,6 +18,7 @@ #include extern "C" { + Mat* cv_create_Mat() { return new Mat(); } @@ -30,6 +31,11 @@ Mat* cv_create_Mat_with_data(int rows, int cols, int type, void* data) { return new Mat(rows, cols, type, data); } +Mat* cv_create_Mat_with_value(int rows, int cols, int type, Scalar* s) { + return new Mat(rows, cols, type, *s); +} + + Mat* cv_Mat_assign(Mat* self, Mat* m) { *self = *m; return self; @@ -88,6 +94,10 @@ void cv_Mat_assignTo_t(Mat*self, Mat* m, int t) { self->assignTo(*m, t); } +void cv_Mat_convertTo(Mat* self,Mat* m, int rtype, double alpha, double beta) { + self->convertTo(*m, rtype, alpha, beta); +} + Mat* cv_Mat_setTo(Mat* self, Scalar* value) { Mat* m = new Mat; *m = *value; @@ -152,6 +162,10 @@ Size* cv_Mat_size(Mat* self) { return new Size(self->size()); } +size_t cv_Mat_get_Step(Mat* self) { + return self->step; +} + size_t cv_Mat_step1(Mat* self) { return self->step1(); } @@ -222,4 +236,20 @@ Mat* cv_Mat_adjustROI(Mat* self, int dtop, int dbottom, int dleft, int dright) { return new Mat(self->adjustROI(dtop, dbottom, dleft, dright)); } +void cv_delete_Mat(Mat* self) { + delete self; +} + +void cv_destruct_Mat(Mat* self) { + self->~Mat(); +} + +void cv_delete_MatExpr(MatExpr* self) { + delete self; +} + +void cv_destruct_MatExpr(MatExpr* self) { + self->~MatExpr(); +} + } diff --git a/modules/c/src/scalar.cpp b/modules/c/src/scalar.cpp new file mode 100644 index 0000000000..13af44487e --- /dev/null +++ b/modules/c/src/scalar.cpp @@ -0,0 +1,32 @@ +/* + * ===================================================================================== + * + * Filename: scalar.cpp + * + * Description: + * + * Version: 1.0 + * Created: 03/17/14 18:49:28 + * Revision: none + * Compiler: gcc + * + * Author: YOUR NAME (), + * Organization: + * + * ===================================================================================== + */ +#include + +extern "C" { + +Scalar* cv_create_Scalar(double val0, double val1, double val2, double val3) +{ + return new Scalar(val0, val1, val2, val3); +} + +Scalar* cv_create_scalarAll(double val0123) +{ + return new Scalar(Scalar::all(val0123)); +} + +}