4

my_mouse_callbackIplImage*で動作する関数の例があります。

void my_mouse_callback(int event, int x, int y, int flags, void* param) 
{
IplImage* image = (IplImage*) param;
switch( event ) 
{
    case CV_EVENT_LBUTTONDOWN: 
        drawing_box = true;
        box = cvRect(x, y, 0, 0);
        break;
        ...

        draw_box(image, box);
        break;
}

これは次のように実装されmainます:

cvSetMouseCallback(Box Example,my_mouse_callback,(void*) image);

問題は、私のコードではMatオブジェクトを使用していて、この方法でsetMouseCallback関数に転送できないことです。

MatをIplImage*に転送する必要のないソリューションを探しています。

または、解決策がない場合、MatをIplImage *に正しく変換するにはどうすればよいですか?

私はopencvドキュメントからのこのコードですでにそれを試しました:

Mat I;
IplImage* pI = &I.operator IplImage();

そしてそれはうまくいきませんでした。

4

2 に答える 2

3

私の知る限り、C++インターフェースにはその関数に相当するものはありません

しかし、あなたはこのように、そしてこのように逆に変換することができcv::Matます:IplImage*

cv::Mat mat(my_IplImage);
于 2011-11-19T02:31:32.647 に答える
2

マットをMouseCallback関数に転送できないのはなぜですか?IplImageでそれを実行しました。マットは単なるポインタです。これが私がそれをした方法です。

void onMouse(int event, int x, int y, int flags, void* param)
{
    Mat src;
    src = *((Mat*)param);

   ...

私のメインループではそのように呼んでいます:

 setMouseCallback("source", onMouse, &src);
于 2012-12-20T00:15:32.963 に答える