opencv在android项目中的应用(1)

Android + OpenCV搭建图像灰度化应用 Android应用开发之JNI源代码开发 so文件:shared object,仅在运行时被加载,当使用C++进行开发时,在Andoird中以动态链接库输出的形式即为.so文件。因此,.so即为JAVA调用C++代码的一个中间件。当我们将.so文件放入工程时,JAVA代码就会在运行时加载这个native库,并通过JNI调用了它的方法。 JNI: java native interface,因此,当使用JNI开发时,就是在开发一个.so文件,因此JNI开发的核心是生成和使用so文件的过程 Android中的 阅读详情

    到现在为止,在android上使用opencv已经接触过了一段时间,最近又加了个小功能,所以又熟悉了一边这个过程。用的是opencv2.4.0,发现比以前方便了些。

记下了主要步骤,方便以后复查吧~~

elipse、ADT、android sdk这三个名词弄完以后就可以开发android项目了,此处不是重点,略过。

cygwin、ndk这两个名词弄完以后就可以在android项目中添加本地调用c语言的程序,此处不是重点,略过。

步入正题,在android项目中添加opencv程序开发的功能模块。

1    首先下载编译好的android-opencv(http://sourceforge.net/projects/opencvlibrary/files/opencv-android/2.4.0/)

2    在eclipse中新建一个android项目ArtDemo。添加一个类GoodCut,主要是定义功能函数接口。如下

package com.souxieke;
	public class GoodCut {
		static {
			System.loadLibrary("GoodCut");
		}
		public static native int[] Process(String imgPath, int x1,int y1,int x2,int y2);
	}
com.souxieke这个包的层级要搞清楚,以后写cpp文件中函数名要与这个完全对应。

3    把下载的android-opencv解压,把其中的OpenCV-2.4.0文件夹拷贝到你的eclipse项目空间同级目录下,把其中OpenCV-2.4.0\share\OpenCV\OpenCV.mk拷贝

       到你的android项目ArtDemo同级目录下,即eclise项目空间,布局如下图(这些位置一定要这样,否则编译cpp文件时会出错)。









4    进入android项目ArtDemo,新建jni目录。在jni下新建三个文件Android.mk和Application.mk,和自己的c功能模块实现文件(此处我新建了一个名为

      GoodCut.cpp的文件)。文件中内容分别如下,Android.mk和Application.mk两个文件中内容有一定的规则。

     

        /*
	 * Android.mk
	*/
	LOCAL_PATH := $(call my-dir)
	include $(CLEAR_VARS)
	OPENCV_LIB_TYPE:=STATIC
	OPENCV_INSTALL_MODULES:=on

	include ../includeOpenCV.mk
	ifeq ("$(wildcard $(OPENCV_MK_PATH))","")
		#try to load OpenCV.mk from default install location
		include $(TOOLCHAIN_PREBUILT_ROOT)/user/share/OpenCV/OpenCV.mk
	else
		include $(OPENCV_MK_PATH)
	endif

	LOCAL_MODULE    := GoodCut
	LOCAL_SRC_FILES := GoodCut.cpp
	LOCAL_LDLIBS +=  -llog -ldl
	include $(BUILD_SHARED_LIBRARY)
	/*
	 * Application.mk
	*/
	APP_STL := gnustl_static
	APP_CPPFLAGS := -frtti -fexceptions
	APP_ABI := armeabi-v7a
	/*
	 * GoodCut.cpp
	*/
	#include <jni.h>
	#include <opencv2/opencv.hpp>
	#include <cmath>
	using namespace std;
	using namespace cv;
	extern "C" {
		JNIEXPORT jintArray JNICALL Java_com_souxieke_GoodCut_Process(JNIEnv* env, jobject obj, jstring imgSrc,jint x1,jint y1,jint x2,jint y2);
		JNIEXPORT jintArray JNICALL Java_com_souxieke_GoodCut_Process(JNIEnv* env, jobject obj, jstring imgSrc,jint x1,jint y1,jint x2,jint y2) {
			//此处省略函数实现部分,感兴趣的话email:zsoftdevelop@163.com
		}
	}
      注:(1)GoodCut.cpp文件中Java_com_souxieke_GoodCut_Process要与ArtDemp中GoodCut类信息相对应

              (2)Adnroid.mk文件中LOCAL_MODULE    := GoodCut     LOCAL_SRC_FILES := GoodCut.cpp要与GoodCut文件名和GoodCut类中System.loadLibrary("GoodCut");

                        相对应

5    打开cygwin,进入android项目ArtDemo目录,$ndk/ndk-build开始编译cpp文件,编译通过后会生成libs\armeabi-v7a\libGoodCut.so,有了这个so,就可以在

      android程序中调用c语言功能模块了。

      注:此处$ndk/ndk-build前提是要在cygwin的home\username\.bash_profile中添加ndk的路径

       ndk=/cygdrive/d/android/android-ndk-r8b

       export ndk

ok!

Android项目引入OpenCV和FFmpeg 虽然成功引入了Opencv和FFmpeg库,但是仍存在很多问题,首先就是引入库文件后导致安装包体积过大的问题,以后有待优化;其次是安卓JNI的使用问题,因为是使用C++编程,对于C++我还不是很熟悉,需要继续学习。 阅读详情

相关推荐

Android studio3.6.1+ opencv3.4.1进行摄像头颜色识别的调试过程

Android studio3.6.1+ opencv3.4.1进行摄像头颜色识别的调试过程 本文过程建立在成功导入opencv3.4.1library并且成功运行打开摄像头的基础上的。在完成了验证并且使用opencv打开摄像头程序之后,剩下的就是java文件中代码的具体编写了,本人刚刚上手android学习,现在将一些简单的理解与在调试中遇到的困难记录如下,如有不足和错误之处欢迎大家留言交流。 ...

langzaitianya1的博客 2430

OpenCV Android应用开发学习笔记

通过这一部分的学习有一些Android开发的坑需要注意: Android 6.0以上的版本如果需要打开摄像头或是相册的操作需要动态申请权限,直接使用Uri uri=data.getData();这种直接读取uri的操作被认为是不安全的,会导致APP无法正常工作,比如我可以通过APP进入相册选取照片,但是不能将照片通过OpenCv处理后显示在APP的界面中; 可以不用事先在Android端安装O...

Charleyszc的博客 838

基于Qt平台开发安卓应用

                                                  基于Qt平台开发安卓应用         在之前的Qt学习中,使用QtGUI来实现简单的界面与后台功能设计。这样开发出来的应用往往界面元素比较单一,美感几乎可以省略,与其他移动平台开发的App相比,确实逊色不少。基于此,Qt平台下开发GUI开始逐渐使用QML。使用QML开发的应用不仅界面美感十足,...

u013816798的博客 4万+

使用 OpenCV 创建一个有趣的应用程序滤镜,如 Facebook!

介绍计算机视觉是一个越来越流行的关键词,从工作到娱乐,它的应用无处不在。在这篇文章中,我想给大家介绍一下计算机视觉和图像处理中常用的一些常用技术:按位算子、切片技术。然后,创建一个有趣的应...

深度学习与计算机视觉 352

VS2019 OpenCV的Windows工程到安卓的移植

前言 本篇是应一个读者的请求,而且这种需求应该还是蛮多的:刚入职或者刚进实验室的新人,接手一套C++算法工程,现在老板让你移植到Android上。全部用Java重写,当然是不现实的。本文将介绍一种尽可能简单的移植方法。 本文使用的软件版本如下: VisualStudio 2019 16.3.5 AndroidStudio 3.5 NDK-r16B Android SDK 21 Ope...

luoyu510183的博客 4823

OpenCV4Android开发实录(2): 使用OpenCV3.4.1库实现人脸检测

上一篇文章OpenCV4Android开发实录(1):移植OpenCV3.3.0库到Android Studio大概介绍了下OpenCV库的基本情况,阐述了将OpenCV库移植到Android Studio项目中的具体步骤。本文将在此文的基础上,通过对OpenCV框架中的人脸检测模块做相应介绍,然后实现人脸检测功能。

老蒋也疯狂 1万+

深入OpenCV Android应用开发

前言OpenCV是Open Source Computer Vision library(开源的计算机视觉库)的缩写。它是使用最广泛的计算机视觉库。Opencv是计算机视觉领域常用的操作函数的集合,其自身由C/C++编写而成,同时也提供了对Python、Java以及任意JVM语言的封装。考虑到大部分Android应用是用C++/Java编写的,OpenCV也被移植为供开发者使用的SDK,以使他们开发的应用支持机器视觉。

Jushuzhan的专栏 1570

Qt for Android 之 OpenCV编译(Windows下编译)

编译Opecv Android平台库, 并在 Qt for android项目中调用

听我一言的博客 2427

javaCV在android studio上的应用,Android Studio中的OpenCV

Integrating OpenCV v3.1.0 into Android Studio v1.4.1 ,包含其他详细信息的说明以及这是您应该获取的类型截图 .大部分功劳归功于Kiran,Kool,1“和SteveLiles在opencv.org上的解释 . 我正在添加这个答案,因为我相信Android Studio的界面现在足够稳定,能够处理这种类型的集成我还要为我们的项目写这些说明 .经验丰...

weixin_32820101的博客 484

Android Studio之配置OpenCV

当前项目将yolov5迁移到Android Studio制作一个围棋识别app,需要在定位的基础上模拟标准电子棋盘,我们需要用到opencv中的透视变换。 基于此,在Android Studio上搭建OpenCV的开发环境。 一、版本概览 Java JDK:1.8.0_91 Java JRE:1.8.0_91 Android Studio: 4.1.1 for Windows 64-bit OpenCV:opencv-4.5.1-android Android SDK:Android 7.1.1 二、配置步

qq_37874136的博客 4873

android studio3导入opencv4人脸识别例程安卓项目工程

参考基于android studio开发的 opencv关于android人脸识别的DEMO 前言 /build/core/add-application.mk:178: *** Android NDK: APP_STL gnustl_shared is no longer supported. Please switch to either c++_static or c++_shared....

firing00的博客 2703

android studio 0.42,使用Android Studio创建OpenCV4.1.0 项目的步骤

一、OpenCVOpenCV(开源计算机视觉库)是一个开源的计算机视觉和机器学习软件库,是一个基于C与C++的跨平台计算机视觉处理库。二、下载开发基于Andorid的计算机视觉的应用可以使用OpenCV 4.1.0-Android SDK:从官方网站下载 OpenCV 4.1.0 For Android SDK三、使用Android Studio 开发基于OpenCV 4.1.0的移动应用(1)平...

weixin_29363945的博客 180

Android OpenCV应用篇三:提取图片中的文字

上篇我们大致了解了如何运用OpenCV在Android上进行图片但简单处理 Android OpenCV应用篇二:图片处理 接下来我们就运用之前的一些相关技术来搞点事情: 如何从一张图片中将文字提取出来? 前言 在开始之前,我们先来看一个字 高 可以看到,这个字体是上中下结构,相应的,我们的汉字还有左中右结构等等,我们如何在识别的过程中,不会吧这些特殊结构的字体识别成多个? ...

qq_20158897的博客 5445

OpenCV-Android平台应用实战 - 银行卡卡号识别(01、环境搭建)

安装环境 Windows10 Android Studio 2.3.3 Java JDK1.8 和JRE 1.8。 OpenCV3.2 Android SDK下载与安装 (参考博客:https://blog.youkuaiyun.com/qq583083658/article/details/80137196) opencv-3.2.0-android-sdk.zip,可以去OpenCV官网下载,如下...

Micheal 超 的博客 946

Android 使用OpenCV实现实时人脸识别,并绘制到SurfaceView上

按步骤详细介绍如何在Android上,实现实时的人脸识别功能

朱豪凯的博客 5421

深入OpenCV Android应用开发中文高清完整版PDF

《深入OpenCV Android应用开发》以在Android 平台上开发OpenCV 应用为重点,详细介绍了计算机视觉技术的理论及其在移动平台的应用。

java sdk 怎么打包,如何打包并链接OpenCV的binares和OpenCV的Java SDK为Android工作室?...

Trying to get started with OpenCV Java SDK on Android Studio creating an app targetting 14 - 19.I'm following steps defined by @Paito here:http://stackoverflow.com/a/20600674/12914891) I package libs ...

weixin_34495151的博客 188

查看电脑mac地址+主机名+用户名并导出

张三:李四,应公司要求,今天下班前必须将这张表格里面用户电脑的mac地址统计出来!李四:我该怎么办呢?一个一个查看,太没有效率了吧!对了,我可以做一个bat脚本啊!

拥抱着青春 1971

使用Android Studio创建OpenCV 4.1.0 项目

一、OpenCV OpenCV(开源计算机视觉库)是一个开源的计算机视觉和机器学习软件库,是一个基于C与C++的跨平台计算机视觉处理库。 二、下载 开发基于Andorid的计算机视觉的应用可以使用OpenCV 4.1.0-Android SDK: 从官方网站下载 OpenCV 4.1.0 For Android SDK https://sourceforge.net/projects/...

userhu2012的博客 1万+

从ResNet到EfficientNet:特征金字塔网络(FPN)在不同骨干网中的适配指南

本文深入探讨了特征金字塔网络(FPN)与ResNet、VGG、EfficientNet等主流骨干网络的适配策略。文章详细解析了FPN的核心原理,并针对不同骨干网络的特征提取特性,提供了通道对齐、参数量估算及迁移学习的系统化指南,旨在帮助开发者在目标检测等视觉任务中构建高性能、高效率的模型。

weixin_29047919的博客 220

使用HFSS仿真分支波导耦合器

本文介绍了分支波导耦合器的HFSS仿真设计过程。首先给出了器件关键参数(t=0.365mm,l=1.600mm等),详细说明了建模步骤:包括创建中心分支、设置变量参数、镜像复制两侧分支、矩形波导端口设计等操作。重点阐述了激励端口设置方法,包括四个端口的积分线绘制,以及求解频率设定。最后展示了S参数、幅度平衡度和相位差等关键性能指标的仿真结果提取方法。整个设计过程体现了HFSS在微波器件仿真中的参数化建模和结果分析能力。

shao666888的博客 180
上一篇: lib和dll小谈
下一篇: ubuntu下安装使用mysql
zsoftdevelop
博客等级 码龄18年 12粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值