您的位置 首页 java

Jni jbyteArray转Mat

在进行 图像识别 时需要把图片的二进制数据转成Mat数据。

jbyteArray–>转成Mat

  JNI EXPORT jint JNICALL faceRecognByByte(JNIEnv *env, jclass jcls, j byte Array jbyte){、
//解码内存数据转换成Mat数据
Mat src_img;                              
env->GetByteArrayRegion(jbyte, 0,  len , pData);
signed char* pData = new  signed char[len];
	for (int i = 0; i < len; ++i) {
			data.push_back(pData[i]);
	}
	src_img = im decode (data,  IMREAD _COLOR);
  return 200;                                                                    
}  

说明:

java 里byte[]数据对应 c++ 里的jbyteArray类型数据。

c++中二进制数据通常用 signed char*来表示。

opencv 中有这个函数可以用来把二进制数据转成Mat数,

Mat imdecode( InputArray buf, int flags )

InputArray:对应的数据为 vector <uchar>

flags :表示转换的图片是否做灰度处理。

文章来源:智云一二三科技

文章标题:Jni jbyteArray转Mat

文章地址:https://www.zhihuclub.com/188670.shtml

关于作者: 智云科技

热门文章

网站地图