1

我正在编写一个 C++ dll,它将在 Java 代码中使用。我的一些方法具有 OpenCV 对象类型的返回值,例如cv::Mat, cv::Rect, cv::RotatedRect。我可以cv::Mat通过以下代码返回。但我不知道如何返回cv::Rector cv::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;
}

在上面的代码中mat并被imageProvider声明为全局变量。

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

编辑

下面的代码可以吗?

再次声明 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;
}
4

0 回答 0