Android Jni 利用transpose()和flip()函数实现图像旋转90°
来源:互联网 发布:mac cosmetics美国官网 编辑:程序博客网 时间:2024/05/27 20:52
一,上java代码
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.test7); 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(); 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 temp;transpose(img,temp);//Size_(_Tp _width, _Tp _height);resize(temp,img,Size(w,h));/** * 翻转图片 * 第三个参数,0以x轴进行翻转,1以y轴翻转,-1以xy同时翻转 */flip(img,img,1);//对应数据指针uchar* ptr = img.data;int size = w*h;jintArray result = env->NewIntArray(size);env->SetIntArrayRegion(result,0,size,pixels);env->ReleaseIntArrayElements(pixels_, pixels, 0);return result;
}
阅读全文
0 0
- Android Jni 利用transpose()和flip()函数实现图像旋转90°
- Android Jni 利用OpenCV transpose()函数实现图像转置
- 通过transpose和flip实现图像旋转90/180/270度
- Android Jni 利用OpenCV 实现图像任意角度旋转
- flip、transpose 图像翻转镜像
- Android Jni 利用OpenCV 实现图像尺寸缩放(一)
- Android Jni 利用OpenCV 实现图像尺寸缩放(二)
- Android Jni 利用OpenCV 实现图像尺寸缩放(三)
- OpenCV利用矩阵实现图像旋转
- Matlab图像、矩阵旋转、翻转函数 rot90、flipud、fliplr、imrotate、flipdim、flip详解
- Android中利用Matrix实现图片平移、缩放和旋转
- OpenCV函数cv2DRotationMatrix实现图像旋转
- OpenCV代码提取:transpose函数的实现
- 利用ITK旋转图像
- DrawImage函数---旋转、反射和扭曲图像
- numpy中transpose和swapaxes函数讲解
- opencv实现图像做镜像和旋转
- android:动态缩放和旋转图像
- Tensorflow辅助工具篇——tensorflow slim(TF-Slim)介绍
- tomcat闪退
- 编译 Faster Rcnn
- 生成对抗网络DCGAN+Tensorflow代码学习笔记(一)----main.py
- 域名注册和域名解析
- Android Jni 利用transpose()和flip()函数实现图像旋转90°
- jQuery ajax请求错误返回status 0和错误error的问题
- 关于ICE传输文件大小的限制跟踪
- The Accomodation of Students (着色法)
- 原型模式
- [leetcode]#58. Length of Last Word
- git代码提交步骤
- 1.3.3.序列化操作
- Android 中内存泄漏的原因和解决方案