一.C++,VS2010下:
配置见此http://blog.youkuaiyun.com/u013105549/article/details/38951011
关键点如下:
1.VS2010最高支持到opencv2.4.10
2.出现LINK : fatal error LNK1104: 无法打开文件“.obj”或无法打开文件“D:\opencv\build\x64\vc10\lib\opencv_core2410d.lib的原因
链接器-输入-附加依赖项没配好,注意!附加依赖项不要勾选从父级或项目默认设置继承
1.1.Mat类不识别:
Mat类型对应的头文件是"highgui.h",在编译的时候仅仅加上#include "highgui.h" 这句话是不行的,得告诉系统你的作用域是什么,两种办法:
1.1.1、在程序的最开始加上: using namespace cv;1.1.2、把Mat改为 cv::Mat
1.2.imshow显示灰屏
增加waitKey(0);
1.3.找不到android.hardware.camera2类
改API为21以上版本
二.opencvforandroid配置
参见http://blog.youkuaiyun.com/linshuhe1/article/details/51192355
2.1设置ndk路径时由于eclipse版本较早,preferences->android里没有ndk选项,参见百度经验https://jingyan.baidu.com/article/4d58d5413000a09dd4e9c0fe.html,下载插件即可,然后设置时报错Not a valid NDK directory,在D:\android-ndk-r14b-windows-x86_64\android-ndk-r14b下新建名为ndk-build的空文件
2.2 apk需要依赖opencvmanager的解决
项目目录新建一个libs文件夹,里面放从opencv文件夹里拷贝出来的so库,D:\opencv-3.2.0-android-sdk\OpenCV-android-sdk\sdk\native\libs
resume里改为
@Override
public void onResume(){
super.onResume();
//通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是
//OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存在于OpenCV安装包的apk目录中
//原来语句是这样:OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_2_0, this, mLoaderCallback);
//要不依赖manager就照下写
if (!OpenCVLoader.initDebug()) {
Log.e("main", "Cannot connect to OpenCV Manager");
} else {
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}
3.报Could not find OpenCV Library - 3.2.0.apk!措
在项目上单击右键在弹出菜单中选择Properties,然后在弹出的Properties窗口中左侧选择Android,然后点击右下方的Add按钮,选择OpenCV Library 2.4.3并点击OK
检查是否复制了libs文件夹
4.12-07 16:31:21.178: E/MessageQueue-JNI(27441): java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.grayprocess_pluscolor.ColorBlobDetector.setHsvColor(org.opencv.core.Scalar)' on a null object reference
愚蠢的错误,忘记实例化了
补上mDetector = new ColorBlobDetector();
5.12-19 10:41:07.905: E/JavaBinder(11998): !!! FAILED BINDER TRANSACTION !!! (parcel size = 8294844)
用intent传输的bitmap不能大于40kb