最近在自学Android开发,要用到OpenCV来进行有关的图像处理,在过程中遇到了一些小问题
小白刚开始学,自己总结了一些原因,可能有错误,还请大家赐教。
下面是我在用OpenCV中的灰度化函数对图片进行灰度化的时候遇到问题和解决办法
参考别人的资料,一般都是将java中的Bitmap转换为数组传入到JNI,然后JNI中将数组转换为Mat类型进行处理,再将处理好的图片通过数组形式传回java层;
下面是将Bitmap转换为数组的过程
//Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.cat);
bmp=selectbp;
int w = bmp.getWidth();
int h = bmp.getHeight();
int[] pixels = new int[w * h];
上面为JAVA层获取图片大小和每一个像素的代码,pixels数组中保存像素值。
下面是JNI中对图像灰度化的处理过程
Java_com_example_liuxiaodong_myphoto_NDKloader_getGrayImage(JNIEnv *env, jclass type,
jintArray buf, jint w, jint h) {
jint *cbuf;
cbuf = env->GetIntArrayElements(buf, NULL);
if (cbuf =