~~~~我的生活,我的点点滴滴!!
Qt5中新添加了qcamera接口,但是5.3版本之前android平台上的qcamera都不好用,QML的貌似可以用,有了camera功能确实方便干好多事情,不过今天我们不是来计qt自带的camera,我们使用opencv中的摄像头接口,之所以使用opencv是因为他对图像处理提供了很多方便,并且他也是开源跨平台的,下面开始我们qt5 for android + opencv之旅吧
一、 下载opencv库
去官网 http://opencv.org/ 下载最新的opencv for android的库,我使用的时候最新为了2.4.9 版本,opencv自从2.3.1开始就支持anroid平台了,你也不用非得下载最新的opencv,本人测试2.4.x的都可以正常使用(别用太老的版本了)
下载完成后,不需要安装直接解压到非中文文件路径下,文件布局如下:
E:\HZF\qt-android\OpenCV-2.4.9-android-sdk
|------apk
|------doc
|------samples
|------sdk
1. apk --->文件夹下有一些后缀.apk的包和一个readme.txt 我们通过读txt文档,选择合适的OpenCV Manager apk包去安装到我们的真机上,你要觉得好奇可以解压此包看看里面都有什么,你会发现他里面全是java接口的.so 动态链接库,那表明我们的opencv程序在发布到android平台上时不需要自己在带这些库,只要提前安装了OpenCV Manager就行。
2. doc---->开发文档(对于我们没有用)。
3. samples----->有一些例子,也有直接编译好的apk包,那些例子是java的,对于我们不使用原生态android开发来说没多大用处,例子可以安装到真机去测试一下真机环境及验证第一步是否需要提前安装OpenCV Manager, 安装运行example-tutorial-1-camerapreview.apk来检测真机的摄像头是否能用,这对于第一次使用新技术来说很有帮助,能确定出问题只会是自己的软件代码有问题。
4. sdk----->里面有我们需要的native 开发动态链接库 pre-build 是提前编译好的,这点opencv组织做的很好,赞一下!进入到native\libs下面会看到四种不同编译器下面都有已经编译好的库文件,我们需要armeabi-v7a文件夹的下面的。
二、配置opencv到Qt
Qt中添加外部链接库只需要在.pro文件中添加 头文件路径 及 库路径,我们来看看pro里面怎么写的,他的正确性直接决定我们的程序是否能成功编译,我们看一下pro内容
unix {
message("Using unix configuration")
ANDROID_OPENCV = E:/HZF/qt-android/OpenCV-2.4.9-android-sdk/sdk/native
INCLUDEPATH += \
$$ANDROID_OPENCV/jni/include/opencv \
$$ANDROID_OPENCV/jni/include/opencv2 \
$$ANDROID_OPENCV/jni/include \
LIBS += \
$$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_contrib.a \
$$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_legacy.a \
$$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_ml.a \
$$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_objdetect.a \
$$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_calib3d.a \
$$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_video.a \
$$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_features2d.a \
$$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_highgui.a \
$$ANDROID_OPENC