QT 위젯 (C++)을 만들고 OpenCV 라이브러리 (C++)를 사용하여 Android에 배포하고 싶습니다.Android에 배포하는 OpenCV 오류를 사용하는 QT 위젯
Android 용 QT와 NDK, SDK 등 http://qt-project.org/doc/qt-5/androidgs.html (NDK, SDK 등)에 언급 된 필요한 파일을 설치했습니다. Android 용 QT에 mingw 컴파일러가 포함되어 있으므로 설치하지 않아도됩니다.
QT 위젯을 Android에 배포해도 아무런 문제가 없습니다. 문제는 QT 위젯에서 OpenCV 라이브러리를 사용한 다음 배포하는 것입니다.
나는 나의 QT 프로젝트에서 OpenCV의를 사용하는 두 가지 옵션을 시도했다 : 안드로이드 QT으로
을 내가 CMake와와 Mingw 컴파일러를 사용하여 소스에서 OpenCV의 라이브러리를 컴파일 한와 Mingw 컴파일러와 함께 제공됩니다. 그런 다음 헤더 파일을 포함하고 라이브러리를 QT의 프로젝트 파일에 연결했습니다. 이 옵션은 작동하지 않습니다. 필자는이 포함 방법에 익숙하며 Boost와 Eigen과 같은 다른 라이브러리를 같은 방식으로 사용하고자합니다.
OPENCV android SDK를 다운로드하고 헤더 파일을 포함하고 라이브러리를 QT의 프로젝트 파일에 연결했습니다. 이것은 여전히 효과가 없습니다.
기본적으로 내가하고 싶은 것은 C++의 코드이므로, 위젯을 사용하고 qtquick (qml)을 사용하지 마십시오. 위의 단계 중 어느 것이 맞는지, 그리고 내가해야하는 변경 사항을 알려주십시오.
또 다른 메모에서 누군가 내가 에뮬레이터의 속도를 높일 수있는 방법을 알고 있습니다. AMD 프로세서를 가지고 있으므로 인텔 도구를 사용할 수 없습니다. 그리고 삼성 노트 4의 AVD 설정은 어디에서 얻을 수 있습니까?
대단히 감사합니다 !! 옵션 1
프로젝트 파일 : 옵션 2
12:18:17: Starting: "C:\programs\QT\Tools\mingw482_32\bin\mingw32-make.exe"
C:\programs\QT\5.3\android_armv7\bin\qmake.exe -spec android-g++ CONFIG+=debug -o Makefile ..\test3\test3.pro
The system cannot find the path specified.
C:\programs\android-ndk-r10c/toolchains/arm-linux-androideabi-4.9/prebuilt/windows/bin/arm-linux-androideabi-g++ --sysroot=C:\programs\android-ndk-r10c/platforms/android-9/arch-arm/ -Wl,-soname,libtest3.so -Wl,--no-undefined -Wl,-z,noexecstack -shared -o libtest3.so main.obj mainwindow.obj moc_mainwindow.obj -LC:\programs\android-ndk-r10c/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a -LC:\programs\android-ndk-r10c/platforms/android-9/arch-arm//usr/lib C:\programs\opencv\RELEASE\lib\\* -LC:/programs/QT/5.3/android_armv7/lib -lQt5Widgets -Lc:\Utils\android\ndk/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a -Lc:\Utils\android\ndk/platforms/android-9/arch-arm//usr/lib -LC:\Utils\icu32_51_1_mingw482\lib -LC:\utils\postgresql\pgsql\lib -LC:\utils\mysql\mysql\lib -LC:\Utils\pgsql\lib -LC:\temp\opensll-android-master\openssl-android-master\lib -LC:\programs\QT\5.3\android_armv7/lib -lQt5Gui -lQt5Core -lGLESv2 -lgnustl_shared -llog -lz -lm -ldl -lc -lgcc
..\..\opencv\RELEASE\install\include/opencv2/core/mat.hpp:278: error: undefined reference to 'cv::fastFree(void*)'
..\..\opencv\RELEASE\install\include/opencv2/core/mat.hpp:298: error: undefined reference to 'cv::Mat::copySize(cv::Mat const&)'
..\..\opencv\RELEASE\install\include/opencv2/core/mat.hpp:367: error: undefined reference to 'cv::Mat::deallocate()'
..\test3/main.cpp:23: error: undefined reference to 'cv::imread(std::string const&, int)'
..\test3/main.cpp:31: error: undefined reference to 'cv::namedWindow(std::string const&, int)'
..\test3/main.cpp:32: error: undefined reference to 'cv::_InputArray::_InputArray(cv::Mat const&)'
Makefile:82: recipe for target 'libtest3.so' failed
..\test3/main.cpp:32: error: undefined reference to 'cv::imshow(std::string const&, cv::_InputArray const&)'
..\test3/main.cpp:34: error: undefined reference to 'cv::waitKey(int)'
collect2.exe: error: ld returned 1 exit status
mingw32-make: *** [libtest3.so] Error 1
12:18:22: The process "C:\programs\QT\Tools\mingw482_32\bin\mingw32-make.exe" exited with code 2.
Error while building/deploying project test3 (kit: Android for armeabi-v7a (GCC 4.9, Qt 5.3.2))
When executing step "Make"
12:18:22: Elapsed time: 00:04.
프로젝트 파일 : 옵션 1
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = test3
TEMPLATE = app
LIBS+= C:\programs\opencv\RELEASE\lib\\\*
INCLUDEPATH+= C:\programs\opencv\RELEASE\install\include\
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
CONFIG += mobility
MOBILITY =
오류 옵션 2
#-------------------------------------------------
#
# Project created by QtCreator 2014-12-05T18:06:24
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = test3
TEMPLATE = app
INCLUDEPATH+= C:\programs\opencvandroidsdk\sdk\native\jni\include
LIBS += -LC:\programs\opencvandroidsdk\sdk\native\libs\armeabi-v7a\
-lopencv_contrib \
-lopencv_legacy \
-lopencv_ml \
-lopencv_objdetect \
-lopencv_calib3d \
-lopencv_video \
-lopencv_features2d \
-lopencv_highgui \
-lopencv_androidcamera \
-lopencv_flann \
-lopencv_imgproc \
-lopencv_core
LIBS += -LC:\programs\opencvandroidsdk\sdk\native\3rdparty\libs\armeabi-v7a\
-llibjpeg \
-llibpng \
-llibtiff \
-llibjasper \
-ltbb \
-lIlmImf
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
CONFIG += mobility
MOBILITY =
오류 :
18:24:53: Running steps for project test3...
18:24:53: Configuration unchanged, skipping qmake step.
18:24:53: Starting: "C:\programs\QT\Tools\mingw482_32\bin\mingw32-make.exe"
mingw32-make: Nothing to be done for 'first'.
18:24:55: The process "C:\programs\QT\Tools\mingw482_32\bin\mingw32-make.exe" exited normally.
18:24:55: Starting: "C:\programs\QT\Tools\mingw482_32\bin\mingw32-make.exe" INSTALL_ROOT="C:\programs\QT projects\build-test3-Android_for_armeabi_v7a_GCC_4_9_Qt_5_3_2-Release\android-build" install
copy /y "libtest3.so" "C:\programs\QT projects\build-test3-Android_for_armeabi_v7a_GCC_4_9_Qt_5_3_2-Release\android-build\libs\armeabi-v7a\libtest3.so"
The system cannot find the path specified.
0 file(s) copied.
Makefile:1627: recipe for target 'install_target' failed
mingw32-make: [install_target] Error 1 (ignored)
18:24:57: The process "C:\programs\QT\Tools\mingw482_32\bin\mingw32-make.exe" exited normally.
Error while building/deploying project test3 (kit: Android for armeabi-v7a (GCC 4.9, Qt 5.3.2))
When executing step "Deploy to Android device"
18:27:00: Elapsed time: 02:07.
옵션 2의
없음 "무엇을 작동하지 않습니다"에 대한 자세한 내용은 없으며, 코드; 도움이 불가능합니다. – lpapp
@lpapp 코드를 붙여 넣었습니다. 감사! – West1234
Glob은 다음과 같이 작동하지 않습니다 :'LIBS + = C : \ programs \ opencvandroidsdk \ sdk \ native \ 3rdparty \ libs \ armeabi-v7a *'. 'LIBS + = -LC : \ path \ to \ cv \ library -lopencvlibname'을 지정하십시오. – lpapp