前言 以前的文章中《OpenCV简介与Android SDK环境》列出过OpenCV4Android的开发,不过当时是用的Java实现,做了一些Demo后慢慢发现,在图像处理中用JAVA调OpenCV...准备工作 开发环境 Android Studio 3.3.2 NDK 19.2.5345600 OpenCV for Android 4.1.0 ---- NDK的搭建 详见《Android NDK...编程(一)---NDK介绍及环境搭建》 ---- OpenCV下载及准备 下载地址:https://opencv.org/releases/ 找到最新版本4.1.0的下载地址,点击Android进入下载...调用OpenCV4Android中的so动态库用于打包进APK,下图中红框内的路径就是我们上面下载的OpenCV4.1.0中的动态库路径 ? 我们看一下那个路径 ?...文件 下图中标红框的地方就是我在原来的CMakeLists.txt中修改的地方 ?
OpenCV4Android中创建ORB检测器与描述子的代码: FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB...检测器与描述子 BRISK(Binary Robust Invariant Scalable Keypoint)特征检测与描述子是在2011年由几位作者联合提出的一种新的特征提取算法, OpenCV4Android...在OpenCV4Android中创建AKAZE特征检测器与描述子的代码如下: FeatureDetector detector = FeatureDetector.create(FeatureDetector.AKAZE...OpenCV4Android中feature2d检测器与描述子的使用 基于feature2d中的检测器对象实现对象关键点检测的演示代码: FeatureDetector detector = null;...---- 参考材料 《OpenCV Android 开发实战》(贾志刚 著) 关于《OpenCV Android 开发实战》作者的GitHub项目 笔者基于作者GitHub维护的APP
---- 在Android开发中怎样使用Application类 ---- 自己独立开发项目才发现以前对Application类并不是十分了解,现在开始直接搭建一个新项目的框架才重新踩过这个坑。...Context是维持Android应用的核心功能类,是整个Android系统交互的核心。 ?...Application类在项目开发中的使用 首先在项目目录下一个Java类继承Application类,实现是onCreate()方法。...在控件的构造方法中获取Context或者做其他视图操作 写过Android的同学应该知道自己或者看别人dome都很少或者基本看不到在控件构造函数内进行初始化,获取参数等这些操作吧!...具体原因是在ContextWrapper类的源码中,他有一个attachBaseContext()方法,这个方法会将传入的一个Context参数赋值给mBase对象,之后mBase对象就有值了。
接着上次总结的Application类的实际项目使用Android开发中怎样使用Application类,最近我又发现了一个取巧的使用方法,给想要快速开发的同学分享下心得,也是给大家多提供一个思路吧。...统一全局的Dialog样式,你就可以在这个帮助类中获取App的当前Activity实例来显示Dialog. 2、工具类中用static关键字引入Application实例类的单例对象 这个才是今天我主要想说的...,在import中通过static关键字引入Application实例,工具类和帮助类中的大量方法中就不用大量依赖Context类做传入处理了。...import android.content.Context; import android.content.res.Resources; import com.cq.dome.utils.helper.ResHelper...第二种方法当然在设计模式上有耦合度很高的缺点,导致这些工具类都要依赖App类,但是在Android开发中,这个你可以封装一个BaseApplication的Application的基础类来,让其他的Application
在使用过程中发现OpenCv的v4.2.0和v4.1.2接入后均存在一些bug,所以最后选择了v4.1.0版本。...接入步骤 一、下载OpenCV Sdk 前往OpenCv官网下载对应的Android v4.1.0版本的sdk。 ?...将解压后的OpenCv Sdk目录下的sdk目录里面的java包通过Moudule的方式导入到Studio中。 ? ? ? 3、修改导入opencv的build.gradle ?...修改opencv的build.gradle的对应的compileSdkVersion等信息。只需复制app下的build.gradle文件中的即可。...记住两点: apply plugin: ‘com.android.library’一定要改成library; 去掉applicationId “com.xx.xx” 4、导入so库 在项目app/src
《OpenCV4Android中NDK开发(一)--- OpenCV4.1.0环境搭建》这篇中我们是新建的项目中直接选择了包含C++,本篇主要是介绍怎么在现在的项目加改为使用JNI的方式。...如果没有配置的可以自己新建一个CMakeList.txt,下面是CMakeList.txt的配置,这个配置是直接关联我们的OpenCV库的,取自《OpenCV4Android中NDK开发(一)--- OpenCV4.1.0...在android下的defaultConfig下加入Cmake的配置 externalNativeBuild { cmake {...在android下面加入OpenCV的Lib目录 //加上 sourceSets{ main{ //当前这个目录下的库文件会被调用并且被打包进apk...中 jniLibs.srcDirs = ['D:/PersonalStudio/OpenCV-android-sdk/sdk/native/libs'] }
前言 前面文章《OpenCV4Android中NDK开发(一)--- OpenCV4.1.0环境搭建》自己配置好了NDK的Opencv方法,因为在Android中使用最常见的还是摄像头实时处理,所以最近一直在研究摄像头和...早些的文章《OpenCV简介与Android SDK环境》有介绍过加载OpenCV的模块直接用OpenCV中的摄像头,但是决定使用NDK方式就不想再进行模块导入加上NDK的方式了,在网上找了好久终于找到一篇...从上图中我们看到原作者用到的是opencv3.3,而我现在已经改为最新的OpenCV4.1了,所以我们直接不再采用他的CMakeList文件,把《OpenCV4Android中NDK开发(一)--- OpenCV4.1.0...注:这里上面的框中“*.cpp”原来我写的是“src/main/cpp/*.cpp”,结果各种编译不了,一直报错,后来我直接写的“*.cpp”即可,原因就是我们的CMakeList文件是和这些CPP的文件在同一目录下的...从上面看我找了一下GetIntArrayElements这个方法在native-lib.cpp中 ? 点击进去看原方法参数也都没有问题 ?
Froyo(我们支持的最旧的 Android 版本)上不可用。...中的类,因此在加载 OpenCV 库之前,无法实例化它们。...不具有 Java 的跨平台兼容性:OpenCV 的 C++ 接口可以在 Java 运行时不可用或未安装的平台上使用。...Java 类是在一个文件中定义和实现的,而 C++ 类或函数通常是在头文件(扩展名为.h或.hpp)中定义的,并在源文件(扩展名为.cpp)。...Feature2D类进行特征检测和描述符提取,而 OpenCV 2.x 使用 2 种类,即FeatureDetector和DescriptorExtractor。
其中,Mat类型是OpenCV定义的一个类,其维度不需要像定义一个二维数组变量一样去明确指定,而是会适应你去初始化时所需要的维度。...那么对于特征点,我们知道最起码需要确定他在图像中的位置,进而如果需要使用改进BRIEF去计算其描述子,我们还需知道其方向,等等。...,并存于Mat类变量descriptor中。...在不考虑图像下标imgIdx时,queryIdx与trainIdx构成了一组匹配好的特征点分别在两张图像内的索引,分别是所选中的特征点在所对应的keypoints容器中对应的标号。...进而,使用matcher中的match函数,将存有描述子信息的Mat类变量descriptors_1与descriptors_2进行相似度匹配,并存于matches容器中。
如何解决旋转不变性: 在ORB的方案中,是采用了FAST作为特征点检测算子。...FAST应用的很多了,是出名的快,以防有人不知道,请看这里: 在Sift的方案中,特征点的主方向是由梯度直方图的最大值和次大值所在的bin对应的方向决定的。略嫌耗时。...在ORB的方案中,特征点的主方向是通过矩(moment)计算而来,公式如下: 有了主方向之后,就可以依据该主方向提取BRIEF描述子。...如何解决对噪声敏感的问题: 在前面提到过,在最早的eccv2010的文章中,BRIEF使用的是pixel跟pixel的大小来构造描述子的每一个bit。这样的后果就是对噪声敏感。...参考Slides Related posts Android-opencv之CVCamera http://www.cvchina.info/2011/01/21/android-opencv%E4%
图10 Microsoft.Cpp.x64.user属性页 在【通用属性】→【VC++目录】栏中,可以看到如图11的界面。 ? 图11 配置包含路径 将以下两条路径名添加到【包含目录】中。...配置库目录 库目录同样是在图11的界面中配置,【包含目录】下面第2个即是【库目录】。将以下路径名添加到【库目录】中。...配置链接器 在图12的界面中,点击【通用属性】→【链接器】→【输入】。在【附加依赖项】中添加opencv_world410d.lib。...这个文件库在文件夹C:\OpenCV-4.1.0\opencv\build\x64\vc15\lib下。opencv_world410d.lib是Debug版本的文件库,目前只需要添加这个文件库即可。...配置库目录 C:\OpenCV-4.1.0\opencv\build\x64\vc15\lib 配置链接器 opencv_world410d.lib (在C:\OpenCV-4.1.0\opencv\
主要代码 1.在清单文件中注册权限 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" / <uses-permission...android:name="android.permission.BLUETOOTH" / 2.在文件res / values / strings.xml里,添加程序运行过程中的状态描述文本及配色代码等...,离开聊天室</string <string name="title_connecting" 链接中......然后在 run 方法中 connect , 成功后调用 BluetoothChatSevice 的 connected() 方法。定义 cancel() 在关闭线程时能够关闭相关socket 。...在类微信程序中实现蓝牙聊天功能的文章就介绍到这了,更多相关android 类微信程序蓝牙聊天内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!
如何解决旋转不变性: 在ORB的方案中,是采用了FAST作为特征点检测算子。...FAST应用的很多了,是出名的快,以防有人不知道,请看这里: 在Sift的方案中,特征点的主方向是由梯度直方图的最大值和次大值所在的bin对应的方向决定的。略嫌耗时。...在ORB的方案中,特征点的主方向是通过矩(moment)计算而来,公式如下: 有了主方向之后,就可以依据该主方向提取BRIEF描述子。...如何解决对噪声敏感的问题: 在前面提到过,在最早的eccv2010的文章中,BRIEF使用的是pixel跟pixel的大小来构造描述子的每一个bit。这样的后果就是对噪声敏感。...参考Slides Related posts Android-opencv之CVCamera (1) 最新版的OpenCV中新增加的ORB特征的使用 看到OpenCV2.3.1里面ORB特征提取算法也在里面了
其实,监听器就相当于C++中的回调函数,达到条件就回调执行。 很多时候,我们在自定义控件类中也需要实现一些属性变化的监听器,实现跟原生控件监听器一样的功能。...LoadingListener { public void onFinishedLoading(boolean success); } 在MyClass自定义类中定义一个加载完成监听接口LoadingListener...补充知识:android Activity 给 Fragment 设置回调的方法 这个实现方法很简单,可分为3步走: 1.在fragment中定义接口 2.在activity的定义时实现这个接口 3....在fragment中的 onAttach 方法中 将 Context 转为 相应的接口; 代码如下: public class AllFragment extends Fragment { //......在自定义类中实现自定义监听器方式就是小编分享给大家的全部内容了,希望能给大家一个参考。
前言 上一篇文章已经介绍了OpenCV的环境配置《OpenCV4Android中NDK开发(一)--- OpenCV4.1.0环境搭建》,今天这篇我们就来直接进行实战,先做最简单的传入图像转为灰度图。...代码文件 MainActivity.java 在布局对应的文件中我们加入控件的加载和事件代码 ? ? 然后我们定义一个native的方法,用于实现NDK开发,如下图的 ?...刚建好时方法名为红色的,我们还是按ALT+ENTER,直接在C++的文件中自动生成对应的函数方法名。 ?...native-lib.cpp 由于在C++我们也用到了JAVA的Bitmap的类,所以我们在include里面要加入android/bitmap.h ?...完成的native-lib.cpp的代码 #include #include #include #include <opencv2
经过不断的试错、安装、删除重装…… 写下这篇博客,希望其他人安装时能够轻松一点,少几次还原重装…… 版本: ubuntu18.10 OpenCV-4.1.0 首先,OpenCV 有在ubuntu上安装的官方文档...OpenCV 进入解压出来的OpenCV-4.1.0文件夹,创建一个新文件夹,我创建的叫 build 进入新文件夹,打开终端,进入这个文件夹 执行命令 cmake -D CMAKE_BUILD_TYPE...sudo gedit /etc/ld.so.conf.d/opencv.conf 在文末添加 /usr/local/lib 保存后,执行如下命令使得刚才的配置路径生效 sudo ldconfig.../opencv_example 如果摄像头打开,左上角出现 Hello OpenCV 则证明安装成功 6.关于安装 opencv_contrib 首先下载下来源文件,放置在OpenCV-4.1.0文件夹中...在上述过程第3步中,cmake命令改为 cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH
因为在处理关键点检测和局部不变性在OpenCV 2.4.X和OpenCV 3.X中有很大的不同,比如SIFT和SURF。这里将给出兼容两个版本的代码。...imutils是一套OpenCV的工具包。最后把cv2导入OpenCV。 在第6行定义了Stitcher类,可以检测我们是否使用了OpenCV3。...由于在opencv 2.4和OpenCV 3处理关键点检测和局部不变特征的有明显的差异,OpenCV的版本对我们的使用是很重要的。...接下来就是准备应用透视变换: 假设M不返回None,我们在第30行拆包这个元组,是一个包含关键点匹配、从RANSAC算法中得到的单应矩阵H以及最后的status,用来表明那些已经成功匹配的关键点。...因为这是计算机视觉中的一个非常普遍的做法,OpenCV已经内置了一个cv2.DescriptorMatcher_create方法,用来匹配特征。
在开始教程之前,先说一下相关软件与版本信息 Windows 10 64bit 英伟达CUDA 10.0 OpenCV 4.1.0 OpenCV扩展模块4.1.0 GTX 1050 TI VS2015 专业版...上面的文章中已经详细交代了。安装好之后我们就完成了第一步操作。.../opencv/opencv/releases/download/4.1.0/opencv-4.1.0-vc14_vc15.exe https://github.com/opencv/opencv_contrib...设置以后,在搜索框中输入CUDA, WITH_CUDABUILD_CUDA_STUBS 上述两个选项打勾之后,再次点击【configure】按钮,完成之后,显示如下: ?...04 模块支持与应用场景 既然CUDA加速这么厉害,为什么OpenCV在正式的release中却没有包含呢?本人觉得OpenCV正式的官方Release版本主要是考虑普适性的问题。
模块支持与应用场景 在开始教程之前,先说一下相关软件与版本信息 Windows 10 64bit 英伟达CUDA 10.0 OpenCV 4.1.0 OpenCV扩展模块4.1.0 GTX 1050 TI.../opencv/opencv/releases/download/4.1.0/opencv-4.1.0-vc14_vc15.exe https://github.com/opencv/opencv_contrib...设置以后,在搜索框中输入CUDA, WITH_CUDA BUILD_CUDA_STUBS 上述两个选项打勾之后,再次点击【configure】按钮,完成之后,显示如下: ?...模块支持与应用场景 04 既然CUDA加速这么厉害,为什么OpenCV在正式的release中却没有包含呢?本人觉得OpenCV正式的官方Release版本主要是考虑普适性的问题。...此外OpenCV中DNN模块已经支持OpenVINO加速执行与NCS2加速、所以OpenCV DNN模块不支持英伟达显卡加速支持,支持的模块大部分是以前的传统图像处理、对象检测、特征匹配、双目、图像拼接部分
背景消除建模(BSM)以前我们有两篇介绍过,本章主要是目的是我把Android NDK OpenCV的Demo重新建了一个新的,一是把原来那个DEMO中关于TesserartOCR的相关部分都去掉了,二是在这个...背景消除建模(BSM) 在opencv中有两种方法可以进行背景消除: 基于机器学习(Knn--K个最近邻)背景消除建模 基于图像分割(GMM,抗干扰图像分割)背景消除建模 代码实现 ?...我们新建了一个AndroidNDKOpenCV的Demo,主要的模块和原来那个差不多,只是去掉了TesserartOCR相关的东西,如果重新搭项目可以参照我以前的《OpenCV4Android中NDK开发...(一)--- OpenCV4.1.0环境搭建》。...然后在CPP文件夹下面建了一个bsm的Class 01 bsm.h头文件 bsm.h ?
领取专属 10元无门槛券
手把手带您无忧上云