在本文中,我们将给您介绍关于为Ubuntu16.04配置OpenCV3.2.0的详细内容,并且为您解答ubuntu配置opencv环境的相关问题,此外,我们还将为您提供关于36篇博文带你学完openc
在本文中,我们将给您介绍关于为 Ubuntu 16.04 配置 OpenCV 3.2.0的详细内容,并且为您解答ubuntu配置opencv环境的相关问题,此外,我们还将为您提供关于36 篇博文带你学完 opencv :python+opencv 进阶版学习笔记目录、Android OpenCV(零):OpenCV Android SDK、Android Studio,OpenCV jar,java.lang.ClassNotFoundException:org.opencv.R $styleable、Android,opencv - 尝试初始化 Mat 时找不到长时间的 org.opencv.core.Mat.n_Mat() 实现的知识。
本文目录一览:- 为 Ubuntu 16.04 配置 OpenCV 3.2.0(ubuntu配置opencv环境)
- 36 篇博文带你学完 opencv :python+opencv 进阶版学习笔记目录
- Android OpenCV(零):OpenCV Android SDK
- Android Studio,OpenCV jar,java.lang.ClassNotFoundException:org.opencv.R $styleable
- Android,opencv - 尝试初始化 Mat 时找不到长时间的 org.opencv.core.Mat.n_Mat() 实现
为 Ubuntu 16.04 配置 OpenCV 3.2.0(ubuntu配置opencv环境)
为 Ubuntu 16.04 配置 OpenCV 3.2.0
之前给公司里的小白安排了一个任务,要求他在虚拟机上配置OpenCV,他呢,花了快一个月都没能很好的完成这个工作,虽然我也扔给他很多相关方面的技术资料,但发现好像并没有这么顺利。
之前我有篇文章写过如何在 16.04 版的 Ubuntu 中配置 OpenCV 3.0,并配置对 Python 3.4 的支持 详见:《配置编译Python3.4 + OpenCV3.0 + OpenGL 》,但是我之后又重新试了下,发现也确实存在许多坑,有小概率的可以编译成功。
这就让我很不爽了,如果每次安装配置都要讲概率的话(有时候会因为IPPICV包的下载失败,或者其他一两个文件缺失导致失败),于是我查阅了 OpenCV 官方的文档,发现了他们在这个1月已经发布了新的 OpenCV 的版本,并且修正了以前版本存在的诸多问题,所以我后来决定直接做一个自动安装脚本,把安装过程中需要的支持全部提前配置好,这样当以后有需要时,只要简单的运行下脚本即可。
由于安装包比较大,所以我传到了百度盘上,有需要的同学自己去下就好了。
目前测试:Ubuntu 16.04 x64 位系统安装无压力,其他 Debian 或 Ubuntu 系统,没有测试过,不过我觉得应该可以无压力安装的。
传送门点我
36 篇博文带你学完 opencv :python+opencv 进阶版学习笔记目录
基础版学习笔记传送门
36 篇博文带你学完 opencv :python3+opencv 学习笔记汇总目录(基础版)
进阶版笔记
项目 |
---|
opencv 进阶学习笔记 1: 调用摄像头用法大全(打开摄像头,打开摄像头并实时不断截屏,读取视频并截图) |
opencv 进阶学习笔记 2:numpy 操作图像,色彩空间,查找指定颜色范围,通道分离与合并 |
opencv 进阶学习笔记 3:像素运算和图像亮度对比度调节 |
opencv 进阶学习笔记 4:ROI 和泛洪扩充 |
opencv 进阶学习笔记 5:图像模糊操作,图像锐化,边缘保留滤波 EPF(图像滤镜) |
opencv 进阶学习笔记 6:使用鼠标在图像上绘制矩形框或者多边形框 |
opencv 进阶学习笔记 7:直方图,直方图均衡化,直方图比较,直方图反向投影 |
opencv 进阶学习笔记 8:模板匹配 |
opencv 进阶学习 9:图像阈值大全,图像二值化,超大图像二值化 |
opencv 进阶学习笔记 10:图像金字塔和图像梯度 |
opencv 进阶学习笔记 11:cannny 边缘检测,直线检测,圆检测 |
opencv 进阶学习笔记 12:轮廓发现和对象测量 |
opencv 进阶学习笔记 13:图像形态学操作大全(膨胀,腐蚀,开闭,黑帽,顶帽,梯度)python 版 |
opencv 进阶学习笔记 14:分水岭算法 实现图像分割 |
OpenCV 告一段落,接下来,该实战啦。
计算机视觉三大任务,分类,监测,分割。
意见其他一些任务…
图像生成,OCR…
电气专业的计算机萌新,写博文不容易,如果你觉得本文对你有用,请点个赞支持下,谢谢。
Android OpenCV(零):OpenCV Android SDK
OpenCV
OpenCV,全称Open Source Computer VisionLibrary,是基于C/C++编写的,是BSD开源许可的计算机视觉开发框架,其开源协议允许在学术研究与商业应用开发中免费使用它。OpenCV支持Windows、Linux、Mac OS、iOS与Android操作系统上的应用开发。
OpenCV Android SDK
OpenCV Android SDK 是OpenCV针对Android平台提供的开发工具包。Android应用开发一般采用Java或者Kotlin语言进行,而OpenCV主要模块采用C、C++语言编制,因此,我们需要通过JNI技术,实现JAVA或者Kotlin调用OpenCV算法模块的目的。
下载
- 官网下载地址(https://opencv.org/releases/)
- 选择OpenCV版本下的Android
SDK概述
SDK目录结构如下:
OpenCV-android-sdk
|_ samples
|_ sdk
| |_ etc
| |_ java
| |_ libcxx_helper
| |_ native
| |_ 3rdparty
| |_ jni
| |_ libs
| |_ arm64-v8a
| |_ armeabi-v7a
| |_ x86
| |_ x86_64
| |_ staticlibs
| |_ arm64-v8a
| |_ armeabi-v7a
| |_ x86
| |_ x86_64
|
|_ LICENSE
|_ README.android
目录 | 文件 |
---|---|
samples | OpenCV运行案例 |
sdk | OpenCV API以及依赖库 |
sdk/etc | Haar和LBP级联分类器 |
sdk/java | OpenCV Java API |
sdk/libcxx_helper | bring libc++_shared.so into packages |
sdk/native | OpenCV 静态库、动态库以及JNI文件 |
英文详细介绍(https://opencv.org/android/)。其实官方的这些介绍并不详细,很多资料随着版本的迭代已过时,意义不大,唯一阅读性高且具有指导意义的应该就是库内的代码与注释了。
开发环境
-
Android Studio 3.5.3 & Android SDK
-
Android NDK 20.1.5948944
-
CMake 3.10.2
-
OpenCV Android SDK 4.2.0
Hello OpenCV Android Sample
- Open Project
- 选择OpenCV-android-sdk目录下的samples目录
- 待编译结束后运行face-detection
Hello OpenCV Android SDK
- New Project
- Import Module…
- 选择OpenCV-android-sdk目录下的sdk目录,修改或者不修改module的名称
- 添加app程序对sdk module的依赖
- 期间可能会遇到一些问题,可能是NDK版本问题,可能是API LEVEL问题,也可能是build tools的问题,对应的稍作处理即可。
示例工程
https://github.com/onlyloveyd/LearningAndroidOpenCV
Android Studio,OpenCV jar,java.lang.ClassNotFoundException:org.opencv.R $styleable
网络上有关如何在Android Studio中使用OpenCV的大多数示例都涉及将OpenCV模块导入到您的项目中.但是,我试图将OpenCV用作jar,以便避免使用OpenCV的副本使源代码控制存储库混乱.
这些就是我为名为“ app”的应用所执行的步骤.
答:在/ Project / apps下创建一个libs目录.将OpenCV jar放在此处.还将opencv本机库放在子目录中.
B.在/Project/app/build.gradle中执行以下操作
将这些行放在顶部:
repositories { flatDir { dirs 'libs' } }
将这些行放在android部分中:
sourceSets.main.jniLibs.srcDirs = ['libs']
将此行放在依赖项部分:
compile filetree(dir: 'libs', include: ['*.jar'])
C.在应用程序标签之后,将这些行添加到AndroidManifest.xml中.
<uses-sdk android:minSdkVersion="9"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>
D.不确定是否需要这样做,我尝试了是否使用-似乎没有区别:我在AndroidManifest.xml的application标记内添加以下行:
<uses-library android:name="org.opencv.android.JavaCameraview" />
E.最后是我的布局xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:opencv="http://schemas.android.com/apk/lib/org.opencv.android.JavaCameraview"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<org.opencv.android.JavaCameraview
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="gone"
android:id="@+id/main_activity_surface_view"
opencv:show_fps="true"
opencv:camera_id="any" />
</LinearLayout>
这一切都很好.我可以在自己的活动中引用OpenCV,而不会出错.但是布局编辑器给出以下错误:无法实例化以下类:org.opencv.android.JavaCameraview. java.lang.classNotFoundException:org.opencv.R $styleable.
如果只是一个渲染问题,也许我可以忽略它,但是当我运行它时会发生类似的错误.
我想念什么?
(我知道SO中关于此错误的问题有点类似,但他的解决方案涉及导入整个模块,该模块确实有效,但正是我要避免的事情.)
解决方法:
错误消息:
The following classes Could not be instantiated: org.opencv.android.JavaCameraview. java.lang.classNotFoundException: org.opencv.R$styleable
表示在构建时找不到OpenCV资源.如果您将OpenCV包含在jar库中,那将是问题的根源-jar中没有资源.
解决方案是将OpenCV构建为AAR,因为AAR确实有资源.为此构造一个库模块,将其编译为AAR,然后在需要的任何地方重复使用该归档文件.
Android,opencv - 尝试初始化 Mat 时找不到长时间的 org.opencv.core.Mat.n_Mat() 实现
如何解决Android,opencv - 尝试初始化 Mat 时找不到长时间的 org.opencv.core.Mat.n_Mat() 实现?
我想使用 OpenCV 做一些事情并且我正在尝试创建 Mat
对象:
import org.opencv.core.CvType;
import org.opencv.core.Mat;
...
Mat imageMat = new Mat(CvType.CV_8U);
在这一行我得到错误:
2021-04-28 15:13:44.657 23613-23613/xxxx.yyyy E/art: No implementation found for long org.opencv.core.Mat.n_Mat() (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__)
2021-04-28 15:13:44.676 23613-23613/xxxx.yyyy D/AndroidRuntime: Shutting down VM
2021-04-28 15:13:44.686 23613-23613/xxxx.yyyy E/AndroidRuntime: FATAL EXCEPTION: main
Process: xxxx.yyyy,PID: 23613
java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.core.Mat.n_Mat() (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__)
at org.opencv.core.Mat.n_Mat(Native Method)
at org.opencv.core.Mat.<init>(Mat.java:26)
at org.opencv.core.MatOfPoint2f.<init>(MatOfPoint2f.java:12)
at xxxx.yyyy.Utils.quadrilateralToRect(Utils.java:77)
at xxxx.yyyy.activities.CropActivity$1.onClick(CropActivity.java:74)
at android.view.View.performClick(View.java:5619)
at android.view.View$PerformClick.run(View.java:22298)
at android.os.Handler.handleCallback(Handler.java:754)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:165)
at android.app.ActivityThread.main(ActivityThread.java:6375)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)
我在我的 android 项目中将 OpenCV 作为单独的模块,并通过在 implementation project(path: '':OpenCV'')
部分的 build.gradle 中添加 dependencies
将其导入到我的主模块中。
我看过一个 simillar 问题,但使用 OpenCvManager 回答了这个问题,我不想在我的项目中使用它。如果我做对了,我的用户将被迫在使用我的应用程序之前单独安装此管理器,对吗?真恶心。
UPD 1
我已添加
static {
Log.d(TAG,"OPENCV INITIALIZATION " + (OpenCVLoader.initDebug() ? "SUCCEEDED" : "Failed"));
}
在我的 MainActivity.java
中。它打印“SUCCEEDED”,但错误没有消失。然而,它变了:
2021-04-28 21:09:47.798 22656-22656/xxxx.yyyy E/AndroidRuntime: FATAL EXCEPTION: main
Process: xxxx.yyyy,PID: 22656
java.lang.UnsupportedOperationException: Native object address is NULL
at org.opencv.core.Mat.<init>(Mat.java:14)
at xxxx.yyyy.Utils.quadrilateralToRect(Utils.java:94)
at xxxx.yyyy.activities.CropActivity$1.onClick(CropActivity.java:74)
at android.view.View.performClick(View.java:5619)
at android.view.View$PerformClick.run(View.java:22298)
at android.os.Handler.handleCallback(Handler.java:754)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:165)
at android.app.ActivityThread.main(ActivityThread.java:6375)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)
UPD 2
UPD 1 中的糟糕错误是因为 new Mat()
中的参数。没有 args 还没有错误。调查仍在继续。
解决方法
建议使用 CMake 链接 SDK,而不是复制编译后的文件。
您可以在您的应用程序 build.gradle 下添加 OpenCV_DIR cmake 参数 android > defaultConfig > externalNativeBuild > cmake
arguments "-DOpenCV_DIR=" + file(''../sdk'').absolutePath + "/native/jni","-DANDROID_TOOLCHAIN=clang","-DANDROID_STL=c++_shared"
然后在CMake中使用find_package安装OpenCV
set(ANDROID_OPENCV_COMPONENTS "opencv_java" CACHE STRING "")
message(STATUS "ANDROID_ABI=${ANDROID_ABI}")
find_package(OpenCV REQUIRED COMPONENTS ${ANDROID_OPENCV_COMPONENTS})
具体流程如下:
https://kcwong-joe.medium.com/how-to-import-opencv-4-5-2-in-android-studio-d9114179628f
,似乎我找到了解决方案(适用于 OpenCV 3)。需要将文件夹 sdk\native\libs
从下载的 SDK 复制到项目的根目录中,并将其命名为 jniLibs
。它的每个 forders 都有一个名为 libopencv_java3.so
的文件,如下所示:
此外,可能将此代码添加到您的主要活动中很有用:
static {
if (OpenCVLoader.initDebug()) {
Log.d(TAG,"OPENCV INITIALIZATION SUCCEEDED");
} else {
Log.d(TAG,"OPENCV INITIALIZATION FAILED BUT TRYING TO RELOAD");
System.loadLibrary("opencv_java3");
}
}
坏处:这些文件在构建后为您的 APK 增加了 80 Mb。欢迎提供更好的解决方案。
今天关于为 Ubuntu 16.04 配置 OpenCV 3.2.0和ubuntu配置opencv环境的介绍到此结束,谢谢您的阅读,有关36 篇博文带你学完 opencv :python+opencv 进阶版学习笔记目录、Android OpenCV(零):OpenCV Android SDK、Android Studio,OpenCV jar,java.lang.ClassNotFoundException:org.opencv.R $styleable、Android,opencv - 尝试初始化 Mat 时找不到长时间的 org.opencv.core.Mat.n_Mat() 实现等更多相关知识的信息可以在本站进行查询。
本文标签: