Android Jni 利用OpenCV 实现图像尺寸缩放(三)
来源:互联网 发布:2015年淘宝女装排行榜 编辑:程序博客网 时间:2024/06/03 19:51
一,利用OpenCV的pyrDown() 实现图像缩小,上java代码
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btnProc;private ImageView imageView;private Bitmap bmp;// Used to load the 'native-lib' library on application startup.static { System.loadLibrary("native-lib");}@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Example of a call to a native method btnProc = (Button) findViewById(R.id.btn_gray_process); imageView = (ImageView) findViewById(R.id.image_view); bmp = BitmapFactory.decodeResource(getResources(), R.drawable.test3); imageView.setImageBitmap(bmp); btnProc.setOnClickListener(this);}/** * A native method that is implemented by the 'native-lib' native library, * which is packaged with this application. */public static native int[] grayProc(int[] pixels, int w, int h);@Overridepublic void onClick(View view) { int w = bmp.getWidth(); int h = bmp.getHeight(); int[] pixels = new int[w*h]; bmp.getPixels(pixels, 0, w, 0, 0, w, h); long startTime = System.currentTimeMillis(); int[] resultInt = grayProc(pixels, w, h); long endTime = System.currentTimeMillis(); w = w/2; h = h/2; Log.e("JNITime",""+(endTime-startTime)); Bitmap resultImg = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); //(@ColorInt int[] pixels, int offset, int stride,int x, int y, int width, int height) resultImg.setPixels(resultInt, 0, w, 0, 0, w, h); imageView.setImageBitmap(resultImg);}
}
二,实现jni方法
extern “C”
JNIEXPORT jintArray JNICALL
Java_com_example_dgxq008_opencv_1readpixel_MainActivity_grayProc(JNIEnv *env, jclass type
, jintArray pixels_
, jint w
, jint h) {
jint* pixels = env->GetIntArrayElements(pixels_, NULL);if (pixels==NULL){ return 0;}//图片一进来时是ARGB 通过mat转换BGRAMat img(h,w,CV_8UC4,(uchar *)pixels); //pixels 操作的是同一份数据
// Mat out;
// cvtColor(img,out,COLOR_BGRA2RGB);
//
// //对应数据指针
// uchar* ptr = img.data;
//
// int length = w*h;
// int i;
// for (i = 0; i < length ; ++i) {
// ptr[4*i+0] = 0;
// ptr[4*i+1] = 0;
// ptr[4*i+2] = ptr[4*i+2];
// }
Mat temp;//进行向上取样操作//( InputArray src, OutputArray dst,const Size& dstsize = Size(), int borderType = BORDER_DEFAULT );
//缩小原图的一倍
pyrDown( img, temp, Size( img.cols/2, img.rows/2 ) );
//对应数据指针uchar* ptrTemp = temp.data;int size = w*h/4;jintArray result = env->NewIntArray(size);env->SetIntArrayRegion(result,0,size,(jint*)ptrTemp);env->ReleaseIntArrayElements(pixels_, pixels, 0);return result;
}
阅读全文
0 0
- Android Jni 利用OpenCV 实现图像尺寸缩放(三)
- Android Jni 利用OpenCV 实现图像尺寸缩放(一)
- Android Jni 利用OpenCV 实现图像尺寸缩放(二)
- Android Jni 利用OpenCV transpose()函数实现图像转置
- Android Jni 利用OpenCV 实现图像任意角度旋转
- opencv实现图像缩放
- OpenCV实现图像缩放
- Android平台上利用opencv进行图像的缩放
- opencv缩放图像的实现
- opencv实现图像的缩放
- 图像尺寸变化-图像缩放
- opencv实现图像的剪切和缩放
- 图像金字塔及尺寸缩放
- opencv:图像尺寸调整
- Android Jni OpenCV-灰度图像的直方图
- 【OpenCV】图像处理(三)漫水填充+尺寸调整
- 完成OpenCV图像缩放
- opencv中图像缩放
- linux配置开机启动脚本的文件
- static关键字
- .NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式
- Qt之截图非顶层窗
- tar命令
- Android Jni 利用OpenCV 实现图像尺寸缩放(三)
- java报错:The reference to entity "characterEncoding" must end with the ';' delimiter.
- A very good indexdb blog
- android结构及布局
- 使用 Azure 门户创建 Windows 虚拟机
- 不同时间阶段的seo优化技术侧重点
- .equals() 和==号的区别
- 131. Palindrome Partitioning && 132. Palindrome Partitioning II
- JS——坑2(函数不调用不执行,闭包)