第一个android-opencv程序

Android调用C++OpenCV程序的方法(NDK+JNI) 参考:   [1] http://blog.youkuaiyun.com/donglynn/article/details/23046925         [2]http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html                [3]http://www.tuicool.com/articles/yaeeuu 阅读详情

    我的第一个android-opencv程序登场。实现图片灰度化

刚刚会在android上写opencv程序,把一个小例子拿出来和大家分享,主要是android-opencv开发的过程。

1 安装android sdk、ndk、android-opencv、eclipse和ADT插件。这一部分就不介绍了,网上很多。android-opencv下载后编译也可以按照一位牛人的博客里讲的一步一步来弄。有问题的也可以加我好友。

2 新建一个android工程,加入ImageView和Button控件,修改主文件代码如下:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btnChange=(Button)findViewById(R.id.btnChange);
        imgView=(ImageView)findViewById(R.id.imgChange);
        path="/sdcard/sample.bmp";
        imgSample=BitmapFactory.decodeFile(path);
        imgView.setImageBitmap(imgSample);
        btnChange.setOnClickListener(new OnClickListener(){
         public void onClick(View v){
          imgSample=BitmapFactory.decodeFile(cvRgb2Gray(path));
          imgView.setImageBitmap(imgSample);
         }
        });     
    }

3 在此工程下新建一个jni目录,Application.mk文件。在jni目录下新建一个Android.mk文件。相应代码如下:

Application.mk

APP_BUILD_SCRIPT := $(call my-dir)/jni/Android.mk
APP_PROJECT_PATH := $(call my-dir)
APP_PLATFORM := 5
APP_MODULES      :=  rgb2gray
Android.mk

# date: Summer, 2010
# author: Ethan Rublee
# contact: ethan.rublee@gmail.com
#Android.mk for the hello-jni opencv sample
#please define OPENCV_ROOT when calling ndk-build
#ndk-build OPENCV_ROOT=../../opencv
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

#OPENCV_ROOT must be defined.
ifndef OPENCV_ROOT
$(warning Please define OPENCV_ROOT to point to the root folder of opencv, try ndk-build OPENCV_ROOT=../../opencv)
OPENCV_ROOT=/cygdrive/C/android-opencv/opencv
$(warning Defaulting to OPENCV_ROOT=$(OPENCV_ROOT))
endif


#define OPENCV_INCLUDES
include $(OPENCV_ROOT)/includes.mk
#define OPENCV_LIBS
include $(OPENCV_ROOT)/libs.mk

 

LOCAL_LDLIBS += $(OPENCV_LIBS) -llog
   
LOCAL_C_INCLUDES +=  $(OPENCV_INCLUDES) 

LOCAL_CPP_EXTENSION := cc
LOCAL_MODULE    := rgb2gray
LOCAL_SRC_FILES := rgb2gray.cc

include $(BUILD_SHARED_LIBRARY)
新建自己的opencv程序,实现图片的灰度化功能,代码如下:

#include <jni.h>  
#include <cstdlib>  
#include <stdexcept>  
#include <string>  
 
#include <opencv2/core/core.hpp>  
#include <opencv2/features2d/features2d.hpp>  
#include <opencv2/highgui/highgui.hpp>  
#include <opencv2/imgproc/imgproc.hpp>  
#include <opencv2/calib3d/calib3d.hpp>  
#include <opencv2/imgproc/imgproc_c.h>  
 

 
extern "C" 
jstring Java_com_jerry_ImgColorToGray_cvRgb2Gray(JNIEnv* env,jobject thiz,jstring path)  
{ 
  const char* file=env->GetStringUTFChars(path,0);
    IplImage* object = cvLoadImage(file,CV_LOAD_IMAGE_GRAYSCALE);  
    std::string filePath="/sdcard/result.bmp";
    jstring filePath1=env->NewStringUTF(filePath.c_str());
    const char * resultpath=env->GetStringUTFChars(filePath1, 0);
    cvSaveImage(resultpath,object);
    env->ReleaseStringUTFChars(path, file);
    env->ReleaseStringUTFChars(filePath1, resultpath);
    return filePath1;  
}

这里边要注意数据转化问题,具体转化规则请看jni相关资料。

4 利用cygwin编译自己写好的opencv程序。成功后会生成.so文件。在eclipse下运行android程序生成.apk文件,把此程序安装到手机上就可以运行。注意在模拟器上可能运行不起来,一闪就会退出,一定要在手机上运行,具体为什么,我还没有解决,反正做实验最好用真机。

5 到此程序就完成了。还有不完整的地方欢迎大家讨论。

OPENCV安卓安装包2.4.10+android 2.3以上 OPENCV安卓安装包2.4.10+android 2.3以上,安卓视觉开发必备,最新版本2.4.10 立即下载

相关推荐

opencv 3.1.0 第三方精简 安卓版

opencv-3.1.0 的第三方插件简化版本,支持jpeg和png,编译出来的程序会减少很多空间体积,已经编译好的静态库版本打包,支持安卓的armeabi-v7a、arm64-v8a、x86

第一个opencv4android项目

相信当你找到这篇博客的时候,你已经知道opencv为何物,并且对android,c/c++编程,eclipse使用有一定基础,同时对ndk,jni为何物有一定的了解,鉴于网上对opencv4android的配置都比较陈旧,所以新人入门过程会遇到诸多的不顺,作者便是深有体会,对此,便新开一文,对较新版本的opencv配置提供一点个人见解,才疏学浅,如有疏漏,不要见怪。简单说一下,ndk是一个编译c/c

u013438638的专栏 1120

国产麒麟系统下用Rider开发C#桌面应用:从环境配置到Avalonia UI实战

本文详细介绍了在国产麒麟系统上使用JetBrains Rider开发C#桌面应用的完整流程,重点讲解了Avalonia UI框架的实战应用。从环境配置、Rider安装到Avalonia项目创建和UI开发技巧,全面覆盖了在非Windows环境下进行C#开发的关键步骤和优化建议,助力开发者高效构建跨平台桌面应用。

weixin_27791839的博客 387

安卓手机运行Opencv动态库或普通c++函数配置指南

安卓运行Opencv动态库配置指南 0、关键点: 错误路线: 不需要单独安装jdk jre 即java环境 不需要单独编译opencv,这里使用官网已经编译好的libopencv_java4.so 正确方法: 如果想单独生成libtest.so,即你自定义的库,可以使用visual studio 2022 c++ 移动开发,新建android 动态共享库,编译生成的库可以有效使用。但是如果想用于编译opencv,此方法不可行。

snjs000111的博客 2878

两轮差速机器人运动学模型

两轮差速底盘 1.1、底盘说明 两轮差速底盘由两个动力轮位于底盘左右两侧,两轮独立控制速度,通过给定不同速度实现底盘转向控制。一般会配有一到两个辅助支撑的万向轮。 主要底盘有: 1、Turtlebot; 2、扫地机器人; 3、无人仓AGV小车; 4、轮椅; 底盘主要特点: 1、控制简单、里程计计算简单。 2、只能给定X方向速度、Z轴方向角速度。 1.2、底盘运动学分析 1.2.1、底盘模型 图1.2.1 常见的两轮差速底盘模型 1.2.2、机器人本身约束方程(物理特性) 图1.2.2 a 左侧是车的两个

su_fei_ma_su的博客 3万+

腾讯股票接口API(1)——根据股票代码获取详情

获取股票简要信息,找来找去也没有找到官方的文档,都是复制粘贴的,这里先简单记录一下。 1.简要信息 以贵州茅台为例: http://qt.gtimg.cn/q=s_sh600519 // sh600519是贵州茅台的股票代码,根据自己的关键字拼接URL 可以直接在Android项目中请求,会得到如下一串字符串: v_s_sh600519="1~贵州茅台~600519~2075.95~42.95~2.11~38930~794942~~26078.04~GP-A"; 这里v_s代表简要信息,sh600519

GeofferySun的专栏 6万+

在Android端集成OpenCV的三种方式

本文较为详细的介绍了在Android端集成OpenCV的三种方式,并给出了相关的小例子实现,本文安卓开发编译器Android Studio。

AIGC Studio:分享AIGC前沿知识和好玩应用,公众号同名。 1万+

ABAP CDS View 从入门到精通教程目录:ABAP CDS View 在 SAP 技术体系中的重要地位

学习 ABAP CDS View 的开发技术,体会其背后的设计理念,也就掌握了 SAP S/4HANA 底层数据模型的设计精髓。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4776

Android试玩OpenCV

OpenCV目前在移动端的主要使用场景是人脸识别、车牌识别、图像处理等,可以说其发挥作用的场景是越来越多的,本文主要介绍OpenCV在安卓端的集成方法和简单用法,方便后续进一步研究。 OpenCV下载 OpenCV官网地址:https://opencv.org/ 下载地址:https://sourceforge.net/projects/opencvlibrary/files/ sourceforge国内的下载速度及其缓慢,可以考虑使用VPN进行加速,或者用迅雷等专业的下载器来提高下载速度。 ...

csfchh的博客 2447

拉曼光谱入门:7.拉曼光谱仪光学系统结构详解

本文系统拆解了拉曼光谱仪从激光器输出经聚焦照明、二向色镜/陷波滤光片组滤除瑞丽散射、衍射光栅色散至CCD探测的完整光路,阐述了各光学模块在微弱非弹性散射信号提取、杂散光抑制及高分辨光谱成像中的工程原理与技术参数要求。

qq_53529450的博客 223

【目标跟踪】基于Kalman滤波实现无人机运动轨迹跟踪附matlab代码

1 简介 在近代控制中,需要对某一特定的运动目标进行跟踪监测,并需要对其下一时间的运动位置,运动方向,速度等信息进行预先估算,才能达到对目标的即时控制.本文简要讨论了用卡尔曼滤波算法对单个目标航迹进行预测,并借助于Matlab仿真工具,对实验的效果进行评估. 2 部分代码 clc; close all; %initial state xo=25; vox=2; %Observations **** % X-Direction Calcula

qq_59747472的博客 4731

Android App开发超实用实例 | OpenCV在Android手机实现在图像上添加文本

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,它可以运行在Linux、Windows、Android和Mac OS等操作系统上。OpenCV原本由一系列 C 函数和少量 C++ 类构成,同时提供了Python等其他语言的接口,它实现了图像处理和计算机视觉方面的很多通用算法。下面这个实例演示了使用OpenCV在Android手机实现在图像上绘制文本。本文提供的OpenCV实例使用Java语言编写,并且运行在Android手机上。

不断学习,不断进步,提高自己 7065

用AI科研绘图全新升级!借助谷歌新发布模型Nano Banana pro实测一键绘制机制图与技术路线图,直接告别文字乱码与低画质

之前有同仁反馈,用Nano Banana画科研插图的时候,要么文字部分容易乱码,要么抓不住关键内容,画出来的效果反复修改后,还是达不到理想的效果。终于在Gemini 3发布没几天,万众期待的大香蕉模型也成功升级到了Pro版本,官方名称叫“Gemini 3 Pro Image”,实际上也就是我们说的Nano Banana 2。这次的Nano Banana Pro模型,不仅可以直出4K高清图,还能自定义比例,推理能力和中文文字的稳定性也得到了提升。

智能AI让学术科研更容易 1887

编译使用opencv库的android程序

编译使用opencv库的android程序上一篇介绍了交叉编译opencv为适合android使用的库,现在需要编写测试程序,使用opencv进行处理。由于对cmake还不熟悉,直接使用mk文件来编写(其实mk文件也不是很熟。~.~)关于Android.mk和Application.mk的说明请参考链接: http://developer.android.com/intl/zh-cn/ndk/gu

brightming的专栏 1725

YOLOv11 模型剪枝实战:深入解析通道剪枝与层剪枝的策略与实现(含环境配置、微调技巧与部署测试)

YOLOv11模型剪枝技术通过移除冗余参数和结构来压缩模型,主要包括通道剪枝和层剪枝两种方法。通道剪枝通过评估批量归一化层的缩放因子γ确定通道重要性,移除不重要的特征通道;层剪枝则直接删除整个网络层或模块。剪枝流程包括评估重要性、移除冗余成分、微调模型和评估性能四个步骤。该技术可显著降低模型计算量和参数量,适合在资源受限设备上部署高性能目标检测模型。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1960

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android中C/C++程序和OpenCV方法的调用

Android中C/C++程序和OpenCV方法的调用 1 Android中调用C/C++程序 通过C++写的算法,需要移植到Android移动端。最新版本的Android studio(以下简称AS)提供了通过Java Native Interface(JNI)和CMakeLists.txt实现移植的方法。以下以移植C++写的加法程序为例介绍具体的步骤。 新建Native C++工程 打开An...

cvbrain的博客 3206

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

BeeWare 开发安卓程序 OpenCV,文件读写,基于安卓14

尝试使用 Android Studio 开发小程序,因不熟悉新版本转而使用 Python 和 BeeWare 框架。开发过程中遇到文档缺失、功能实现困难、与原生 Android 交互复杂等问题,虽然实现了开发所需要的功能,还是认为应优先考虑 Android 原生开发。

weixin_42601990的博客 1959

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

android opencv程序大,我如何加快我的Android-openCV应用程序?

But the calculation is still way too slow, so I need to find anothermethod to reduce input video stream qualllity.这个问题的真正答案更接近于“你没有太多可以做的!”比别的东西我们必须承认,手机没有像任何桌面一样强大的处理能力。世界上大多数Android手机仍然使用以前版本的系统,最重要...

weixin_29338423的博客 522

我如何在Android操作系统上构建自己的OpenCV程序

在 Android 操作系统上构建自己的 OpenCV 程序,你需要做以下步骤: 安装 Android Studio,这是 Google 提供的 Android 开发工具。 在 Android Studio 中创建一个新的 Android 项目。 在项目中导入 OpenCV 库。可以使用以下方法之一导入库: 从 Android SDK Manager 中安装 OpenCV 作为一个可选...

weixin_42607969的博客 236

Android学习——在Android中使用OpenCV的第一个程序

在Android中使用OpenCV的第一个程序:原图、灰度图、Canny边缘检测、Hist 直方图计算、Sobel 边缘检测、SEPIA(色调变换)为每一个数组元素执行一个矩阵变换、ZOOM 放大镜、PIXELIZE 像素化、POSTERIZE 多色调分色印

小熊不去实验室 2万+

我如何在Android操作系统上构建自己的OpenCV程序(程序中需要使用到OpenCV的扩展模块)...

在 Android 上构建自己的 OpenCV 程序(包括使用 OpenCV 的扩展模块),可以按照以下步骤进行: 准备工作:安装 Android Studio,并配置好 NDK 和 CMake。 下载 OpenCV 安装包:从官网或者 GitHub 下载 OpenCV 安装包,并解压到本地。 在 Android Studio 中新建一个项目,并把 OpenCV 库添加到项目中。 编写 O...

weixin_35757191的博客 216

android opencv 相机标定程序,《学习opencv3.0》第18章相机标定程序18.1详解

// Example 18-1. Reading a chessboard’s width and height, reading and collecting// the requested number of views, and calibrating the camera#include #include using std::vector;using std::cout;using st...

weixin_36070797的博客 216

android opencv程序大,android 开发之opencv的使用

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?众所周知,opencv是个强大的开源的图像处理库,要想完成term project,缺它不可,所以找了个时间,简单玩了一下Group member郑俊,何轩利,刘小飞,段曹辉android studio配置opencv运行OpenCV-3.1.0-android-sdk中自带的例子自己动手写的opencv小例子(将拍摄的...

weixin_30289299的博客 288

android opencv人脸检测程序

今天用Android 纯Java opencv测试了一下人脸检测速度,首先搭建opencvAndroid开发环境见  http://jingyan.baidu.com/article/948f592448183bd80ff5f9d1.html 搭好环境开始简单编程,尽管opencv在Android上检测速度确实有待提高还是贴上源码(本人于小米手机测试OK  三星手机貌似有点问题) Ma

liu_xiao_cheng的专栏 1025

创建的空 OpenCV 安卓应用程序以支持摄像头

最简单的以 OpenCV 为中心的应用程序必须执行 OpenCV 初始化,创建一个视图来显示来自摄像头的预览,并实现。在本节中,我们将扩展上一节中创建的空 OpenCV 应用程序以支持摄像头。我们将获取摄像头帧并将其显示在屏幕上。接口允许您在从相机抓取帧之后和在屏幕上渲染之前添加一些处理步骤。此对象没有自己的状态,并且其在回调之外的行为不可预测!这是一个回调函数,在从相机检索帧时调用。现在您可以在设备上运行代码来检查它。函数返回将在屏幕上绘制的 RGBA 帧。回调将相机中的帧作为类对象传递给我们的类。

ljygood2的博客 883

android studio eigen,Android Studio 导入OpenCV及Eigen及JNI使用

操作系统:MAC OS X 10.11.5Android Studio 版本:2.1.2OpenCV for Android 版本:2.4.9Android NDK 版本:r11c其实呢,这个过程不是很复杂,大概需要做以下那么几件事情下载并配置好OpenCV for Android 、Eigen和NDK写好cpp程序,Android.mk,Application.mk以及Java程序对cpp程序用...

weixin_39990558的博客 772
上一篇: 如何在android上运行c程序
下一篇: java调用(c+opencv)的DLL
zsoftdevelop
博客等级 码龄18年 12粉丝 9原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值