米倉です。

>     class Object_IplImage
>     {
>       private:
>         IplImage* image;
>         VALUE origin;
>       public:
>         Object_IplImage(IplImage *ptr, VALUE orig = 0)
>             : image(ptr), origin(orig) {}
>         VALUE wrap();
>     };
> 
>     VALUE Object_IplImage::wrap() {
>         VALUE object = alloc(RubyClass);
>         DATA_PTR(object) = (void *)this;
>         return object;
>     }

つまりはこのような構造にするということでしょうか?
[Ruby Object]        [C struct]
OpenCV::IplImage --> Object_IplImage ---+-> IplImage *image
                                        |-> VALUE origin;
*originが指してる先は一番始めにIplImageを読み込んだRubyObject

// 内部へのアクセス例
VALUE Object_IplImage::width(VALUE self){
  Object_IplImage *ptr;
  Data_Get_Struct(self, Object_IplImage, ptr);
  return INT2FIX(ptr->image->width);
}

---------------------------------
 [ Kanagawa University ]
 Masakazu Yonekura
 mail: kazu / goto.info.kanagawa-u.ac.jp
---------------------------------