1
0
Fork 0
mirror of https://github.com/ruby-opencv/ruby-opencv synced 2023-03-27 23:22:12 -04:00

added cCvMat::new_mat_kind_object() to adapt CvMat methods to IplImage

This commit is contained in:
ser1zw 2011-05-28 19:04:41 +09:00
parent efc7292cdf
commit 4fb3d87dd3
2 changed files with 16 additions and 1 deletions

View file

@ -5250,6 +5250,21 @@ new_object(CvSize size, int type)
return OPENCV_OBJECT(rb_klass, rb_cvCreateMat(size.height, size.width, type));
}
VALUE
new_mat_kind_object(CvSize size, VALUE ref_obj)
{
VALUE return_type = CLASS_OF(ref_obj);
if (rb_obj_is_kind_of(ref_obj, cIplImage::rb_class())) {
IplImage* img = IPLIMAGE(ref_obj);
return OPENCV_OBJECT(return_type, rb_cvCreateImage(size, img->depth, img->nChannels));
}
else if (rb_obj_is_kind_of(ref_obj, rb_klass)) // CvMat
return OPENCV_OBJECT(return_type, rb_cvCreateMat(size.height, size.width, cvGetElemType(CVMAT(ref_obj))));
else
rb_raise(rb_eNotImpError, "Only CvMat or IplImage are supported");
return Qnil;
}
__NAMESPACE_END_OPENCV
__NAMESPACE_END_CVMAT

View file

@ -270,7 +270,7 @@ VALUE rb_save_image(VALUE self, VALUE filename);
VALUE new_object(int rows, int cols, int type);
VALUE new_object(CvSize size, int type);
VALUE new_mat_kind_object(CvSize size, VALUE ref_obj);
__NAMESPACE_END_CVMAT