使用JNI从C ++代码返回cv :: Rect和cv :: RotatedRect

时间:2013-11-07 15:49:07

标签: java c++ opencv java-native-interface

我正在编写一个将从Java代码中使用的C ++ DLL。我的一些方法具有OpenCV对象类型的返回值,例如cv::Matcv::Rectcv::RotatedRect。我可以通过以下代码返回cv::Mat。但我不知道如何返回cv::Rectcv::RotatedRect,所以说自定义对象类型。

JNIEXPORT jlong JNICALL Java_tr_com_imageprocessing_ImageProvider_grabImage0(JNIEnv *env, jobject obj)
{
    if(mat != nullptr) // this is satisfied if memory is already allocated and not deleted
    {
        delete mat;
        mat = nullptr;
    }
    mat = new cv::Mat(imageProvider.grabImage());
    return (jlong)mat;
}

在上面的代码中,matimageProvider被声明为全局变量。

任何帮助将不胜感激。 提前谢谢。

修改

下面的代码可以吗?

再次 rect shapeProvider 被声明为全局变量。

JNIEXPORT jlong JNICALL Java_tr_com_provus_impro_ShapeProvider_rect0(JNIEnv *env, jobject obj)
{
    if(rect != nullptr) // this is satisfied if memory is already allocated and not deleted
    {
        delete rect;
        rect = nullptr;
    }
    rect = new cv::Rect(shapeProvider.rect());
    return (jlong)rect;
}

0 个答案:

没有答案