Skip to content
13 changes: 13 additions & 0 deletions modules/c/include/opencv2/c/excluded_functions.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,16 @@
*/

#include <opencv2/c/opencv_generated.hpp>

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);
}

8 changes: 7 additions & 1 deletion modules/c/include/opencv2/c/mat.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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);
}

23 changes: 23 additions & 0 deletions modules/c/include/opencv2/c/scalar.hpp
Original file line number Diff line number Diff line change
@@ -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 <opencv2/c/opencv_generated.hpp>

extern "C" {
Scalar* cv_create_Scalar(double val0, double val1, double val2, double val3);
Scalar* cv_create_scalarAll(double val0123);
}
40 changes: 40 additions & 0 deletions modules/c/src/excluded_functions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,43 @@
*/
#include <opencv2/c/excluded_functions.hpp>

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);
}


}
2 changes: 1 addition & 1 deletion modules/c/src/genc.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
30 changes: 30 additions & 0 deletions modules/c/src/mat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include <opencv2/c/mat.hpp>

extern "C" {

Mat* cv_create_Mat() {
return new Mat();
}
Expand All @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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();
}
Expand Down Expand Up @@ -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();
}

}
32 changes: 32 additions & 0 deletions modules/c/src/scalar.cpp
Original file line number Diff line number Diff line change
@@ -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 <opencv2/c/scalar.hpp>

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));
}

}