如何将IplImage *转换为cv:Mat *?

时间:2011-09-17 21:24:44

标签: android c opencv

我是C语言的初学者,我需要将像素复制到Android Bitmap,我使用了一段android opencv代码,用于jni:

AndroidBitmapInfo  info;
void*              pixels;
int                ret;
cv::Mat* mat;


if ((ret = AndroidBitmap_getInfo(env, bitmap, &info)) < 0 ){
    LOGE("AndroidBitmap_getInfo() failed ! error=%d", ret);

    return false; // can't get info
}

if (info.format != ANDROID_BITMAP_FORMAT_RGBA_8888){
    LOGE("Bitmap format is not RGB_8888 !");
    return false; // incompatible format
}

if ( (ret = AndroidBitmap_lockPixels(env, bitmap, &pixels)) < 0 ){
    LOGE("AndroidBitmap_lockPixels() failed ! error=%d", ret);
    return false; // can't get pixels
}

memcpy(pixels, mat->data, info.height * info.width * 4);

AndroidBitmap_unlockPixels(env, bitmap);

所以,我有一个名为pImage的IplImage *,但我不知道如何将IplImage *转换为cv :: Mat *。我看到了一种转换为cv:Mat的方法,就像这样:

cv::Mat mat(pImage);

但我需要一个简历:Mat *不是简历:Mat。有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

回答你的问题标题:

cv::Mat* mat = new cv::Mat(pImage);

答案 1 :(得分:0)

OpenCV教程包含一篇关于Interoperability with OpenCV 1的文章。