Android与OpenCV2.4.4(2013最新)搭建图像处理框架

合集下载

OpenCV 2.4.4安装与配置

OpenCV 2.4.4安装与配置

OpenCV 2.4.4 安装与配置步骤一:安装OpenCV/projects/opencvlibrary/files/opencv-win/2.4.4/1.从以上地址下载OpenCV2.4.4,执行exe文件,将文件安装到所需目录。

2.建立环境变量并添加到系统路径(以将文件安装在D:\opencv为例):i) 右键点击桌面的计算机图标,选择“属性”,跳出如下窗口:ii) 点击“高级系统设置”,跳出如下窗口:iii) 点击“高级”选项卡下的“环境变量”,跳出如下窗口:iv) 点击“系统变量”下的“新建”,“变量名”输入OPENCV_BUILD,“变量值”输入D:\opencv\build(如果OpenCV解压在别的目录,请输入该目录路径。

比如,如果在C盘ProgramFiles文件夹建立了名为OpenCV的文件夹,并在其中解压,那么输入的目录就为C:\ProgramFiles\OpenCV\opencv\build,总之目录一直到build文件夹),点击“确定”。

v) 双击“用户变量”中的PATH,在跳出的窗口中输入变量值为%OPENCV_BUILD%\x86\vc10\bin (如果电脑是64位系统的,请把“x86”改为“x64”;并请确保使用的是VS 2010,因为vc10文件夹针对的是VS 2010)。

步骤二:在VS2010中配置OpenCV1. 打开VS 2010,新建一个项目(Win32控制台或MFC 都可以)。

2. 建立Debug 属性表。

i) 点击“视图”菜单中的“属性管理器”。

ii) 右键“Debug|Win32”,选中“添加新项目属性表”。

iii) 输入名称为OpenCVProjectDebug。

iv) 建立后双击属性管理器中的OpenCVProjectDebug,对其进行编辑。

v) 选择“通用属性”下的“VC++目录”,点击“包含目录”,然后点下拉条,单击“<编辑…>”。

如何使用Android的图像识别和人脸识别功能进行开发(八)

如何使用Android的图像识别和人脸识别功能进行开发(八)

现在的移动智能设备已经具备了强大的图像识别和人脸识别功能,这为开发者们带来了更多的可能性。

特别是在Android平台上,利用Android的图像识别和人脸识别功能进行开发已经变得更加简单和便捷。

本文将探讨如何充分利用Android的这些功能进行应用开发。

一、图像识别功能的开发首先,我们来讨论如何使用Android的图像识别功能进行开发。

Android提供了一系列的API和工具,可以帮助我们高效地实现图像识别功能。

下面是一些关键的步骤和技术。

1. 资源准备在进行图像识别之前,我们首先需要收集大量的图像数据作为训练集。

这些图像数据可以分为不同的类别,如动物、植物、物体等。

我们可以通过网络爬取和用户上传等方式来获取这些数据。

同时,还需要对这些数据进行预处理,如图像剪裁、大小调整、灰度化等。

2. 特征提取特征提取是图像识别的关键环节,它可以将图像的关键特征提取出来,从而进行分类和识别。

在Android中,我们可以使用OpenCV等开源库来实现特征提取的功能。

这些库提供了各种图像处理和计算机视觉算法,如边缘检测、颜色直方图等。

我们可以根据具体的需求选择适合的算法进行特征提取。

3. 模型训练与优化在进行图像识别之前,我们需要先训练一个模型。

模型是由大量的样本数据训练得到的,它可以根据输入的图像数据进行分类和识别。

在Android中,我们可以使用机器学习框架TensorFlow Lite来进行模型的训练和优化。

TensorFlow Lite提供了简洁高效的API和工具,可以帮助我们快速搭建和优化模型。

4. 应用集成当模型训练完成后,我们就可以将其应用到Android应用程序中了。

Android提供了一系列的图像处理和识别API,如Camera API、ImageReader API等,可以帮助我们获取摄像头数据、读取图像等。

我们可以将这些API与我们训练好的模型进行集成,从而实现图像识别的功能。

二、人脸识别功能的开发除了图像识别功能,Android平台还为开发者提供了强大的人脸识别功能。

Open CV4 Android----一点儿关于图像的基础

Open CV4 Android----一点儿关于图像的基础

Open CV4 Android----一点儿关于图像的基础
1.OpenCV矩阵数据类型
CV_<bit_depth>(S|U|F)C<number_of_channels>
S = 符号整型U = 无符号整型 F = 浮点型
E.g.:
CV_8UC1 是指一个8位无符号整型单通道矩阵,
CV_32FC2是指一个32位浮点型双通道矩阵
所以看到以下三种形式,那么其实所代表就是灰度,RGB,RGBA类型
'CV_8UC1' (gray-scal e), 'CV_8UC3' (RGB) or 'CV_8UC4' (RGBA).
2.关于颜色
以下摘抄自bl /and_he/archive/2012/12/22/ARGB.html
A:透明度
R:红色
G:绿
B:蓝
Bitmap.Config ARGB_4444:每个像素占四位,即A=4,R=4,G=4,B=4,那么一个像素点占4+4+4+4=16位
Bitmap.Config ARGB_8888:每个像素占四位,即A=8,R=8,G=8,B=8,那么一个像素点占8+8+8+8=32位
Bitmap.Config RGB_565:每个像素占四位,即R=5,G=6,B=5,没有透明度,那么一个像素点占5+6+5=16位
Bitmap.Config ALPHA_8:每个像素占四位,只有透明度,没有颜色。

来源:清源教育。

基于OpenCV的图像处理

基于OpenCV的图像处理

基于OpenCV的图像处理Image Processing Based On OpenCV摘要:OpenCV是近年来最受欢迎的计算机视觉应用库。

在其基础上编写图像处理代码效率得到有效提高。

本文旨在对OpenCV进行一个快速全面简介,通过介绍其数据结构、HighGUI库,图像处理函数使读者能快速形成对OpenCV印象。

文章详细介绍了2.4.4版本在VS2010中的安装测试说明。

读者能够在此基础上架构自己代码。

文章最后通过自适应阈值分割实例来介绍OpenCV的具体应用。

关键词:OpenCV VS2010 图像处理KeyWords: OpenCV VS2010 image processingAbstract: OpenCV is one of the most popular computer vision library in recent years. Prepared on the basis of its image processing code efficiency improved effectively. This paper aims to OpenCV for a rapid and comprehensive introduction, through the presentation of its data structures, HighGUI libraries, image processing functions so that readers can quickly form on the OpenCV impression. Finally, version 2.4.4 introduced in detail the installation in VS2010 test instructions. On this basis, the reader can structure their own code. Finally, the paper uses adaptive thresholding examples to introduce specific application of OpenCV.OpenCV诞生于Inter研究中心,采用C/C++编写,包含覆盖计算机视觉众多应用领域的五百多个函数。

android opencv用法

android opencv用法

android opencv用法Android OpenCV用法。

OpenCV是一个开源的计算机视觉库,它提供了丰富的图像处理和计算机视觉算法。

在Android平台上,OpenCV可以帮助开发者实现图像处理、目标识别、人脸检测等功能。

本文将介绍在Android应用中使用OpenCV的基本用法。

首先,要在Android项目中集成OpenCV库。

可以通过将OpenCV库文件添加到项目中,或者使用Gradle依赖的方式引入OpenCV库。

接下来,在MainActivity中初始化OpenCV库,并在需要使用OpenCV的地方引入相关的类和方法。

在Android应用中使用OpenCV,可以实现一些常见的图像处理功能,比如灰度化、边缘检测、图像滤波等。

下面是一个简单的例子,演示了如何在Android应用中使用OpenCV进行图像灰度化处理:java.import org.opencv.android.BaseLoaderCallback;import org.opencv.android.LoaderCallbackInterface;import org.opencv.android.OpenCVLoader;import org.opencv.core.Core;import org.opencv.core.Mat;importorg.opencv.android.CameraBridgeViewBase.CvCameraViewFrame;importorg.opencv.android.CameraBridgeViewBase.CvCameraViewListene r2;public class MainActivity extends AppCompatActivity implements CvCameraViewListener2 {。

private CameraBridgeViewBase mOpenCvCameraView;private BaseLoaderCallback mLoaderCallback = newBaseLoaderCallback(this) {。

基于OpenCV在移动端的图像处理技术

基于OpenCV在移动端的图像处理技术

基于OpenCV在移动端的图像处理技术作者:刘贤辉来源:《电子技术与软件工程》2017年第09期摘要OpenCV是一个基于(开源)发行的跨平台计算机视觉库,本文主要介绍了opencv 的特点、组件结构以及在移动端开发环境Android studio中的环境搭建流程和相关的图像的边缘检测和直线检测的应用。

经过在移动端的开发应用,相信opencv技术在移动端的图像处理领域能有很大的作为。

【关键词】OpenCV视觉库图像处理 Android平台Opencv全称:Open Source Computer Vision Library,是一个可以移植到其他开发工具中的一个跨平台的图像处理视觉库,它由C++语言编写,主要有C++、C语言接口,为了能在手机等移动端更方便的进行图像处理,我们利用其JAVA接口将opencv视觉库添加到Android的开发工具中,实现了在移动端的图像处理功能。

1 opencv的特点(1)跨平台,有很好的移植性。

Opencv由跨平台的中高层API构成,可以运行在Linux、Windows和Mac OS操作系统上,该库有C++、C、Java接口,我们运用Java接口就可以将Opencv视觉库移植到Android studio开发工具中。

(2)免费、开源,与耗费很高的商业化工具(比如 MATLAB+Simulink)有很大的区别。

(3)高效、快速、使用方便。

Opencv视觉库具有强大的图像运算功能,API中有比较完善的处理函数,能够明显提高开发效率。

2 Opencv在Android studio中的环境搭建流程2.1 安装Java JDK需要完成JDK的下载、安装和环境配置的流程,安装完成后,要运行资源管理器输入Java Version来验证是否安装成功,若显示Java版本信息,则安装成功。

2.2 下载Android Studio开发工具并安装在Android Studio的中文社区下载最新的Android Studio开发工具(要包含Java SDK),并运行Android Studio,根据安装提示进行安装,并运行开发工具。

数字图像处理课程设计opencv

数字图像处理课程设计opencv

数字图像处理课程设计opencv一、教学目标本课程的教学目标是使学生掌握数字图像处理的基本理论、方法和OpenCV编程技能。

通过本课程的学习,学生应能理解数字图像处理的基本概念,掌握常用的图像处理算法,并能够运用OpenCV库进行实际的图像处理操作。

具体来说,知识目标包括:1.理解数字图像处理的基本概念和原理。

2.掌握数字图像处理的基本算法和常用技术。

3.熟悉OpenCV库的基本结构和功能。

技能目标包括:1.能够运用OpenCV库进行数字图像处理的基本操作。

2.能够编写简单的数字图像处理程序。

3.能够分析和解决数字图像处理实际问题。

情感态度价值观目标包括:1.培养对数字图像处理的兴趣和热情。

2.培养学生的创新意识和实践能力。

3.培养学生的团队合作精神和沟通交流能力。

二、教学内容本课程的教学内容主要包括数字图像处理的基本理论、方法和OpenCV编程实践。

教学大纲如下:1.数字图像处理概述1.1 数字图像处理的基本概念1.2 数字图像处理的应用领域2.图像处理基本算法2.1 图像滤波2.2 图像增强2.3 图像边缘检测3.OpenCV库的使用3.1 OpenCV库的基本结构3.2 OpenCV库的基本功能4.图像处理实例分析4.1 图像去噪实例4.2 图像增强实例4.3 图像边缘检测实例三、教学方法本课程采用多种教学方法相结合的方式,包括讲授法、讨论法、案例分析法和实验法等。

1.讲授法:通过教师的讲解,使学生掌握数字图像处理的基本理论和方法。

2.讨论法:通过小组讨论,激发学生的思考,培养学生的创新意识和实践能力。

3.案例分析法:通过分析实际案例,使学生能够将理论知识应用于实际问题。

4.实验法:通过实验操作,使学生掌握OpenCV库的基本功能,并能够编写实际的图像处理程序。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。

1.教材:选用《数字图像处理》(李航著)作为主要教材,辅助以相关参考书籍。

eclipse+javaCV+openCV2.4.4配置方法

eclipse+javaCV+openCV2.4.4配置方法

1、安装OpenCV2.4.4,注意安装的路径中不要出现中文;添加系统环境变量PATH:C:\Program Files\OpenCV-2.4.4\opencv\build\x86\vc10\bin;2、在VS2010下验证是否安装正确步骤1:新建一个VS控制台项目,主函数代码改为如下:// opencv2_4_4test.cpp : 定义控制台应用程序的入口点。

//#include "stdafx.h"#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#pragma comment( lib, "opencv_core244d.lib ")#pragma comment( lib, "opencv_highgui244d.lib" )using namespace cv;int _tmain(int argc, _TCHAR* argv[]){namedWindow( "show_image", WINDOW_AUTOSIZE );Mat src = imread( "opencv.png" );while(1){imshow( "show_image", src );char c = waitKey(0);if( c == 27 )return 0;}return 0;}步骤2:打开VS菜单栏—>视图—>属性管理器,使属性管理器一栏显示出来(因为vs2010不像vs2008,在VS菜单栏—>工具—>选项—>项目解决方案—>VC++目录下可以一次性增加库目录,所以要对一个工程增加过一次库目录后对以后的工程无需再增添则需采用这种方法)。

android java opencv facedetectyn 用法

android java opencv facedetectyn 用法

android java opencv facedetectyn用法在Android平台上使用OpenCV库进行人脸识别是一项涉及多个步骤的任务。

以下是一个关于如何使用OpenCV的Java接口进行人脸检测的基本指南。

1. 导入OpenCV库首先,你需要在你的Android项目中导入OpenCV库。

这通常通过在你的build.gradle 文件中添加依赖来完成。

确保你已经下载并安装了OpenCV的Android SDK。

2. 初始化OpenCV在你的应用程序中,你需要初始化OpenCV库。

这通常在主活动(MainActivity)的onCreate方法中完成。

你可以调用OpenCVLoader.initDebug()来初始化OpenCV库。

3. 加载人脸检测器OpenCV提供了多种人脸检测方法,其中最常见的是Haar特征级联分类器。

你需要加载一个预训练的XML文件,该文件包含了用于人脸检测的特征和参数。

javaCascadeClassifier faceDetector = new CascadeClassifier(getContext().getResources().getIdentifier("lbpcascade_frontal face", "raw", getContext().getPackageName()));if (faceDetector.empty()) {Log.e(TAG, "Failed to load cascade classifier");// 处理加载失败的情况}4. 处理图像接下来,你需要从摄像头或图像库获取图像,并将其转换为OpenCV可以处理的格式(通常是Mat对象)。

5. 进行人脸检测使用加载的人脸检测器在图像上检测人脸。

这通常通过调用detectMultiScale方法完成。

javaMatOfRect faceDetections = new MatOfRect();faceDetector.detectMultiScale(grayImage, faceDetections);其中grayImage是一个灰度图像,因为Haar特征级联分类器通常在灰度图像上运行得更快。

VC_2013下安装OpenCV2.4.10

VC_2013下安装OpenCV2.4.10

VC 2013 下安装 OpenCV2.4.10说明: 随便打开一个项目,然后点击菜单中的 视图->属性管理器(VS2013 好像是 视图->其他窗口->属性管理器), 打开属性管理器,点击项目前的箭头,展开项目,找到 debug 或者 release 下面的 er 这个属性, 双击会出现一个跟在项目上右键属性一样的窗口,修改里面的“VC++目录”就是修改了全局的,题注应该知道咋改, 就是把 opencv 的 include 和 lib 目录加进去,重新打开 VS 或者新建项目也会继承这里的 include 目录和 lib 目录。

1. 安装平台:32 位 window7,VS2013; 2. OpenCV 2.4.10 不支持 VC 6.0; 大家好好看看每一部分的注意事项,看懂了再去配置,不然错了,还不知道错在哪里。

特别要注意自己的操作系统的位数以及相应的路径。

一、下载 OpenCV将 OpenCV-2.4.10.exe 解压并放到某个目录下,例如C:\Program Files\OpenCV2410 (本人的解压目录)。

解压后的目录结构如下图。

说明:不管你系统是 32 位还是 64 位,路径目录均选择 X86,因为编译都是使用 32 位编译;如果选用 X64,则程序运行时候会出错。

二、设置环境变量右键单击我的电脑→属性→高级→环境变量。

用户变量设置设置 PATH选中 PATH,单击编辑。

在 PATH 的末尾添加以下路径:C:\ProgramFiles\OpenCV2410\opencv\build\x86\vc10\bin。

说明:1、可根据自己的情况,将其改为你的..\OpenCV2410\opencv\build\x86\vc10\bin 文件夹所在的路径 新建 OpenCV 变量(如果不配置系统变量会丢失 dll 动态库)单击新建,在弹出的对话框中,将变量名和变量值分别设置为 OpenCV 和 C:\ProgramFiles\OpenCV244\opencv\build。

Android开发中的图像处理和计算机视觉技术(一)

Android开发中的图像处理和计算机视觉技术(一)

Android开发中的图像处理和计算机视觉技术在当今移动应用程序开发的领域中,图像处理和计算机视觉技术的应用已经变得越来越重要。

尤其是在Android开发中,这些技术可以帮助开发人员创建出更加丰富和有吸引力的应用程序。

本文将探讨Android开发中的图像处理和计算机视觉技术的应用,并介绍一些常用的处理方法和工具。

一、图像处理技术1. 图像滤镜图像滤镜是一种广泛应用于Android应用程序的图像处理技术。

它通过改变图像的颜色、对比度、亮度等属性来增强图像的美观度和吸引力。

在Android开发中,可以使用一些库,如OpenCV或GPUImage 等库来实现图像滤镜效果。

这些库提供了丰富的滤镜选项,开发人员可以根据自己的需求选择适合的滤镜来改善图像品质。

2. 图像识别和特征提取图像识别和特征提取是计算机视觉技术中的重要组成部分。

它们可以用于识别和分类图像中的对象、人脸、文字等元素。

在Android应用程序中,可以使用Google提供的移动视觉API或TensorFlowLite等工具来实现图像识别和特征提取功能。

开发人员可以训练模型,让应用程序能够识别特定的对象或执行其他视觉任务。

3. 图像压缩和优化在Android应用程序中,图像的大小和质量对用户体验和性能至关重要。

较大的图像文件可能会导致应用程序加载缓慢,而低质量的图像可能会影响用户对应用程序的观感。

因此,图像压缩和优化变得非常重要。

开发人员可以使用一些工具,如TinyPNG或Squoosh等,在保持图像质量的同时减小图像文件的大小。

此外,还可以使用一些算法和技术,如有损压缩和图像缓存等来优化图像加载和显示的性能。

二、计算机视觉技术1. 目标检测和追踪在许多Android应用程序中,目标检测和追踪技术被广泛应用于实现虚拟现实、增强现实和人脸识别等功能。

目标检测和追踪技术可以通过分析图像或视频流来检测并跟踪特定的对象。

开发人员可以使用一些库,如OpenCV或TensorFlow等,来实现这些功能。

最新AndroidCamera框架结构汇总

最新AndroidCamera框架结构汇总

A n d r o i d C a m e r a框架结构Android的Camera架构介绍1.1 Camera概述Android 的 Camera 包含取景器(viewfinder)和拍摄照片的功能。

目前Android发布版的Camera程序虽然功能比较简单,但是其程序的架构分成客户端和服务器两个部分,它们建立在Android的进程间通讯Binder的结构上。

以开源的Android为例,Camera的代码主要在以下的目录中:Camera的JAVA程序的路径:packages/apps/Camera/src/com/android/camera/在其中Camera.java是主要实现的文件frameworks/base/core/java/android/hardware/Camera.java这个类是和JNI中定义的类是一个,有些方法通过JNI的方式调用本地代码得到,有些方法自己实现。

Camera的JAVA本地调用部分(JNI):frameworks/base/core/jni/android_hardware_Camera.cpp这部分内容编译成为目标是libandroid_runtime.so。

主要的头文件在以下的目录中:frameworks/base/include/ui/Camera底层库在以下的目录中:frameworks/base/libs/ui/这部分的内容被编译成库libui.so。

Camera服务部分:frameworks/base/camera/libcameraservice/这部分内容被编译成库libcameraservice.so。

为了实现一个具体功能的Camera,在最底层还需要一个硬件相关的Camer 库(例如通过调用video for linux驱动程序和Jpeg编码程序实现)。

这个库将被Camera的服务库libcameraservice.so调用。

1.2 Camera的接口与架构Camera的整体框架图Camera的各个库之间的结构可以用下图的表示:在Camera系统的各个库中,libui.so位于核心的位置,它对上层的提供的接口主要是Camera类,类libandroid_runtime.so通过调用Camera类提供对JAVA的接口,并且实现了android.hardware.camera类。

opencv4android 简书

opencv4android 简书

opencv4android 简书OpenCV是一个开源的计算机视觉库,提供了各种图像处理和计算机视觉算法的实现。

它可以运行在多个平台上,其中包括Android。

OpenCV for Android是为Android平台上的图像处理和计算机视觉应用提供的一个库。

OpenCV for Android提供了完整的图像处理和计算机视觉的功能,包括图像读取、转换、滤波、特征检测、目标跟踪和图像识别等。

通过使用OpenCV库,开发者可以轻松地实现各种图像处理和计算机视觉算法,从简单的边缘检测、颜色过滤到复杂的人脸识别和虚拟现实等应用。

在Android平台上使用OpenCV for Android非常简单。

首先,你需要下载OpenCV for Android库,并将其导入到Android Studio项目中。

然后,在项目的gradle文件中添加OpenCV库的依赖。

接下来,你可以在你的代码中使用OpenCV提供的功能。

对于一些常见的图像处理操作,可以使用OpenCV的函数来实现。

例如,你可以使用OpenCV的`Imgproc.cvtColor()`函数将图像从一种颜色空间转换为另一种颜色空间,例如将彩色图像转换为灰度图像。

你还可以使用OpenCV的`Imgproc.GaussianBlur()`函数对图像进行高斯模糊处理,以减少图像中的噪声。

还有其他许多函数可供你使用,例如`Imgproc.Canny()`函数用于边缘检测,`Imgproc.HoughCircles()`函数用于圆检测,`Imgproc.matchTemplate()`函数用于模板匹配等等。

除了图像处理之外,OpenCV for Android还提供了计算机视觉算法的实现。

例如,你可以使用OpenCV的`objdetect.CascadeClassifier`类来实现人脸检测。

你可以加载一个已经训练好的人脸检测器,并将其应用于相机捕获的帧中,从而实现实时的人脸检测。

基于OpenCV的机器视觉图像处理技术实现

基于OpenCV的机器视觉图像处理技术实现

基于OpenCV的机器视觉图像处理技术实现机器视觉是计算机科学领域中涉及图像处理、模式识别以及计算机视觉的一个探究领域。

近年来,随着计算机技术的快速进步,机器视觉在工业、医疗、军事等领域得到了广泛应用。

在机器视觉中,图像处理是一个基础而重要的环节,它能够对图像进行预处理、分析和处理,从而为后续的模式识别和计算机视觉任务提供有效的基础。

在图像处理领域,OpenCV是一个分外流行和强大的开源库。

它提供了丰富的图像处理功能,包括图像的读取、显示、保存,以及各种滤波器、边缘检测、图像增强等算法。

本文将介绍基于OpenCV的机器视觉图像处理技术的实现方法和应用案例。

一、图像预处理图像预处理是图像处理中的第一步,它主要用于提取图像中的有用信息、消除图像中的噪声、调整图像的亮度和对比度等。

在OpenCV中,可以使用不同的方法进行图像的预处理,如灰度化、二值化、直方图均衡化等。

1. 灰度化灰度化是将彩色图像转换为灰度图像的过程。

在机器视觉中,由于灰度图像只有一个通道,处理起来更加高效。

在OpenCV中,可以使用cvtColor函数将彩色图像转换为灰度图像。

2. 二值化二值化是将灰度图像转化为二值图像的过程。

将图像中的每个像素值与一个阈值进行比较,大于阈值的像素设置为255,小于阈值的像素设置为0。

在OpenCV中,可以使用threshold 函数实现图像的二值化。

3. 直方图均衡化直方图均衡化是一种调整图像亮度和对比度的方法。

它通过重新分布图像的像素值来增强图像的细节。

在OpenCV中,可以使用equalizeHist函数实现直方图均衡化。

二、特征提取特征提取是机器视觉中的一个重要环节,它通过从图像中提取有用的特征信息,为后续的模式识别和计算机视觉任务提供基础。

在OpenCV中,可以使用各种特征提取算法,如HOG、SIFT和SURF等。

1. HOG特征提取HOG(Histogram of Oriented Gradients)是一种用于目标检测和行人识别的特征提取算法。

OpenCV4Android开发环境搭建

OpenCV4Android开发环境搭建

开发环境:windows+ADT Bundle+CDT+OpenCV-2.4.4-android-sdk一、OpenCV2.4简介OpenCV近年来发展迅猛,随着Android智能终端的发展,越来越多的传统科研平台都转向Android移动终端。

记得2010年人们还不大知道Android,当时第一次用OpenCV还是用的1.0.2版本在VC6.0上。

早期的OpenCV只提供C语言接口,你要申请个矩阵还得CvMat*mat = cvCreateMat(...)写一大串,这样做是为了保证程序的运行效率,带来的不便是要开发者手动管理内存分配,稍有不慎内存泄漏那是常有的事。

在OpenCV的发展历程上,第一次飞跃是2009年10月1日发布的2.0版本,该版本支持C++接口了,是直接从1.2版本跳到2.0。

不久又推出了2.1,自此后想要移植OpenCV至嵌入式系统,在编译时必须借助CMake工具,而以往的不用。

第二次飞跃是在2010年6月发布的2.3、2.3.1版本,除提供C++接口向下兼容C接口外,新增了Java接口,且是对准Android平台。

更重要的是以前官方不支持ndk-build,这次终于一统JNI接口调用方式,方便在Android上开发使用。

2012年4月2日发布了2.4版本,支持windows/Linux、Mac/Android/IOS四大系统。

最新的版本是2013年11月11日发布的2.7版本。

我电脑上配置的是2.4.4版本。

从2.4之后,为了和Android的系统架构保持同步,准确说是吸收Android框架层的优点,引入了OpenCV Manager的概念,其本质就是一个Service,用来管理OpenCV动态链接库。

它工作在APP和OpenCV的动态链接库之间。

OpenCV Manager的结构就是模仿Android的Binder机制。

其架构图如下:APP在运行时会首先检查OpenCV Manager存在不,如果不存在则会提示安装。

OpenCV4Android中NDK开发(一)

OpenCV4Android中NDK开发(一)

OpenCV4Android中NDK开发(⼀)前⾔以前的⽂章中《OpenCV简介与Android SDK环境》列出过OpenCV4Android的开发,不过当时是⽤的Java实现,做了⼀些Demo后慢慢发现,在图像处理中⽤JAVA调OpenCV的开发处理速度是个瓶颈,所以才激起了学习NDK开发的想法,具体NDK开发的配置可以看我前⾯的⽂章《Android NDK编程(⼀)---NDK介绍及环境搭建》,本章主要说后⾯的OpenCV在Android NDK开发的环境搭建。

准备⼯作开发环境Android Studio 3.3.2NDK 19.2.5345600OpenCV for Android 4.1.0NDK的搭建详见《Android NDK编程(⼀)---NDK介绍及环境搭建》OpenCV下载及准备下载地址:https:///releases/找到最新版本4.1.0的下载地址,点击Android进⼊下载下载完后就是我们下图红框中的ZIP⽂件,然后我们解压⼀下后即⽣成了OpenCV-android-sdk 的⽂件夹(下图蓝框)OpenCV4Android项⽬配置1.创建项⽬我们打开Android Studio新建⼀个项⽬,选择Native C++将程序名称改为OpenCVDemoC++Stand选择为C++11点击Finish后我们完成了项⽬的创建2.修改build.gradle⽂件双击build.gradle⽂件修改要我们要⽀持的CPU架构下调⽤OpenCV4Android中的so动态库⽤于打包进APK,下图中红框内的路径就是我们上⾯下载的OpenCV4.1.0中的动态库路径我们看⼀下那个路径完整的build.gradle代码apply plugin: 'com.android.application'android {compileSdkVersion 28defaultConfig {applicationId "dem.vac.opencvdemo"minSdkVersion 14targetSdkVersion 28versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"externalNativeBuild {cmake {cppFlags "-std=c++11"//我们的APP要⽀持的CPU架构abiFilters'x86','armeabi-v7a'}}}//加上sourceSets{main{//当前这个⽬录下的库⽂件会被调⽤并且被打包进apk中jniLibs.srcDirs = ['D:/PersonalStudio/OpenCV-android-sdk/sdk/native/libs']}}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' }}externalNativeBuild {cmake {path "src/main/cpp/CMakeLists.txt"}}}dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'com.android.support:appcompat-v7:28.0.0'implementation 'com.android.support.constraint:constraint-layout:1.1.3'testImplementation 'junit:junit:4.12'androidTestImplementation 'com.android.support.test:runner:1.0.2'androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'}3.修改CMakeLists.txt⽂件下图中标红框的地⽅就是我在原来的CMakeLists.txt中修改的地⽅完整的CMakeList.txt代码# For more information about using CMake with Android Studio, read the# documentation: https:///studio/projects/add-native-code.html# Sets the minimum version of CMake required to build the native library.cmake_minimum_required(VERSION 3.4.1)#该变量为真时会创建完整版本的Makefileset(CMAKE_VERBOSE_MAKEFILE on)#定义变量ocvlibs使后⾯的命令可以使⽤定位具体的库⽂件set(opencvlibs "D:/PersonalStudio/OpenCV-android-sdk/sdk/native/libs")#调⽤头⽂件的具体路径include_directories(D:/PersonalStudio/OpenCV-android-sdk/sdk/native/jni/include)#增加我们的动态库add_library(libopencv_java4 SHARED IMPORTED)#建⽴链接set_target_properties(libopencv_java4 PROPERTIES IMPORTED_LOCATION"${opencvlibs}/${ANDROID_ABI}/libopencv_java4.so")# Creates and names a library, sets it as either STATIC# or SHARED, and provides the relative paths to its source code.# You can define multiple libraries, and CMake builds them for you.# Gradle automatically packages shared libraries with your APK.add_library( # Sets the name of the library.native-lib# Sets the library as a shared library.SHARED# Provides a relative path to your source file(s).native-lib.cpp)# Searches for a specified prebuilt library and stores the path as a# variable. Because CMake includes system libraries in the search path by# default, you only need to specify the name of the public NDK library# you want to add. CMake verifies that the library exists before# completing its build.find_library( # Sets the name of the path variable.log-lib# Specifies the name of the NDK library that# you want CMake to locate.log)# Specifies libraries CMake should link to your target library. You# can link multiple libraries, such as libraries you define in this# build script, prebuilt third-party libraries, or system libraries.target_link_libraries( # Specifies the target library.native-lib libopencv_java4# Links the target library to the log library# included in the NDK.${log-lib})划重点修改完后我们需要点击选项上的Build-Refresh Linked C++ Projects完成后我们展开native-lib下⾯的includes后⾥⾯有个opencv2已经添加进来了,如下图:上⾯我们的Android Studio通过NDK配置OpenCV已经完下了,下⾯开始我就可以进⾏代码的编写了。

Android+OpenCv4实现边缘检测及轮廓绘制出图像最大边缘

Android+OpenCv4实现边缘检测及轮廓绘制出图像最大边缘

Android+OpenCv4实现边缘检测及轮廓绘制出图像最⼤边缘实现步骤:图像灰度化边缘检测根据Canny检测得出来的Mat寻找轮廓算出最⼤轮廓周长or⾯积根据获取到的最⼤轮廓下标进⾏轮廓绘制画出最⼤矩形,并返回RectCanny边缘检测基于Canny算法的边缘检测主要有5个步骤,依次是⾼斯滤波、像素梯度计算、⾮极⼤值像素梯度抑制、滞后阈值处理和孤⽴弱边缘抑制。

Canny在有噪声的情况下表现好不好,取决于前⾯的降噪过程,可以⼿动做⾼斯处理提⾼识别率。

/**image 输⼊图像,必须是CV_8U的单通道或者三通道图像。

edges 输出图像,与输⼊图像具有相同尺⼨的单通道图像,且数据类型为CV_8U。

threshold1 第⼀个滞后阈值。

threshold2 第⼆个滞后阈值。

apertureSize Sobel算⼦的直径。

L2gradient 计算图像梯度幅值⽅法的标志。

默认为false**/public static void Canny(Mat image, Mat edges, double threshold1, double threshold2, int apertureSize, boolean L2gradient)使⽤/*** canny算法,边缘检测*/public static Mat canny(Bitmap bitmap) {Mat mSource = new Mat();Utils.bitmapToMat(bitmap, mSource);Mat grayMat = new Mat();Imgproc.cvtColor(mSource,grayMat,Imgproc.COLOR_BGR2GRAY);//转换成灰度图Mat mat = mSource.clone();Imgproc.Canny(mSource, mat, 75, 200);return mat;}获取图像最⼤矩形/*** 返回边缘检测之后的最⼤矩形,并返回** @param cannyMat* Canny之后的mat矩阵* @return*/public Rect findMaxRect(Mat cannyMat) {Mat tmp = mSource.clone();List<MatOfPoint> contours = new ArrayList<MatOfPoint>();Mat hierarchy = new Mat();// 寻找轮廓Imgproc.findContours(cannyMat, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE); int index = 0;double perimeter = 0;// 找出匹配到的最⼤轮廓for (int i = 0; i < contours.size(); i++) {// 最⼤⾯积// double area = Imgproc.contourArea(contours.get(i));//最⼤周长MatOfPoint2f source = new MatOfPoint2f();source.fromList(contours.get(i).toList());double length = Imgproc.arcLength(source,true);if(length>perimeter){perimeter = length;index = i;}}/*** 参数⼀:image,待绘制轮廓的图像。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android与OpenCV2.4.4(2013最新)搭建图像处理平台注意事项一.环境搭建
详细可以参考官方提供的文档:官方介绍
1.首先是Android开发环境搭建:
操作系统:Windows7
开发环境:Eclipse+ADT+AVD+JDK1.6
注意:android-sdk-windows中要含有android3.0 sdk
2.搭建Android NDK和OpenCV2.4.4平台
NDK下载(2013最新版):android-ndk-r8d-windows.zip
OponCV下载:OpenCV-2.4.4-android-sdk.zip
下载完之后,直接解压即可。

注意记住它们存放的位置,如我加压到E 盘目录下。

3.更新Eclispe CDT
要将8.1版的CDT更新到8.0.2版的。

部分代码不兼容最新的CDT8.1。

二.如何运行OpenCV2.4.4中的例子程序。

1.首先打开OpenCV中的"java"工程。

路径为:
E:\OpenCV-2.4.4-android-sdk\sdk\java
2.然后打开OpenCV中的任意一个例子,路径为:
E:\OpenCV-2.4.4-android-sdk\samples\
3.设置项目属性。

a.设置ndk和opencv的路径。

在Eclipse中点"Project"->"properties"->"C/C++ General"->"Paths and Symbols",设置如下图:
[img1.png]
注意,一定要保证与你电脑里ndk和opencv的路径保持完全一致。

b.设置NDK编译路径
在Eclipse中点"Project"->"properties"->"C/C++ Build",在Build command中,填写正确的ndk-built.cmd的路径
[img2.png]
如,我的路径是E:/android-ndk-r8d/ndk-build.cmd
c.设置OpenCV.mk的路径
打开项目jni文件夹下的Android.mk文件,确保OpenCV.mk的位置是正确的,如我的为:
include E:/OpenCV-2.4.4-android-sdk/sdk/native/jni/OpenCV.mk
d.设置OpenCV的java库
正如1中所说,需要先打开E:\OpenCV-2.4.4-android-sdk\sdk\java这个项目,目的是其他基于OpenCV的项目需要调用该项目。

"Project"->"properties"->"Android",将参考项目设置为java即可
然后编译连接即可运行。

三.程序运行所需条件
运行所有用OpenCV开发的android应用,必须事先安装OpenCV Manger.apk。

这个是目前官方的说法。

因为所有基于OpenCV开发的android应用,必须调用OpenCV Manger.apk提供的库。

四.Demo
Canny算子效果图
角点检测效果图.。

相关文档
最新文档