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