Android程序如何调用C下写的函数

我现在要实现的功能是,在VS平台下用C写基于OpenCV的图像处理函数,在Eclipse下的Android程序中调用,譬如通过点击程序的一个按钮,然后把原图处理成加了某滤... 我现在要实现的功能是,在VS平台下用C写基于OpenCV的图像处理函数,在Eclipse下的Android程序中调用,譬如通过点击程序的一个按钮,然后把原图处理成加了某滤镜的,我知道opencv在android上直接有提供接口,但我不是要这个,我是要通过JNI实现,希望各位能提供一个完整的思路,需要用到什么工具,怎样做,主要的一个问题是Android下图像如Bitmap类,怎样可以让它能转变成OpenCV下,如IplImage结构体能兼容的类型???没有便捷的方法吗? 要转换成流的方式吗??对图像方面的只是也很陌生,希望也指点一下。。。
希望能给一个详细点的思路。现在思路很糊涂。。万分感谢。
分数不是重点,希望大家指点指点~谢谢
展开
 我来答
stor_kiler0
推荐于2016-03-04 · TA获得超过111个赞
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:122万
展开全部
你说的太多了,在这里很难说清楚。你说的opencv对Android的接口是javaCV吧,这个已经完全封装了Opencv 并且提供了硬件加速,简单处理的话,如果你不用这个有点可惜。
直接调用c的的话就是JNI不过需要在Linux环境下开发,编译.so。
那么java要做的就是把图像传给c,c处理完,在传回来显示。至于如何传递,我没有研究过。如果控制图像大小通过流还是可以的。如果像素高,图片大 你就要在考虑考虑了
匿名用户
2012-08-30
展开全部
用 jni。JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。
http://blog.csdn.net/zhouyuanjing/article/details/7553706
追问
可否提供一个Windows下NDK的环境配置和Eclipse下配合使用NDK的文章,我找到的都配不好啊~还有,有关JNI的复杂一点的函数的参数处理问题的文章,麻烦也推荐一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨非我所欲
推荐于2016-07-21 · TA获得超过1993个赞
知道小有建树答主
回答量:559
采纳率:85%
帮助的人:199万
展开全部
在一些Android应用的开发中,需要通过JNI和 Android NDK工具实现JAVA和C/C++之间的相互调用。
Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI是本地编程接口,它使得在 Java 虚拟机 (VM)内部运行的 Java代码能够与用其它编程语言(如 C、C++和汇编语言)编写的应用程序和库进行交互操作。
由于Android的应用层的类都是以Java写的,这些Java类编译为Dex型式的Bytecode之后,必须靠Dalvik虚拟机(VM: Virtual Machine)来执行。在执行Java类的过程中,如果Java类需要与C组件沟通时,VM就会去载入C组件,然后让Java的函数顺利地调用到C组件的函数。此时,VM扮演着桥梁的角色,让Java与C组件能通过标准的JNI介面而相互沟通。
在实际应用中这两者之间的调用关系可以归纳为以下四种方式:
1. 在应用的JAVA代码中调用NDK中C/C++实现的函数。
2. 在NDK开发中的C/C++代码调用应用中JAVA类的静态函数。
3. 在NDK开发中的C/C++代码调用应用中JAVA类当前传入NDK中的实例的函数。
4. 在NDK开发中的C/C++代码调用应用中JAVA类新建实例的函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式