@@ -0,0 +1,6 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | |||||
<component name="Encoding"> | |||||
<file url="PROJECT" charset="UTF-8" /> | |||||
</component> | |||||
</project> |
@@ -0,0 +1,5 @@ | |||||
<component name="InspectionProjectProfileManager"> | |||||
<profile version="1.0"> | |||||
<option name="myName" value="Project Default" /> | |||||
</profile> | |||||
</component> |
@@ -0,0 +1,4 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | |||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" /> | |||||
</project> |
@@ -0,0 +1,8 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | |||||
<component name="ProjectModuleManager"> | |||||
<modules> | |||||
<module fileurl="file://$PROJECT_DIR$/.idea/HyperPlate.iml" filepath="$PROJECT_DIR$/.idea/HyperPlate.iml" /> | |||||
</modules> | |||||
</component> | |||||
</project> |
@@ -0,0 +1,6 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | |||||
<component name="VcsDirectoryMappings"> | |||||
<mapping directory="" vcs="Git" /> | |||||
</component> | |||||
</project> |
@@ -0,0 +1,476 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | |||||
<component name="ChangeListManager"> | |||||
<list default="true" id="35ca437b-3a41-49a4-9246-6be487c86720" name="Default" comment=""> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/.ninja_deps" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/.ninja_deps" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/.ninja_log" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/.ninja_log" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeCache.txt" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeCache.txt" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeCCompiler.cmake" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeCCompiler.cmake" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeCXXCompiler.cmake" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeCXXCompiler.cmake" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeDetermineCompilerABI_C.bin" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeDetermineCompilerABI_C.bin" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeDetermineCompilerABI_CXX.bin" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeDetermineCompilerABI_CXX.bin" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeSystem.cmake" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeSystem.cmake" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/CMakeOutput.log" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/CMakeOutput.log" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/TargetDirectories.txt" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/TargetDirectories.txt" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/android_gradle_build.json" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/android_gradle_build.json" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/build.ninja" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/build.ninja" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/cmake_build_command.txt" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/cmake_build_command.txt" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/cmake_build_output.txt" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/cmake_build_output.txt" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/cmake_install.cmake" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/cmake_install.cmake" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/rules.ninja" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/rules.ninja" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/src/main/cpp/CMakeFiles/hyperlpr.dir/javaWarpper.cpp.o" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/src/main/cpp/CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.o" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/src/main/cpp/CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.o" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/src/main/cpp/CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.o" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/src/main/cpp/CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.o" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/src/main/cpp/CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.o" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/src/main/cpp/CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.o" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/src/main/cpp/CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.o" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/src/main/cpp/cmake_install.cmake" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/.ninja_deps" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/.ninja_log" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeCache.txt" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeCache.txt" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeCCompiler.cmake" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeCCompiler.cmake" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeCXXCompiler.cmake" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeCXXCompiler.cmake" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeDetermineCompilerABI_C.bin" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeDetermineCompilerABI_C.bin" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeDetermineCompilerABI_CXX.bin" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeDetermineCompilerABI_CXX.bin" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeSystem.cmake" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeFiles/3.6.0-rc2/CMakeSystem.cmake" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeFiles/CMakeOutput.log" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeFiles/CMakeOutput.log" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeFiles/TargetDirectories.txt" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/CMakeFiles/TargetDirectories.txt" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/android_gradle_build.json" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/android_gradle_build.json" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/build.ninja" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/build.ninja" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/cmake_build_command.txt" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/cmake_build_command.txt" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/cmake_build_output.txt" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/cmake_build_output.txt" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/cmake_install.cmake" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/cmake_install.cmake" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/rules.ninja" afterPath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/rules.ninja" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/src/main/cpp/CMakeFiles/hyperlpr.dir/javaWarpper.cpp.o" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/src/main/cpp/CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.o" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/src/main/cpp/CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.o" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/src/main/cpp/CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.o" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/src/main/cpp/CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.o" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/src/main/cpp/CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.o" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/src/main/cpp/CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.o" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/src/main/cpp/CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.o" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.externalNativeBuild/cmake/release/armeabi-v7a/src/main/cpp/cmake_install.cmake" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/.gitignore" afterPath="$PROJECT_DIR$/Prj-Android/app/.gitignore" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/CMakeLists.txt" afterPath="$PROJECT_DIR$/Prj-Android/app/CMakeLists.txt" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/app.iml" afterPath="$PROJECT_DIR$/Prj-Android/app/app.iml" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/build.gradle" afterPath="$PROJECT_DIR$/Prj-Android/app/build.gradle" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/androidTest/java/pr/platerecognization/ExampleInstrumentedTest.java" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/AndroidManifest.xml" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/AndroidManifest.xml" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/assets/pr/cascade.xml" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/assets/pr/cascade.xml" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/CNNRecognizer.h" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/CNNRecognizer.h" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/FastDeskew.h" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/FastDeskew.h" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/FineMapping.h" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/FineMapping.h" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/Pipeline.h" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/Pipeline.h" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/PlateDetection.h" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/PlateDetection.h" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/PlateInfo.h" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/PlateInfo.h" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/PlateSegmentation.h" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/PlateSegmentation.h" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/Recognizer.h" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/Recognizer.h" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/SegmentationFreeRecognizer.h" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/SegmentationFreeRecognizer.h" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/niBlackThreshold.h" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/include/niBlackThreshold.h" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/javaWarpper.cpp" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/javaWarpper.cpp" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/src/FastDeskew.cpp" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/src/FastDeskew.cpp" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/src/FineMapping.cpp" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/src/FineMapping.cpp" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/src/Pipeline.cpp" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/src/Pipeline.cpp" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/src/PlateDetection.cpp" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/src/PlateDetection.cpp" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/src/PlateSegmentation.cpp" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/src/PlateSegmentation.cpp" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/src/SegmentationFreeRecognizer.cpp" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/src/SegmentationFreeRecognizer.cpp" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/src/util.h" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/cpp/src/util.h" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/java/pr/platerecognization/MainActivity.java" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/java/pr/platerecognization/MainActivity.java" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/java/pr/platerecognization/PlateRecognition.java" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/java/pr/platerecognization/PlateRecognition.java" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi-v7a/libopencv_core.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi-v7a/libopencv_dnn.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi-v7a/libopencv_flann.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi-v7a/libopencv_highgui.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi-v7a/libopencv_imgcodecs.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi-v7a/libopencv_imgproc.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi-v7a/libopencv_java3.so" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi-v7a/libopencv_objdetect.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi-v7a/libopencv_photo.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi-v7a/libopencv_shape.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi/libopencv_core.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi/libopencv_dnn.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi/libopencv_flann.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi/libopencv_highgui.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi/libopencv_imgcodecs.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi/libopencv_imgproc.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi/libopencv_java3.so" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi/libopencv_objdetect.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi/libopencv_photo.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/jniLibs/armeabi/libopencv_shape.a" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/res/drawable/demo.png" afterPath="" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/res/layout/activity_main.xml" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/res/layout/activity_main.xml" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-hdpi/ic_launcher.png" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-hdpi/ic_launcher.png" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-mdpi/ic_launcher.png" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-mdpi/ic_launcher.png" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-xhdpi/ic_launcher.png" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-xhdpi/ic_launcher.png" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/main/res/values/strings.xml" afterPath="$PROJECT_DIR$/Prj-Android/app/src/main/res/values/strings.xml" /> | |||||
<change beforePath="$PROJECT_DIR$/Prj-Android/app/src/test/java/pr/platerecognization/ExampleUnitTest.java" afterPath="" /> | |||||
</list> | |||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> | |||||
<option name="TRACKING_ENABLED" value="true" /> | |||||
<option name="SHOW_DIALOG" value="false" /> | |||||
<option name="HIGHLIGHT_CONFLICTS" value="true" /> | |||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> | |||||
<option name="LAST_RESOLUTION" value="IGNORE" /> | |||||
</component> | |||||
<component name="Git.Settings"> | |||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> | |||||
</component> | |||||
<component name="GradleLocalSettings"> | |||||
<option name="externalProjectsViewState"> | |||||
<projects_view /> | |||||
</option> | |||||
</component> | |||||
<component name="ProjectFrameBounds" extendedState="6"> | |||||
<option name="x" value="54" /> | |||||
<option name="y" value="23" /> | |||||
<option name="width" value="1401" /> | |||||
<option name="height" value="877" /> | |||||
</component> | |||||
<component name="ProjectInspectionProfilesVisibleTreeState"> | |||||
<entry key="Project Default"> | |||||
<profile-state> | |||||
<expanded-state> | |||||
<State> | |||||
<id /> | |||||
</State> | |||||
<State> | |||||
<id>AccessibilityLintAndroid</id> | |||||
</State> | |||||
<State> | |||||
<id>Android</id> | |||||
</State> | |||||
<State> | |||||
<id>Bidirectional TextInternationalizationLintAndroid</id> | |||||
</State> | |||||
<State> | |||||
<id>Chrome OSCorrectnessLintAndroid</id> | |||||
</State> | |||||
<State> | |||||
<id>Class structureJava</id> | |||||
</State> | |||||
<State> | |||||
<id>Cloning issuesJava</id> | |||||
</State> | |||||
<State> | |||||
<id>CorrectnessLintAndroid</id> | |||||
</State> | |||||
<State> | |||||
<id>General</id> | |||||
</State> | |||||
<State> | |||||
<id>Groovy</id> | |||||
</State> | |||||
<State> | |||||
<id>IconsUsabilityLintAndroid</id> | |||||
</State> | |||||
<State> | |||||
<id>Inheritance issuesJava</id> | |||||
</State> | |||||
<State> | |||||
<id>Internationalization issuesJava</id> | |||||
</State> | |||||
<State> | |||||
<id>InternationalizationLintAndroid</id> | |||||
</State> | |||||
<State> | |||||
<id>Java</id> | |||||
</State> | |||||
<State> | |||||
<id>Java language level migration aidsJava</id> | |||||
</State> | |||||
<State> | |||||
<id>Javadoc issuesJava</id> | |||||
</State> | |||||
<State> | |||||
<id>Kotlin</id> | |||||
</State> | |||||
<State> | |||||
<id>LintAndroid</id> | |||||
</State> | |||||
<State> | |||||
<id>LintLintAndroid</id> | |||||
</State> | |||||
<State> | |||||
<id>MessagesCorrectnessLintAndroid</id> | |||||
</State> | |||||
<State> | |||||
<id>Numeric issuesJava</id> | |||||
</State> | |||||
<State> | |||||
<id>Performance issuesJava</id> | |||||
</State> | |||||
<State> | |||||
<id>PerformanceLintAndroid</id> | |||||
</State> | |||||
<State> | |||||
<id>Portability issuesJava</id> | |||||
</State> | |||||
<State> | |||||
<id>Potentially confusing code constructsGroovy</id> | |||||
</State> | |||||
<State> | |||||
<id>Probable bugsJava</id> | |||||
</State> | |||||
<State> | |||||
<id>Security issuesJava</id> | |||||
</State> | |||||
<State> | |||||
<id>SecurityLintAndroid</id> | |||||
</State> | |||||
<State> | |||||
<id>Serialization issuesJava</id> | |||||
</State> | |||||
<State> | |||||
<id>Threading issuesJava</id> | |||||
</State> | |||||
<State> | |||||
<id>TypographyUsabilityLintAndroid</id> | |||||
</State> | |||||
<State> | |||||
<id>UsabilityLintAndroid</id> | |||||
</State> | |||||
</expanded-state> | |||||
<selected-state> | |||||
<State> | |||||
<id>AndroidLintUnusedIds</id> | |||||
</State> | |||||
</selected-state> | |||||
</profile-state> | |||||
</entry> | |||||
</component> | |||||
<component name="ProjectView"> | |||||
<navigator currentView="ProjectPane" proportions="" version="1"> | |||||
<flattenPackages /> | |||||
<showMembers /> | |||||
<showModules /> | |||||
<showLibraryContents /> | |||||
<hideEmptyPackages /> | |||||
<abbreviatePackageNames /> | |||||
<autoscrollToSource /> | |||||
<autoscrollFromSource /> | |||||
<sortByType /> | |||||
<manualOrder /> | |||||
<foldersAlwaysOnTop value="true" /> | |||||
</navigator> | |||||
<panes> | |||||
<pane id="PackagesPane" /> | |||||
<pane id="ProjectPane"> | |||||
<subPane> | |||||
<expand> | |||||
<path> | |||||
<item name="HyperPlate" type="b2602c69:ProjectViewProjectNode" /> | |||||
<item name="HyperPlate" type="462c0819:PsiDirectoryNode" /> | |||||
</path> | |||||
</expand> | |||||
<select /> | |||||
</subPane> | |||||
</pane> | |||||
<pane id="AndroidView" /> | |||||
<pane id="Scratches" /> | |||||
<pane id="Scope" /> | |||||
</panes> | |||||
</component> | |||||
<component name="PropertiesComponent"> | |||||
<property name="settings.editor.selected.configurable" value="android.sdk-updates" /> | |||||
<property name="android.sdk.path" value="$USER_HOME$/Library/Android/sdk" /> | |||||
<property name="android.project.structure.last.selected" value="SDK Location" /> | |||||
<property name="android.project.structure.proportion" value="0.15" /> | |||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" /> | |||||
</component> | |||||
<component name="RunDashboard"> | |||||
<option name="ruleStates"> | |||||
<list> | |||||
<RuleState> | |||||
<option name="name" value="ConfigurationTypeDashboardGroupingRule" /> | |||||
</RuleState> | |||||
<RuleState> | |||||
<option name="name" value="StatusDashboardGroupingRule" /> | |||||
</RuleState> | |||||
</list> | |||||
</option> | |||||
</component> | |||||
<component name="RunManager"> | |||||
<configuration default="true" type="Application" factoryName="Application"> | |||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> | |||||
<option name="MAIN_CLASS_NAME" /> | |||||
<option name="VM_PARAMETERS" /> | |||||
<option name="PROGRAM_PARAMETERS" /> | |||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> | |||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> | |||||
<option name="ALTERNATIVE_JRE_PATH" /> | |||||
<option name="ENABLE_SWING_INSPECTOR" value="false" /> | |||||
<option name="ENV_VARIABLES" /> | |||||
<option name="PASS_PARENT_ENVS" value="true" /> | |||||
<module name="" /> | |||||
<envs /> | |||||
</configuration> | |||||
<configuration default="true" type="Remote" factoryName="Remote"> | |||||
<option name="USE_SOCKET_TRANSPORT" value="true" /> | |||||
<option name="SERVER_MODE" value="false" /> | |||||
<option name="SHMEM_ADDRESS" value="javadebug" /> | |||||
<option name="HOST" value="localhost" /> | |||||
<option name="PORT" value="5005" /> | |||||
</configuration> | |||||
<configuration default="true" type="TestNG" factoryName="TestNG"> | |||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> | |||||
<module name="" /> | |||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> | |||||
<option name="ALTERNATIVE_JRE_PATH" /> | |||||
<option name="SUITE_NAME" /> | |||||
<option name="PACKAGE_NAME" /> | |||||
<option name="MAIN_CLASS_NAME" /> | |||||
<option name="METHOD_NAME" /> | |||||
<option name="GROUP_NAME" /> | |||||
<option name="TEST_OBJECT" value="CLASS" /> | |||||
<option name="VM_PARAMETERS" value="-ea" /> | |||||
<option name="PARAMETERS" /> | |||||
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" /> | |||||
<option name="OUTPUT_DIRECTORY" /> | |||||
<option name="ANNOTATION_TYPE" /> | |||||
<option name="ENV_VARIABLES" /> | |||||
<option name="PASS_PARENT_ENVS" value="true" /> | |||||
<option name="TEST_SEARCH_SCOPE"> | |||||
<value defaultName="singleModule" /> | |||||
</option> | |||||
<option name="USE_DEFAULT_REPORTERS" value="false" /> | |||||
<option name="PROPERTIES_FILE" /> | |||||
<envs /> | |||||
<properties /> | |||||
<listeners /> | |||||
</configuration> | |||||
<configuration name="<template>" type="Applet" default="true" selected="false"> | |||||
<option name="MAIN_CLASS_NAME" /> | |||||
<option name="HTML_FILE_NAME" /> | |||||
<option name="HTML_USED" value="false" /> | |||||
<option name="WIDTH" value="400" /> | |||||
<option name="HEIGHT" value="300" /> | |||||
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" /> | |||||
<option name="VM_PARAMETERS" /> | |||||
</configuration> | |||||
<configuration default="true" type="JUnit" factoryName="JUnit"> | |||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> | |||||
<module name="" /> | |||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> | |||||
<option name="ALTERNATIVE_JRE_PATH" /> | |||||
<option name="PACKAGE_NAME" /> | |||||
<option name="MAIN_CLASS_NAME" /> | |||||
<option name="METHOD_NAME" /> | |||||
<option name="TEST_OBJECT" value="class" /> | |||||
<option name="VM_PARAMETERS" value="-ea" /> | |||||
<option name="PARAMETERS" /> | |||||
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" /> | |||||
<option name="ENV_VARIABLES" /> | |||||
<option name="PASS_PARENT_ENVS" value="true" /> | |||||
<option name="TEST_SEARCH_SCOPE"> | |||||
<value defaultName="singleModule" /> | |||||
</option> | |||||
<envs /> | |||||
<patterns /> | |||||
<method /> | |||||
</configuration> | |||||
<configuration name="<template>" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" default="true" selected="false"> | |||||
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" /> | |||||
</configuration> | |||||
</component> | |||||
<component name="ShelveChangesManager" show_recycled="false"> | |||||
<option name="remove_strategy" value="false" /> | |||||
</component> | |||||
<component name="SvnConfiguration"> | |||||
<configuration /> | |||||
</component> | |||||
<component name="TaskManager"> | |||||
<task active="true" id="Default" summary="Default task"> | |||||
<changelist id="35ca437b-3a41-49a4-9246-6be487c86720" name="Default" comment="" /> | |||||
<created>1532420991821</created> | |||||
<option name="number" value="Default" /> | |||||
<option name="presentableId" value="Default" /> | |||||
<updated>1532420991821</updated> | |||||
</task> | |||||
<servers /> | |||||
</component> | |||||
<component name="ToolWindowManager"> | |||||
<frame x="0" y="23" width="1401" height="877" extended-state="6" /> | |||||
<layout> | |||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Palette	" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="true" content_ui="tabs" /> | |||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.23325975" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> | |||||
<window_info id="LuaJ" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.32938564" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="WIFI ADB ULTIMATE" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3123612" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Android WiFi ADB" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Structure" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.26490065" sideWeight="0.48269895" order="1" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.13043478" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" /> | |||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Android Profiler" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Build Variants" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="5" side_tool="true" content_ui="tabs" /> | |||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Android Monitor" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.35075885" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Logcat" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.23847167" sideWeight="0.5" order="14" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="combo" /> | |||||
<window_info id="Build" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.22397892" sideWeight="0.5" order="15" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Android Model" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="true" content_ui="tabs" /> | |||||
<window_info id="Device File Explorer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.2649889" sideWeight="0.517301" order="11" side_tool="true" content_ui="tabs" /> | |||||
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3237774" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Captures" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Gradle Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="true" content_ui="tabs" /> | |||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3478261" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> | |||||
<window_info id="Gradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.32956383" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" /> | |||||
</layout> | |||||
</component> | |||||
<component name="VcsContentAnnotationSettings"> | |||||
<option name="myLimit" value="2678400000" /> | |||||
</component> | |||||
<component name="XDebuggerManager"> | |||||
<breakpoint-manager /> | |||||
<watches-manager /> | |||||
</component> | |||||
<component name="masterDetails"> | |||||
<states> | |||||
<state key="ProjectJDKs.UI"> | |||||
<settings> | |||||
<last-edited>1.8</last-edited> | |||||
<splitter-proportions> | |||||
<option name="proportions"> | |||||
<list> | |||||
<option value="0.2" /> | |||||
</list> | |||||
</option> | |||||
</splitter-proportions> | |||||
</settings> | |||||
</state> | |||||
<state key="ScopeChooserConfigurable.UI"> | |||||
<settings> | |||||
<splitter-proportions> | |||||
<option name="proportions"> | |||||
<list> | |||||
<option value="0.2" /> | |||||
</list> | |||||
</option> | |||||
</splitter-proportions> | |||||
</settings> | |||||
</state> | |||||
</states> | |||||
</component> | |||||
</project> |
@@ -0,0 +1,9 @@ | |||||
*.iml | |||||
.gradle | |||||
/local.properties | |||||
/.idea | |||||
.DS_Store | |||||
/build | |||||
/captures | |||||
.externalNativeBuild | |||||
.src/main/cpp/CMakeFiles |
@@ -0,0 +1,148 @@ | |||||
# CMAKE generated file: DO NOT EDIT! | |||||
# Generated by "Unix Makefiles" Generator, CMake Version 3.11 | |||||
# Default target executed when no arguments are given to make. | |||||
default_target: all | |||||
.PHONY : default_target | |||||
# Allow only one "make -f Makefile2" at a time, but pass parallelism. | |||||
.NOTPARALLEL: | |||||
#============================================================================= | |||||
# Special targets provided by cmake. | |||||
# Disable implicit rules so canonical targets will work. | |||||
.SUFFIXES: | |||||
# Remove some rules from gmake that .SUFFIXES does not remove. | |||||
SUFFIXES = | |||||
.SUFFIXES: .hpux_make_needs_suffix_list | |||||
# Suppress display of executed commands. | |||||
$(VERBOSE).SILENT: | |||||
# A target that is always out of date. | |||||
cmake_force: | |||||
.PHONY : cmake_force | |||||
#============================================================================= | |||||
# Set environment variables for the build. | |||||
# The shell in which to execute make rules. | |||||
SHELL = /bin/sh | |||||
# The CMake executable. | |||||
CMAKE_COMMAND = /Applications/CMake.app/Contents/bin/cmake | |||||
# The command to remove a file. | |||||
RM = /Applications/CMake.app/Contents/bin/cmake -E remove -f | |||||
# Escaping for special characters. | |||||
EQUALS = = | |||||
# The top-level source directory on which CMake was run. | |||||
CMAKE_SOURCE_DIR = /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app | |||||
# The top-level build directory on which CMake was run. | |||||
CMAKE_BINARY_DIR = /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app | |||||
#============================================================================= | |||||
# Targets provided globally by CMake. | |||||
# Special rule for the target rebuild_cache | |||||
rebuild_cache: | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." | |||||
/Applications/CMake.app/Contents/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) | |||||
.PHONY : rebuild_cache | |||||
# Special rule for the target rebuild_cache | |||||
rebuild_cache/fast: rebuild_cache | |||||
.PHONY : rebuild_cache/fast | |||||
# Special rule for the target edit_cache | |||||
edit_cache: | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." | |||||
/Applications/CMake.app/Contents/bin/ccmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) | |||||
.PHONY : edit_cache | |||||
# Special rule for the target edit_cache | |||||
edit_cache/fast: edit_cache | |||||
.PHONY : edit_cache/fast | |||||
# The main all target | |||||
all: cmake_check_build_system | |||||
$(CMAKE_COMMAND) -E cmake_progress_start /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/CMakeFiles /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/CMakeFiles/progress.marks | |||||
$(MAKE) -f CMakeFiles/Makefile2 all | |||||
$(CMAKE_COMMAND) -E cmake_progress_start /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/CMakeFiles 0 | |||||
.PHONY : all | |||||
# The main clean target | |||||
clean: | |||||
$(MAKE) -f CMakeFiles/Makefile2 clean | |||||
.PHONY : clean | |||||
# The main clean target | |||||
clean/fast: clean | |||||
.PHONY : clean/fast | |||||
# Prepare targets for installation. | |||||
preinstall: all | |||||
$(MAKE) -f CMakeFiles/Makefile2 preinstall | |||||
.PHONY : preinstall | |||||
# Prepare targets for installation. | |||||
preinstall/fast: | |||||
$(MAKE) -f CMakeFiles/Makefile2 preinstall | |||||
.PHONY : preinstall/fast | |||||
# clear depends | |||||
depend: | |||||
$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 | |||||
.PHONY : depend | |||||
#============================================================================= | |||||
# Target rules for targets named hyperlpr | |||||
# Build rule for target. | |||||
hyperlpr: cmake_check_build_system | |||||
$(MAKE) -f CMakeFiles/Makefile2 hyperlpr | |||||
.PHONY : hyperlpr | |||||
# fast build rule for target. | |||||
hyperlpr/fast: | |||||
$(MAKE) -f src/main/cpp/CMakeFiles/hyperlpr.dir/build.make src/main/cpp/CMakeFiles/hyperlpr.dir/build | |||||
.PHONY : hyperlpr/fast | |||||
# Help Target | |||||
help: | |||||
@echo "The following are some of the valid targets for this Makefile:" | |||||
@echo "... all (the default if no target is provided)" | |||||
@echo "... clean" | |||||
@echo "... depend" | |||||
@echo "... rebuild_cache" | |||||
@echo "... edit_cache" | |||||
@echo "... hyperlpr" | |||||
.PHONY : help | |||||
#============================================================================= | |||||
# Special targets to cleanup operation of make. | |||||
# Special rule to run CMake to check the build system integrity. | |||||
# No rule that depends on this can have commands that come from listfiles | |||||
# because they might be regenerated. | |||||
cmake_check_build_system: | |||||
$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 | |||||
.PHONY : cmake_check_build_system | |||||
@@ -0,0 +1,50 @@ | |||||
# Install script for directory: /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app | |||||
# Set the install prefix | |||||
if(NOT DEFINED CMAKE_INSTALL_PREFIX) | |||||
set(CMAKE_INSTALL_PREFIX "/usr/local") | |||||
endif() | |||||
string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") | |||||
# Set the install configuration name. | |||||
if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) | |||||
if(BUILD_TYPE) | |||||
string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" | |||||
CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") | |||||
else() | |||||
set(CMAKE_INSTALL_CONFIG_NAME "") | |||||
endif() | |||||
message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") | |||||
endif() | |||||
# Set the component getting installed. | |||||
if(NOT CMAKE_INSTALL_COMPONENT) | |||||
if(COMPONENT) | |||||
message(STATUS "Install component: \"${COMPONENT}\"") | |||||
set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") | |||||
else() | |||||
set(CMAKE_INSTALL_COMPONENT) | |||||
endif() | |||||
endif() | |||||
# Is this installation the result of a crosscompile? | |||||
if(NOT DEFINED CMAKE_CROSSCOMPILING) | |||||
set(CMAKE_CROSSCOMPILING "FALSE") | |||||
endif() | |||||
if(NOT CMAKE_INSTALL_LOCAL_ONLY) | |||||
# Include the install script for each subdirectory. | |||||
include("/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/cmake_install.cmake") | |||||
endif() | |||||
if(CMAKE_INSTALL_COMPONENT) | |||||
set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") | |||||
else() | |||||
set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") | |||||
endif() | |||||
string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT | |||||
"${CMAKE_INSTALL_MANIFEST_FILES}") | |||||
file(WRITE "/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/${CMAKE_INSTALL_MANIFEST}" | |||||
"${CMAKE_INSTALL_MANIFEST_CONTENT}") |
@@ -0,0 +1,342 @@ | |||||
# This is the CMakeCache file. | |||||
# For build in directory: /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp | |||||
# It was generated by CMake: /Applications/CMake.app/Contents/bin/cmake | |||||
# You can edit this file to change values found and used by cmake. | |||||
# If you do not want to change any of the values, simply exit the editor. | |||||
# If you do want to change a value, simply edit, save, and exit the editor. | |||||
# The syntax for the file is as follows: | |||||
# KEY:TYPE=VALUE | |||||
# KEY is the name of a variable in the cache. | |||||
# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. | |||||
# VALUE is the current value for the KEY. | |||||
######################## | |||||
# EXTERNAL cache entries | |||||
######################## | |||||
//Path to a program. | |||||
CMAKE_AR:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ar | |||||
//Choose the type of build, options are: None Debug Release RelWithDebInfo | |||||
// MinSizeRel ... | |||||
CMAKE_BUILD_TYPE:STRING= | |||||
//Enable/Disable color output during build. | |||||
CMAKE_COLOR_MAKEFILE:BOOL=ON | |||||
//CXX compiler | |||||
CMAKE_CXX_COMPILER:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/c++ | |||||
//Flags used by the CXX compiler during all build types. | |||||
CMAKE_CXX_FLAGS:STRING= | |||||
//Flags used by the CXX compiler during DEBUG builds. | |||||
CMAKE_CXX_FLAGS_DEBUG:STRING=-g | |||||
//Flags used by the CXX compiler during MINSIZEREL builds. | |||||
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG | |||||
//Flags used by the CXX compiler during RELEASE builds. | |||||
CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG | |||||
//Flags used by the CXX compiler during RELWITHDEBINFO builds. | |||||
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG | |||||
//C compiler | |||||
CMAKE_C_COMPILER:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/cc | |||||
//Flags used by the C compiler during all build types. | |||||
CMAKE_C_FLAGS:STRING= | |||||
//Flags used by the C compiler during DEBUG builds. | |||||
CMAKE_C_FLAGS_DEBUG:STRING=-g | |||||
//Flags used by the C compiler during MINSIZEREL builds. | |||||
CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG | |||||
//Flags used by the C compiler during RELEASE builds. | |||||
CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG | |||||
//Flags used by the C compiler during RELWITHDEBINFO builds. | |||||
CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG | |||||
//Flags used by the linker during all build types. | |||||
CMAKE_EXE_LINKER_FLAGS:STRING= | |||||
//Flags used by the linker during DEBUG builds. | |||||
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= | |||||
//Flags used by the linker during MINSIZEREL builds. | |||||
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= | |||||
//Flags used by the linker during RELEASE builds. | |||||
CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= | |||||
//Flags used by the linker during RELWITHDEBINFO builds. | |||||
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= | |||||
//Enable/Disable output of compile commands during generation. | |||||
CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF | |||||
//Path to a program. | |||||
CMAKE_INSTALL_NAME_TOOL:FILEPATH=/usr/bin/install_name_tool | |||||
//Install path prefix, prepended onto install directories. | |||||
CMAKE_INSTALL_PREFIX:PATH=/usr/local | |||||
//Path to a program. | |||||
CMAKE_LINKER:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ld | |||||
//Path to a program. | |||||
CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make | |||||
//Flags used by the linker during the creation of modules during | |||||
// all build types. | |||||
CMAKE_MODULE_LINKER_FLAGS:STRING= | |||||
//Flags used by the linker during the creation of modules during | |||||
// DEBUG builds. | |||||
CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= | |||||
//Flags used by the linker during the creation of modules during | |||||
// MINSIZEREL builds. | |||||
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= | |||||
//Flags used by the linker during the creation of modules during | |||||
// RELEASE builds. | |||||
CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= | |||||
//Flags used by the linker during the creation of modules during | |||||
// RELWITHDEBINFO builds. | |||||
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= | |||||
//Path to a program. | |||||
CMAKE_NM:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/nm | |||||
//Path to a program. | |||||
CMAKE_OBJCOPY:FILEPATH=CMAKE_OBJCOPY-NOTFOUND | |||||
//Path to a program. | |||||
CMAKE_OBJDUMP:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/objdump | |||||
//Build architectures for OSX | |||||
CMAKE_OSX_ARCHITECTURES:STRING= | |||||
//Minimum OS X version to target for deployment (at runtime); newer | |||||
// APIs weak linked. Set to empty string for default value. | |||||
CMAKE_OSX_DEPLOYMENT_TARGET:STRING= | |||||
//The product will be built against the headers and libraries located | |||||
// inside the indicated SDK. | |||||
CMAKE_OSX_SYSROOT:STRING= | |||||
//Value Computed by CMake | |||||
CMAKE_PROJECT_NAME:STATIC=Project | |||||
//Path to a program. | |||||
CMAKE_RANLIB:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ranlib | |||||
//Flags used by the linker during the creation of shared libraries | |||||
// during all build types. | |||||
CMAKE_SHARED_LINKER_FLAGS:STRING= | |||||
//Flags used by the linker during the creation of shared libraries | |||||
// during DEBUG builds. | |||||
CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= | |||||
//Flags used by the linker during the creation of shared libraries | |||||
// during MINSIZEREL builds. | |||||
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= | |||||
//Flags used by the linker during the creation of shared libraries | |||||
// during RELEASE builds. | |||||
CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= | |||||
//Flags used by the linker during the creation of shared libraries | |||||
// during RELWITHDEBINFO builds. | |||||
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= | |||||
//If set, runtime paths are not added when installing shared libraries, | |||||
// but are added when building. | |||||
CMAKE_SKIP_INSTALL_RPATH:BOOL=NO | |||||
//If set, runtime paths are not added when using shared libraries. | |||||
CMAKE_SKIP_RPATH:BOOL=NO | |||||
//Flags used by the linker during the creation of static libraries | |||||
// during all build types. | |||||
CMAKE_STATIC_LINKER_FLAGS:STRING= | |||||
//Flags used by the linker during the creation of static libraries | |||||
// during DEBUG builds. | |||||
CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= | |||||
//Flags used by the linker during the creation of static libraries | |||||
// during MINSIZEREL builds. | |||||
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= | |||||
//Flags used by the linker during the creation of static libraries | |||||
// during RELEASE builds. | |||||
CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= | |||||
//Flags used by the linker during the creation of static libraries | |||||
// during RELWITHDEBINFO builds. | |||||
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= | |||||
//Path to a program. | |||||
CMAKE_STRIP:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/strip | |||||
//If this value is on, makefiles will be generated without the | |||||
// .SILENT directive, and all commands will be echoed to the console | |||||
// during the make. This is useful for debugging only. With Visual | |||||
// Studio IDE projects all commands are done without /nologo. | |||||
CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE | |||||
//Value Computed by CMake | |||||
Project_BINARY_DIR:STATIC=/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp | |||||
//Value Computed by CMake | |||||
Project_SOURCE_DIR:STATIC=/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp | |||||
//Dependencies for the target | |||||
hyperlpr_LIB_DEPENDS:STATIC=general;opencv_highgui;general;opencv_features2d;general;opencv_shape;general;opencv_imgcodecs;general;opencv_ml;general;opencv_videoio;general;opencv_dnn;general;opencv_flann;general;opencv_objdetect;general;opencv_core;general;opencv_calib3d;general;opencv_video;general;opencv_superres;general;opencv_photo;general;opencv_imgproc;general;opencv_stitching;general;opencv_videostab; | |||||
######################## | |||||
# INTERNAL cache entries | |||||
######################## | |||||
//ADVANCED property for variable: CMAKE_AR | |||||
CMAKE_AR-ADVANCED:INTERNAL=1 | |||||
//This is the directory where this CMakeCache.txt was created | |||||
CMAKE_CACHEFILE_DIR:INTERNAL=/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp | |||||
//Major version of cmake used to create the current loaded cache | |||||
CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 | |||||
//Minor version of cmake used to create the current loaded cache | |||||
CMAKE_CACHE_MINOR_VERSION:INTERNAL=11 | |||||
//Patch version of cmake used to create the current loaded cache | |||||
CMAKE_CACHE_PATCH_VERSION:INTERNAL=0 | |||||
//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE | |||||
CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 | |||||
//Path to CMake executable. | |||||
CMAKE_COMMAND:INTERNAL=/Applications/CMake.app/Contents/bin/cmake | |||||
//Path to cpack program executable. | |||||
CMAKE_CPACK_COMMAND:INTERNAL=/Applications/CMake.app/Contents/bin/cpack | |||||
//Path to ctest program executable. | |||||
CMAKE_CTEST_COMMAND:INTERNAL=/Applications/CMake.app/Contents/bin/ctest | |||||
//ADVANCED property for variable: CMAKE_CXX_COMPILER | |||||
CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_CXX_FLAGS | |||||
CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG | |||||
CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL | |||||
CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE | |||||
CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO | |||||
CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_C_COMPILER | |||||
CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_C_FLAGS | |||||
CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG | |||||
CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL | |||||
CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE | |||||
CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO | |||||
CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 | |||||
//Path to cache edit program executable. | |||||
CMAKE_EDIT_COMMAND:INTERNAL=/Applications/CMake.app/Contents/bin/ccmake | |||||
//Executable file format | |||||
CMAKE_EXECUTABLE_FORMAT:INTERNAL=Unknown | |||||
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS | |||||
CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG | |||||
CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL | |||||
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE | |||||
CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO | |||||
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS | |||||
CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 | |||||
//Name of external makefile project generator. | |||||
CMAKE_EXTRA_GENERATOR:INTERNAL= | |||||
//Name of generator. | |||||
CMAKE_GENERATOR:INTERNAL=Unix Makefiles | |||||
//Generator instance identifier. | |||||
CMAKE_GENERATOR_INSTANCE:INTERNAL= | |||||
//Name of generator platform. | |||||
CMAKE_GENERATOR_PLATFORM:INTERNAL= | |||||
//Name of generator toolset. | |||||
CMAKE_GENERATOR_TOOLSET:INTERNAL= | |||||
//Source directory with the top level CMakeLists.txt file for this | |||||
// project | |||||
CMAKE_HOME_DIRECTORY:INTERNAL=/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp | |||||
//ADVANCED property for variable: CMAKE_INSTALL_NAME_TOOL | |||||
CMAKE_INSTALL_NAME_TOOL-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_LINKER | |||||
CMAKE_LINKER-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_MAKE_PROGRAM | |||||
CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS | |||||
CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG | |||||
CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL | |||||
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE | |||||
CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO | |||||
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_NM | |||||
CMAKE_NM-ADVANCED:INTERNAL=1 | |||||
//number of local generators | |||||
CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_OBJCOPY | |||||
CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_OBJDUMP | |||||
CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 | |||||
//Platform information initialized | |||||
CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_RANLIB | |||||
CMAKE_RANLIB-ADVANCED:INTERNAL=1 | |||||
//Path to CMake installation. | |||||
CMAKE_ROOT:INTERNAL=/Applications/CMake.app/Contents/share/cmake-3.11 | |||||
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS | |||||
CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG | |||||
CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL | |||||
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE | |||||
CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO | |||||
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH | |||||
CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_SKIP_RPATH | |||||
CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS | |||||
CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG | |||||
CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL | |||||
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE | |||||
CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO | |||||
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 | |||||
//ADVANCED property for variable: CMAKE_STRIP | |||||
CMAKE_STRIP-ADVANCED:INTERNAL=1 | |||||
//uname command | |||||
CMAKE_UNAME:INTERNAL=/usr/bin/uname | |||||
//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE | |||||
CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 | |||||
//Details about finding OpenCV | |||||
FIND_PACKAGE_MESSAGE_DETAILS_OpenCV:INTERNAL=[/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/opencv342/sdk/native/jni][v3.4.2()] | |||||
@@ -0,0 +1,73 @@ | |||||
set(CMAKE_C_COMPILER "/Library/Developer/CommandLineTools/usr/bin/cc") | |||||
set(CMAKE_C_COMPILER_ARG1 "") | |||||
set(CMAKE_C_COMPILER_ID "AppleClang") | |||||
set(CMAKE_C_COMPILER_VERSION "9.0.0.9000038") | |||||
set(CMAKE_C_COMPILER_VERSION_INTERNAL "") | |||||
set(CMAKE_C_COMPILER_WRAPPER "") | |||||
set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11") | |||||
set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert") | |||||
set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") | |||||
set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") | |||||
set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") | |||||
set(CMAKE_C_PLATFORM_ID "Darwin") | |||||
set(CMAKE_C_SIMULATE_ID "") | |||||
set(CMAKE_C_SIMULATE_VERSION "") | |||||
set(CMAKE_AR "/Library/Developer/CommandLineTools/usr/bin/ar") | |||||
set(CMAKE_C_COMPILER_AR "") | |||||
set(CMAKE_RANLIB "/Library/Developer/CommandLineTools/usr/bin/ranlib") | |||||
set(CMAKE_C_COMPILER_RANLIB "") | |||||
set(CMAKE_LINKER "/Library/Developer/CommandLineTools/usr/bin/ld") | |||||
set(CMAKE_COMPILER_IS_GNUCC ) | |||||
set(CMAKE_C_COMPILER_LOADED 1) | |||||
set(CMAKE_C_COMPILER_WORKS TRUE) | |||||
set(CMAKE_C_ABI_COMPILED TRUE) | |||||
set(CMAKE_COMPILER_IS_MINGW ) | |||||
set(CMAKE_COMPILER_IS_CYGWIN ) | |||||
if(CMAKE_COMPILER_IS_CYGWIN) | |||||
set(CYGWIN 1) | |||||
set(UNIX 1) | |||||
endif() | |||||
set(CMAKE_C_COMPILER_ENV_VAR "CC") | |||||
if(CMAKE_COMPILER_IS_MINGW) | |||||
set(MINGW 1) | |||||
endif() | |||||
set(CMAKE_C_COMPILER_ID_RUN 1) | |||||
set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) | |||||
set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) | |||||
set(CMAKE_C_LINKER_PREFERENCE 10) | |||||
# Save compiler ABI information. | |||||
set(CMAKE_C_SIZEOF_DATA_PTR "8") | |||||
set(CMAKE_C_COMPILER_ABI "") | |||||
set(CMAKE_C_LIBRARY_ARCHITECTURE "") | |||||
if(CMAKE_C_SIZEOF_DATA_PTR) | |||||
set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") | |||||
endif() | |||||
if(CMAKE_C_COMPILER_ABI) | |||||
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") | |||||
endif() | |||||
if(CMAKE_C_LIBRARY_ARCHITECTURE) | |||||
set(CMAKE_LIBRARY_ARCHITECTURE "") | |||||
endif() | |||||
set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") | |||||
if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) | |||||
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") | |||||
endif() | |||||
set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "") | |||||
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib;/usr/local/lib") | |||||
set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Library/Frameworks;/System/Library/Frameworks") |
@@ -0,0 +1,75 @@ | |||||
set(CMAKE_CXX_COMPILER "/Library/Developer/CommandLineTools/usr/bin/c++") | |||||
set(CMAKE_CXX_COMPILER_ARG1 "") | |||||
set(CMAKE_CXX_COMPILER_ID "AppleClang") | |||||
set(CMAKE_CXX_COMPILER_VERSION "9.0.0.9000038") | |||||
set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") | |||||
set(CMAKE_CXX_COMPILER_WRAPPER "") | |||||
set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "98") | |||||
set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17") | |||||
set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") | |||||
set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") | |||||
set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") | |||||
set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") | |||||
set(CMAKE_CXX_PLATFORM_ID "Darwin") | |||||
set(CMAKE_CXX_SIMULATE_ID "") | |||||
set(CMAKE_CXX_SIMULATE_VERSION "") | |||||
set(CMAKE_AR "/Library/Developer/CommandLineTools/usr/bin/ar") | |||||
set(CMAKE_CXX_COMPILER_AR "") | |||||
set(CMAKE_RANLIB "/Library/Developer/CommandLineTools/usr/bin/ranlib") | |||||
set(CMAKE_CXX_COMPILER_RANLIB "") | |||||
set(CMAKE_LINKER "/Library/Developer/CommandLineTools/usr/bin/ld") | |||||
set(CMAKE_COMPILER_IS_GNUCXX ) | |||||
set(CMAKE_CXX_COMPILER_LOADED 1) | |||||
set(CMAKE_CXX_COMPILER_WORKS TRUE) | |||||
set(CMAKE_CXX_ABI_COMPILED TRUE) | |||||
set(CMAKE_COMPILER_IS_MINGW ) | |||||
set(CMAKE_COMPILER_IS_CYGWIN ) | |||||
if(CMAKE_COMPILER_IS_CYGWIN) | |||||
set(CYGWIN 1) | |||||
set(UNIX 1) | |||||
endif() | |||||
set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") | |||||
if(CMAKE_COMPILER_IS_MINGW) | |||||
set(MINGW 1) | |||||
endif() | |||||
set(CMAKE_CXX_COMPILER_ID_RUN 1) | |||||
set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) | |||||
set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;mm;CPP) | |||||
set(CMAKE_CXX_LINKER_PREFERENCE 30) | |||||
set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) | |||||
# Save compiler ABI information. | |||||
set(CMAKE_CXX_SIZEOF_DATA_PTR "8") | |||||
set(CMAKE_CXX_COMPILER_ABI "") | |||||
set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") | |||||
if(CMAKE_CXX_SIZEOF_DATA_PTR) | |||||
set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") | |||||
endif() | |||||
if(CMAKE_CXX_COMPILER_ABI) | |||||
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") | |||||
endif() | |||||
if(CMAKE_CXX_LIBRARY_ARCHITECTURE) | |||||
set(CMAKE_LIBRARY_ARCHITECTURE "") | |||||
endif() | |||||
set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") | |||||
if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) | |||||
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") | |||||
endif() | |||||
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++") | |||||
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib;/usr/local/lib") | |||||
set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Library/Frameworks;/System/Library/Frameworks") |
@@ -0,0 +1,15 @@ | |||||
set(CMAKE_HOST_SYSTEM "Darwin-16.7.0") | |||||
set(CMAKE_HOST_SYSTEM_NAME "Darwin") | |||||
set(CMAKE_HOST_SYSTEM_VERSION "16.7.0") | |||||
set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") | |||||
set(CMAKE_SYSTEM "Darwin-16.7.0") | |||||
set(CMAKE_SYSTEM_NAME "Darwin") | |||||
set(CMAKE_SYSTEM_VERSION "16.7.0") | |||||
set(CMAKE_SYSTEM_PROCESSOR "x86_64") | |||||
set(CMAKE_CROSSCOMPILING "FALSE") | |||||
set(CMAKE_SYSTEM_LOADED 1) |
@@ -0,0 +1,623 @@ | |||||
#ifdef __cplusplus | |||||
# error "A C++ compiler has been selected for C." | |||||
#endif | |||||
#if defined(__18CXX) | |||||
# define ID_VOID_MAIN | |||||
#endif | |||||
#if defined(__CLASSIC_C__) | |||||
/* cv-qualifiers did not exist in K&R C */ | |||||
# define const | |||||
# define volatile | |||||
#endif | |||||
/* Version number components: V=Version, R=Revision, P=Patch | |||||
Version date components: YYYY=Year, MM=Month, DD=Day */ | |||||
#if defined(__INTEL_COMPILER) || defined(__ICC) | |||||
# define COMPILER_ID "Intel" | |||||
# if defined(_MSC_VER) | |||||
# define SIMULATE_ID "MSVC" | |||||
# endif | |||||
/* __INTEL_COMPILER = VRP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) | |||||
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) | |||||
# if defined(__INTEL_COMPILER_UPDATE) | |||||
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) | |||||
# else | |||||
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) | |||||
# endif | |||||
# if defined(__INTEL_COMPILER_BUILD_DATE) | |||||
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ | |||||
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) | |||||
# endif | |||||
# if defined(_MSC_VER) | |||||
/* _MSC_VER = VVRR */ | |||||
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) | |||||
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) | |||||
# endif | |||||
#elif defined(__PATHCC__) | |||||
# define COMPILER_ID "PathScale" | |||||
# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) | |||||
# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) | |||||
# if defined(__PATHCC_PATCHLEVEL__) | |||||
# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) | |||||
# endif | |||||
#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) | |||||
# define COMPILER_ID "Embarcadero" | |||||
# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) | |||||
# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) | |||||
# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) | |||||
#elif defined(__BORLANDC__) | |||||
# define COMPILER_ID "Borland" | |||||
/* __BORLANDC__ = 0xVRR */ | |||||
# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) | |||||
# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) | |||||
#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 | |||||
# define COMPILER_ID "Watcom" | |||||
/* __WATCOMC__ = VVRR */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) | |||||
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) | |||||
# if (__WATCOMC__ % 10) > 0 | |||||
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) | |||||
# endif | |||||
#elif defined(__WATCOMC__) | |||||
# define COMPILER_ID "OpenWatcom" | |||||
/* __WATCOMC__ = VVRP + 1100 */ | |||||
# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) | |||||
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) | |||||
# if (__WATCOMC__ % 10) > 0 | |||||
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) | |||||
# endif | |||||
#elif defined(__SUNPRO_C) | |||||
# define COMPILER_ID "SunPro" | |||||
# if __SUNPRO_C >= 0x5100 | |||||
/* __SUNPRO_C = 0xVRRP */ | |||||
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) | |||||
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) | |||||
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) | |||||
# else | |||||
/* __SUNPRO_CC = 0xVRP */ | |||||
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) | |||||
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) | |||||
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) | |||||
# endif | |||||
#elif defined(__HP_cc) | |||||
# define COMPILER_ID "HP" | |||||
/* __HP_cc = VVRRPP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) | |||||
# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) | |||||
# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) | |||||
#elif defined(__DECC) | |||||
# define COMPILER_ID "Compaq" | |||||
/* __DECC_VER = VVRRTPPPP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) | |||||
# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) | |||||
# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) | |||||
#elif defined(__IBMC__) && defined(__COMPILER_VER__) | |||||
# define COMPILER_ID "zOS" | |||||
# if defined(__ibmxl__) | |||||
# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) | |||||
# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) | |||||
# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) | |||||
# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) | |||||
# else | |||||
/* __IBMC__ = VRP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) | |||||
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) | |||||
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) | |||||
# endif | |||||
#elif defined(__ibmxl__) || (defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800) | |||||
# define COMPILER_ID "XL" | |||||
# if defined(__ibmxl__) | |||||
# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) | |||||
# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) | |||||
# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) | |||||
# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) | |||||
# else | |||||
/* __IBMC__ = VRP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) | |||||
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) | |||||
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) | |||||
# endif | |||||
#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 | |||||
# define COMPILER_ID "VisualAge" | |||||
# if defined(__ibmxl__) | |||||
# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) | |||||
# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) | |||||
# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) | |||||
# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) | |||||
# else | |||||
/* __IBMC__ = VRP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) | |||||
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) | |||||
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) | |||||
# endif | |||||
#elif defined(__PGI) | |||||
# define COMPILER_ID "PGI" | |||||
# define COMPILER_VERSION_MAJOR DEC(__PGIC__) | |||||
# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) | |||||
# if defined(__PGIC_PATCHLEVEL__) | |||||
# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) | |||||
# endif | |||||
#elif defined(_CRAYC) | |||||
# define COMPILER_ID "Cray" | |||||
# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) | |||||
# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) | |||||
#elif defined(__TI_COMPILER_VERSION__) | |||||
# define COMPILER_ID "TI" | |||||
/* __TI_COMPILER_VERSION__ = VVVRRRPPP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) | |||||
# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) | |||||
# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) | |||||
#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) | |||||
# define COMPILER_ID "Fujitsu" | |||||
#elif defined(__TINYC__) | |||||
# define COMPILER_ID "TinyCC" | |||||
#elif defined(__BCC__) | |||||
# define COMPILER_ID "Bruce" | |||||
#elif defined(__SCO_VERSION__) | |||||
# define COMPILER_ID "SCO" | |||||
#elif defined(__clang__) && defined(__apple_build_version__) | |||||
# define COMPILER_ID "AppleClang" | |||||
# if defined(_MSC_VER) | |||||
# define SIMULATE_ID "MSVC" | |||||
# endif | |||||
# define COMPILER_VERSION_MAJOR DEC(__clang_major__) | |||||
# define COMPILER_VERSION_MINOR DEC(__clang_minor__) | |||||
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) | |||||
# if defined(_MSC_VER) | |||||
/* _MSC_VER = VVRR */ | |||||
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) | |||||
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) | |||||
# endif | |||||
# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) | |||||
#elif defined(__clang__) | |||||
# define COMPILER_ID "Clang" | |||||
# if defined(_MSC_VER) | |||||
# define SIMULATE_ID "MSVC" | |||||
# endif | |||||
# define COMPILER_VERSION_MAJOR DEC(__clang_major__) | |||||
# define COMPILER_VERSION_MINOR DEC(__clang_minor__) | |||||
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) | |||||
# if defined(_MSC_VER) | |||||
/* _MSC_VER = VVRR */ | |||||
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) | |||||
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) | |||||
# endif | |||||
#elif defined(__GNUC__) | |||||
# define COMPILER_ID "GNU" | |||||
# define COMPILER_VERSION_MAJOR DEC(__GNUC__) | |||||
# if defined(__GNUC_MINOR__) | |||||
# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) | |||||
# endif | |||||
# if defined(__GNUC_PATCHLEVEL__) | |||||
# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) | |||||
# endif | |||||
#elif defined(_MSC_VER) | |||||
# define COMPILER_ID "MSVC" | |||||
/* _MSC_VER = VVRR */ | |||||
# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) | |||||
# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) | |||||
# if defined(_MSC_FULL_VER) | |||||
# if _MSC_VER >= 1400 | |||||
/* _MSC_FULL_VER = VVRRPPPPP */ | |||||
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) | |||||
# else | |||||
/* _MSC_FULL_VER = VVRRPPPP */ | |||||
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) | |||||
# endif | |||||
# endif | |||||
# if defined(_MSC_BUILD) | |||||
# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) | |||||
# endif | |||||
#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) | |||||
# define COMPILER_ID "ADSP" | |||||
#if defined(__VISUALDSPVERSION__) | |||||
/* __VISUALDSPVERSION__ = 0xVVRRPP00 */ | |||||
# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) | |||||
# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) | |||||
# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) | |||||
#endif | |||||
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) | |||||
# define COMPILER_ID "IAR" | |||||
# if defined(__VER__) | |||||
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) | |||||
# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) | |||||
# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) | |||||
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) | |||||
# endif | |||||
#elif defined(__ARMCC_VERSION) | |||||
# define COMPILER_ID "ARMCC" | |||||
#if __ARMCC_VERSION >= 1000000 | |||||
/* __ARMCC_VERSION = VRRPPPP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) | |||||
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) | |||||
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) | |||||
#else | |||||
/* __ARMCC_VERSION = VRPPPP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) | |||||
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) | |||||
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) | |||||
#endif | |||||
#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) | |||||
# define COMPILER_ID "SDCC" | |||||
# if defined(__SDCC_VERSION_MAJOR) | |||||
# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) | |||||
# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) | |||||
# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) | |||||
# else | |||||
/* SDCC = VRP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(SDCC/100) | |||||
# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) | |||||
# define COMPILER_VERSION_PATCH DEC(SDCC % 10) | |||||
# endif | |||||
#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) | |||||
# define COMPILER_ID "MIPSpro" | |||||
# if defined(_SGI_COMPILER_VERSION) | |||||
/* _SGI_COMPILER_VERSION = VRP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100) | |||||
# define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10) | |||||
# define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10) | |||||
# else | |||||
/* _COMPILER_VERSION = VRP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100) | |||||
# define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10) | |||||
# define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10) | |||||
# endif | |||||
/* These compilers are either not known or too old to define an | |||||
identification macro. Try to identify the platform and guess that | |||||
it is the native compiler. */ | |||||
#elif defined(__sgi) | |||||
# define COMPILER_ID "MIPSpro" | |||||
#elif defined(__hpux) || defined(__hpua) | |||||
# define COMPILER_ID "HP" | |||||
#else /* unknown compiler */ | |||||
# define COMPILER_ID "" | |||||
#endif | |||||
/* Construct the string literal in pieces to prevent the source from | |||||
getting matched. Store it in a pointer rather than an array | |||||
because some compilers will just produce instructions to fill the | |||||
array rather than assigning a pointer to a static array. */ | |||||
char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; | |||||
#ifdef SIMULATE_ID | |||||
char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; | |||||
#endif | |||||
#ifdef __QNXNTO__ | |||||
char const* qnxnto = "INFO" ":" "qnxnto[]"; | |||||
#endif | |||||
#if defined(__CRAYXE) || defined(__CRAYXC) | |||||
char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; | |||||
#endif | |||||
#define STRINGIFY_HELPER(X) #X | |||||
#define STRINGIFY(X) STRINGIFY_HELPER(X) | |||||
/* Identify known platforms by name. */ | |||||
#if defined(__linux) || defined(__linux__) || defined(linux) | |||||
# define PLATFORM_ID "Linux" | |||||
#elif defined(__CYGWIN__) | |||||
# define PLATFORM_ID "Cygwin" | |||||
#elif defined(__MINGW32__) | |||||
# define PLATFORM_ID "MinGW" | |||||
#elif defined(__APPLE__) | |||||
# define PLATFORM_ID "Darwin" | |||||
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) | |||||
# define PLATFORM_ID "Windows" | |||||
#elif defined(__FreeBSD__) || defined(__FreeBSD) | |||||
# define PLATFORM_ID "FreeBSD" | |||||
#elif defined(__NetBSD__) || defined(__NetBSD) | |||||
# define PLATFORM_ID "NetBSD" | |||||
#elif defined(__OpenBSD__) || defined(__OPENBSD) | |||||
# define PLATFORM_ID "OpenBSD" | |||||
#elif defined(__sun) || defined(sun) | |||||
# define PLATFORM_ID "SunOS" | |||||
#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) | |||||
# define PLATFORM_ID "AIX" | |||||
#elif defined(__sgi) || defined(__sgi__) || defined(_SGI) | |||||
# define PLATFORM_ID "IRIX" | |||||
#elif defined(__hpux) || defined(__hpux__) | |||||
# define PLATFORM_ID "HP-UX" | |||||
#elif defined(__HAIKU__) | |||||
# define PLATFORM_ID "Haiku" | |||||
#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) | |||||
# define PLATFORM_ID "BeOS" | |||||
#elif defined(__QNX__) || defined(__QNXNTO__) | |||||
# define PLATFORM_ID "QNX" | |||||
#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) | |||||
# define PLATFORM_ID "Tru64" | |||||
#elif defined(__riscos) || defined(__riscos__) | |||||
# define PLATFORM_ID "RISCos" | |||||
#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) | |||||
# define PLATFORM_ID "SINIX" | |||||
#elif defined(__UNIX_SV__) | |||||
# define PLATFORM_ID "UNIX_SV" | |||||
#elif defined(__bsdos__) | |||||
# define PLATFORM_ID "BSDOS" | |||||
#elif defined(_MPRAS) || defined(MPRAS) | |||||
# define PLATFORM_ID "MP-RAS" | |||||
#elif defined(__osf) || defined(__osf__) | |||||
# define PLATFORM_ID "OSF1" | |||||
#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) | |||||
# define PLATFORM_ID "SCO_SV" | |||||
#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) | |||||
# define PLATFORM_ID "ULTRIX" | |||||
#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) | |||||
# define PLATFORM_ID "Xenix" | |||||
#elif defined(__WATCOMC__) | |||||
# if defined(__LINUX__) | |||||
# define PLATFORM_ID "Linux" | |||||
# elif defined(__DOS__) | |||||
# define PLATFORM_ID "DOS" | |||||
# elif defined(__OS2__) | |||||
# define PLATFORM_ID "OS2" | |||||
# elif defined(__WINDOWS__) | |||||
# define PLATFORM_ID "Windows3x" | |||||
# else /* unknown platform */ | |||||
# define PLATFORM_ID | |||||
# endif | |||||
#else /* unknown platform */ | |||||
# define PLATFORM_ID | |||||
#endif | |||||
/* For windows compilers MSVC and Intel we can determine | |||||
the architecture of the compiler being used. This is because | |||||
the compilers do not have flags that can change the architecture, | |||||
but rather depend on which compiler is being used | |||||
*/ | |||||
#if defined(_WIN32) && defined(_MSC_VER) | |||||
# if defined(_M_IA64) | |||||
# define ARCHITECTURE_ID "IA64" | |||||
# elif defined(_M_X64) || defined(_M_AMD64) | |||||
# define ARCHITECTURE_ID "x64" | |||||
# elif defined(_M_IX86) | |||||
# define ARCHITECTURE_ID "X86" | |||||
# elif defined(_M_ARM64) | |||||
# define ARCHITECTURE_ID "ARM64" | |||||
# elif defined(_M_ARM) | |||||
# if _M_ARM == 4 | |||||
# define ARCHITECTURE_ID "ARMV4I" | |||||
# elif _M_ARM == 5 | |||||
# define ARCHITECTURE_ID "ARMV5I" | |||||
# else | |||||
# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) | |||||
# endif | |||||
# elif defined(_M_MIPS) | |||||
# define ARCHITECTURE_ID "MIPS" | |||||
# elif defined(_M_SH) | |||||
# define ARCHITECTURE_ID "SHx" | |||||
# else /* unknown architecture */ | |||||
# define ARCHITECTURE_ID "" | |||||
# endif | |||||
#elif defined(__WATCOMC__) | |||||
# if defined(_M_I86) | |||||
# define ARCHITECTURE_ID "I86" | |||||
# elif defined(_M_IX86) | |||||
# define ARCHITECTURE_ID "X86" | |||||
# else /* unknown architecture */ | |||||
# define ARCHITECTURE_ID "" | |||||
# endif | |||||
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) | |||||
# if defined(__ICCARM__) | |||||
# define ARCHITECTURE_ID "ARM" | |||||
# elif defined(__ICCAVR__) | |||||
# define ARCHITECTURE_ID "AVR" | |||||
# else /* unknown architecture */ | |||||
# define ARCHITECTURE_ID "" | |||||
# endif | |||||
#else | |||||
# define ARCHITECTURE_ID | |||||
#endif | |||||
/* Convert integer to decimal digit literals. */ | |||||
#define DEC(n) \ | |||||
('0' + (((n) / 10000000)%10)), \ | |||||
('0' + (((n) / 1000000)%10)), \ | |||||
('0' + (((n) / 100000)%10)), \ | |||||
('0' + (((n) / 10000)%10)), \ | |||||
('0' + (((n) / 1000)%10)), \ | |||||
('0' + (((n) / 100)%10)), \ | |||||
('0' + (((n) / 10)%10)), \ | |||||
('0' + ((n) % 10)) | |||||
/* Convert integer to hex digit literals. */ | |||||
#define HEX(n) \ | |||||
('0' + ((n)>>28 & 0xF)), \ | |||||
('0' + ((n)>>24 & 0xF)), \ | |||||
('0' + ((n)>>20 & 0xF)), \ | |||||
('0' + ((n)>>16 & 0xF)), \ | |||||
('0' + ((n)>>12 & 0xF)), \ | |||||
('0' + ((n)>>8 & 0xF)), \ | |||||
('0' + ((n)>>4 & 0xF)), \ | |||||
('0' + ((n) & 0xF)) | |||||
/* Construct a string literal encoding the version number components. */ | |||||
#ifdef COMPILER_VERSION_MAJOR | |||||
char const info_version[] = { | |||||
'I', 'N', 'F', 'O', ':', | |||||
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', | |||||
COMPILER_VERSION_MAJOR, | |||||
# ifdef COMPILER_VERSION_MINOR | |||||
'.', COMPILER_VERSION_MINOR, | |||||
# ifdef COMPILER_VERSION_PATCH | |||||
'.', COMPILER_VERSION_PATCH, | |||||
# ifdef COMPILER_VERSION_TWEAK | |||||
'.', COMPILER_VERSION_TWEAK, | |||||
# endif | |||||
# endif | |||||
# endif | |||||
']','\0'}; | |||||
#endif | |||||
/* Construct a string literal encoding the internal version number. */ | |||||
#ifdef COMPILER_VERSION_INTERNAL | |||||
char const info_version_internal[] = { | |||||
'I', 'N', 'F', 'O', ':', | |||||
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', | |||||
'i','n','t','e','r','n','a','l','[', | |||||
COMPILER_VERSION_INTERNAL,']','\0'}; | |||||
#endif | |||||
/* Construct a string literal encoding the version number components. */ | |||||
#ifdef SIMULATE_VERSION_MAJOR | |||||
char const info_simulate_version[] = { | |||||
'I', 'N', 'F', 'O', ':', | |||||
's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', | |||||
SIMULATE_VERSION_MAJOR, | |||||
# ifdef SIMULATE_VERSION_MINOR | |||||
'.', SIMULATE_VERSION_MINOR, | |||||
# ifdef SIMULATE_VERSION_PATCH | |||||
'.', SIMULATE_VERSION_PATCH, | |||||
# ifdef SIMULATE_VERSION_TWEAK | |||||
'.', SIMULATE_VERSION_TWEAK, | |||||
# endif | |||||
# endif | |||||
# endif | |||||
']','\0'}; | |||||
#endif | |||||
/* Construct the string literal in pieces to prevent the source from | |||||
getting matched. Store it in a pointer rather than an array | |||||
because some compilers will just produce instructions to fill the | |||||
array rather than assigning a pointer to a static array. */ | |||||
char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; | |||||
char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; | |||||
#if !defined(__STDC__) | |||||
# if (defined(_MSC_VER) && !defined(__clang__)) \ | |||||
|| (defined(__ibmxl__) || defined(__IBMC__)) | |||||
# define C_DIALECT "90" | |||||
# else | |||||
# define C_DIALECT | |||||
# endif | |||||
#elif __STDC_VERSION__ >= 201000L | |||||
# define C_DIALECT "11" | |||||
#elif __STDC_VERSION__ >= 199901L | |||||
# define C_DIALECT "99" | |||||
#else | |||||
# define C_DIALECT "90" | |||||
#endif | |||||
const char* info_language_dialect_default = | |||||
"INFO" ":" "dialect_default[" C_DIALECT "]"; | |||||
/*--------------------------------------------------------------------------*/ | |||||
#ifdef ID_VOID_MAIN | |||||
void main() {} | |||||
#else | |||||
# if defined(__CLASSIC_C__) | |||||
int main(argc, argv) int argc; char *argv[]; | |||||
# else | |||||
int main(int argc, char* argv[]) | |||||
# endif | |||||
{ | |||||
int require = 0; | |||||
require += info_compiler[argc]; | |||||
require += info_platform[argc]; | |||||
require += info_arch[argc]; | |||||
#ifdef COMPILER_VERSION_MAJOR | |||||
require += info_version[argc]; | |||||
#endif | |||||
#ifdef COMPILER_VERSION_INTERNAL | |||||
require += info_version_internal[argc]; | |||||
#endif | |||||
#ifdef SIMULATE_ID | |||||
require += info_simulate[argc]; | |||||
#endif | |||||
#ifdef SIMULATE_VERSION_MAJOR | |||||
require += info_simulate_version[argc]; | |||||
#endif | |||||
#if defined(__CRAYXE) || defined(__CRAYXC) | |||||
require += info_cray[argc]; | |||||
#endif | |||||
require += info_language_dialect_default[argc]; | |||||
(void)argv; | |||||
return require; | |||||
} | |||||
#endif |
@@ -0,0 +1,600 @@ | |||||
/* This source file must have a .cpp extension so that all C++ compilers | |||||
recognize the extension without flags. Borland does not know .cxx for | |||||
example. */ | |||||
#ifndef __cplusplus | |||||
# error "A C compiler has been selected for C++." | |||||
#endif | |||||
/* Version number components: V=Version, R=Revision, P=Patch | |||||
Version date components: YYYY=Year, MM=Month, DD=Day */ | |||||
#if defined(__COMO__) | |||||
# define COMPILER_ID "Comeau" | |||||
/* __COMO_VERSION__ = VRR */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) | |||||
# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) | |||||
#elif defined(__INTEL_COMPILER) || defined(__ICC) | |||||
# define COMPILER_ID "Intel" | |||||
# if defined(_MSC_VER) | |||||
# define SIMULATE_ID "MSVC" | |||||
# endif | |||||
/* __INTEL_COMPILER = VRP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) | |||||
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) | |||||
# if defined(__INTEL_COMPILER_UPDATE) | |||||
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) | |||||
# else | |||||
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) | |||||
# endif | |||||
# if defined(__INTEL_COMPILER_BUILD_DATE) | |||||
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ | |||||
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) | |||||
# endif | |||||
# if defined(_MSC_VER) | |||||
/* _MSC_VER = VVRR */ | |||||
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) | |||||
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) | |||||
# endif | |||||
#elif defined(__PATHCC__) | |||||
# define COMPILER_ID "PathScale" | |||||
# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) | |||||
# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) | |||||
# if defined(__PATHCC_PATCHLEVEL__) | |||||
# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) | |||||
# endif | |||||
#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) | |||||
# define COMPILER_ID "Embarcadero" | |||||
# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) | |||||
# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) | |||||
# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) | |||||
#elif defined(__BORLANDC__) | |||||
# define COMPILER_ID "Borland" | |||||
/* __BORLANDC__ = 0xVRR */ | |||||
# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) | |||||
# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) | |||||
#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 | |||||
# define COMPILER_ID "Watcom" | |||||
/* __WATCOMC__ = VVRR */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) | |||||
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) | |||||
# if (__WATCOMC__ % 10) > 0 | |||||
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) | |||||
# endif | |||||
#elif defined(__WATCOMC__) | |||||
# define COMPILER_ID "OpenWatcom" | |||||
/* __WATCOMC__ = VVRP + 1100 */ | |||||
# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) | |||||
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) | |||||
# if (__WATCOMC__ % 10) > 0 | |||||
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) | |||||
# endif | |||||
#elif defined(__SUNPRO_CC) | |||||
# define COMPILER_ID "SunPro" | |||||
# if __SUNPRO_CC >= 0x5100 | |||||
/* __SUNPRO_CC = 0xVRRP */ | |||||
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) | |||||
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) | |||||
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) | |||||
# else | |||||
/* __SUNPRO_CC = 0xVRP */ | |||||
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) | |||||
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) | |||||
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) | |||||
# endif | |||||
#elif defined(__HP_aCC) | |||||
# define COMPILER_ID "HP" | |||||
/* __HP_aCC = VVRRPP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) | |||||
# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) | |||||
# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) | |||||
#elif defined(__DECCXX) | |||||
# define COMPILER_ID "Compaq" | |||||
/* __DECCXX_VER = VVRRTPPPP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) | |||||
# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) | |||||
# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) | |||||
#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) | |||||
# define COMPILER_ID "zOS" | |||||
# if defined(__ibmxl__) | |||||
# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) | |||||
# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) | |||||
# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) | |||||
# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) | |||||
# else | |||||
/* __IBMCPP__ = VRP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) | |||||
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) | |||||
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) | |||||
# endif | |||||
#elif defined(__ibmxl__) || (defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800) | |||||
# define COMPILER_ID "XL" | |||||
# if defined(__ibmxl__) | |||||
# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) | |||||
# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) | |||||
# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) | |||||
# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) | |||||
# else | |||||
/* __IBMCPP__ = VRP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) | |||||
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) | |||||
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) | |||||
# endif | |||||
#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 | |||||
# define COMPILER_ID "VisualAge" | |||||
# if defined(__ibmxl__) | |||||
# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) | |||||
# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) | |||||
# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) | |||||
# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) | |||||
# else | |||||
/* __IBMCPP__ = VRP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) | |||||
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) | |||||
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) | |||||
# endif | |||||
#elif defined(__PGI) | |||||
# define COMPILER_ID "PGI" | |||||
# define COMPILER_VERSION_MAJOR DEC(__PGIC__) | |||||
# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) | |||||
# if defined(__PGIC_PATCHLEVEL__) | |||||
# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) | |||||
# endif | |||||
#elif defined(_CRAYC) | |||||
# define COMPILER_ID "Cray" | |||||
# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) | |||||
# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) | |||||
#elif defined(__TI_COMPILER_VERSION__) | |||||
# define COMPILER_ID "TI" | |||||
/* __TI_COMPILER_VERSION__ = VVVRRRPPP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) | |||||
# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) | |||||
# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) | |||||
#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) | |||||
# define COMPILER_ID "Fujitsu" | |||||
#elif defined(__SCO_VERSION__) | |||||
# define COMPILER_ID "SCO" | |||||
#elif defined(__clang__) && defined(__apple_build_version__) | |||||
# define COMPILER_ID "AppleClang" | |||||
# if defined(_MSC_VER) | |||||
# define SIMULATE_ID "MSVC" | |||||
# endif | |||||
# define COMPILER_VERSION_MAJOR DEC(__clang_major__) | |||||
# define COMPILER_VERSION_MINOR DEC(__clang_minor__) | |||||
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) | |||||
# if defined(_MSC_VER) | |||||
/* _MSC_VER = VVRR */ | |||||
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) | |||||
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) | |||||
# endif | |||||
# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) | |||||
#elif defined(__clang__) | |||||
# define COMPILER_ID "Clang" | |||||
# if defined(_MSC_VER) | |||||
# define SIMULATE_ID "MSVC" | |||||
# endif | |||||
# define COMPILER_VERSION_MAJOR DEC(__clang_major__) | |||||
# define COMPILER_VERSION_MINOR DEC(__clang_minor__) | |||||
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) | |||||
# if defined(_MSC_VER) | |||||
/* _MSC_VER = VVRR */ | |||||
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) | |||||
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) | |||||
# endif | |||||
#elif defined(__GNUC__) || defined(__GNUG__) | |||||
# define COMPILER_ID "GNU" | |||||
# if defined(__GNUC__) | |||||
# define COMPILER_VERSION_MAJOR DEC(__GNUC__) | |||||
# else | |||||
# define COMPILER_VERSION_MAJOR DEC(__GNUG__) | |||||
# endif | |||||
# if defined(__GNUC_MINOR__) | |||||
# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) | |||||
# endif | |||||
# if defined(__GNUC_PATCHLEVEL__) | |||||
# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) | |||||
# endif | |||||
#elif defined(_MSC_VER) | |||||
# define COMPILER_ID "MSVC" | |||||
/* _MSC_VER = VVRR */ | |||||
# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) | |||||
# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) | |||||
# if defined(_MSC_FULL_VER) | |||||
# if _MSC_VER >= 1400 | |||||
/* _MSC_FULL_VER = VVRRPPPPP */ | |||||
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) | |||||
# else | |||||
/* _MSC_FULL_VER = VVRRPPPP */ | |||||
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) | |||||
# endif | |||||
# endif | |||||
# if defined(_MSC_BUILD) | |||||
# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) | |||||
# endif | |||||
#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) | |||||
# define COMPILER_ID "ADSP" | |||||
#if defined(__VISUALDSPVERSION__) | |||||
/* __VISUALDSPVERSION__ = 0xVVRRPP00 */ | |||||
# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) | |||||
# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) | |||||
# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) | |||||
#endif | |||||
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) | |||||
# define COMPILER_ID "IAR" | |||||
# if defined(__VER__) | |||||
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) | |||||
# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) | |||||
# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) | |||||
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) | |||||
# endif | |||||
#elif defined(__ARMCC_VERSION) | |||||
# define COMPILER_ID "ARMCC" | |||||
#if __ARMCC_VERSION >= 1000000 | |||||
/* __ARMCC_VERSION = VRRPPPP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) | |||||
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) | |||||
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) | |||||
#else | |||||
/* __ARMCC_VERSION = VRPPPP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) | |||||
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) | |||||
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) | |||||
#endif | |||||
#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) | |||||
# define COMPILER_ID "MIPSpro" | |||||
# if defined(_SGI_COMPILER_VERSION) | |||||
/* _SGI_COMPILER_VERSION = VRP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100) | |||||
# define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10) | |||||
# define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10) | |||||
# else | |||||
/* _COMPILER_VERSION = VRP */ | |||||
# define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100) | |||||
# define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10) | |||||
# define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10) | |||||
# endif | |||||
/* These compilers are either not known or too old to define an | |||||
identification macro. Try to identify the platform and guess that | |||||
it is the native compiler. */ | |||||
#elif defined(__sgi) | |||||
# define COMPILER_ID "MIPSpro" | |||||
#elif defined(__hpux) || defined(__hpua) | |||||
# define COMPILER_ID "HP" | |||||
#else /* unknown compiler */ | |||||
# define COMPILER_ID "" | |||||
#endif | |||||
/* Construct the string literal in pieces to prevent the source from | |||||
getting matched. Store it in a pointer rather than an array | |||||
because some compilers will just produce instructions to fill the | |||||
array rather than assigning a pointer to a static array. */ | |||||
char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; | |||||
#ifdef SIMULATE_ID | |||||
char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; | |||||
#endif | |||||
#ifdef __QNXNTO__ | |||||
char const* qnxnto = "INFO" ":" "qnxnto[]"; | |||||
#endif | |||||
#if defined(__CRAYXE) || defined(__CRAYXC) | |||||
char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; | |||||
#endif | |||||
#define STRINGIFY_HELPER(X) #X | |||||
#define STRINGIFY(X) STRINGIFY_HELPER(X) | |||||
/* Identify known platforms by name. */ | |||||
#if defined(__linux) || defined(__linux__) || defined(linux) | |||||
# define PLATFORM_ID "Linux" | |||||
#elif defined(__CYGWIN__) | |||||
# define PLATFORM_ID "Cygwin" | |||||
#elif defined(__MINGW32__) | |||||
# define PLATFORM_ID "MinGW" | |||||
#elif defined(__APPLE__) | |||||
# define PLATFORM_ID "Darwin" | |||||
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) | |||||
# define PLATFORM_ID "Windows" | |||||
#elif defined(__FreeBSD__) || defined(__FreeBSD) | |||||
# define PLATFORM_ID "FreeBSD" | |||||
#elif defined(__NetBSD__) || defined(__NetBSD) | |||||
# define PLATFORM_ID "NetBSD" | |||||
#elif defined(__OpenBSD__) || defined(__OPENBSD) | |||||
# define PLATFORM_ID "OpenBSD" | |||||
#elif defined(__sun) || defined(sun) | |||||
# define PLATFORM_ID "SunOS" | |||||
#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) | |||||
# define PLATFORM_ID "AIX" | |||||
#elif defined(__sgi) || defined(__sgi__) || defined(_SGI) | |||||
# define PLATFORM_ID "IRIX" | |||||
#elif defined(__hpux) || defined(__hpux__) | |||||
# define PLATFORM_ID "HP-UX" | |||||
#elif defined(__HAIKU__) | |||||
# define PLATFORM_ID "Haiku" | |||||
#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) | |||||
# define PLATFORM_ID "BeOS" | |||||
#elif defined(__QNX__) || defined(__QNXNTO__) | |||||
# define PLATFORM_ID "QNX" | |||||
#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) | |||||
# define PLATFORM_ID "Tru64" | |||||
#elif defined(__riscos) || defined(__riscos__) | |||||
# define PLATFORM_ID "RISCos" | |||||
#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) | |||||
# define PLATFORM_ID "SINIX" | |||||
#elif defined(__UNIX_SV__) | |||||
# define PLATFORM_ID "UNIX_SV" | |||||
#elif defined(__bsdos__) | |||||
# define PLATFORM_ID "BSDOS" | |||||
#elif defined(_MPRAS) || defined(MPRAS) | |||||
# define PLATFORM_ID "MP-RAS" | |||||
#elif defined(__osf) || defined(__osf__) | |||||
# define PLATFORM_ID "OSF1" | |||||
#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) | |||||
# define PLATFORM_ID "SCO_SV" | |||||
#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) | |||||
# define PLATFORM_ID "ULTRIX" | |||||
#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) | |||||
# define PLATFORM_ID "Xenix" | |||||
#elif defined(__WATCOMC__) | |||||
# if defined(__LINUX__) | |||||
# define PLATFORM_ID "Linux" | |||||
# elif defined(__DOS__) | |||||
# define PLATFORM_ID "DOS" | |||||
# elif defined(__OS2__) | |||||
# define PLATFORM_ID "OS2" | |||||
# elif defined(__WINDOWS__) | |||||
# define PLATFORM_ID "Windows3x" | |||||
# else /* unknown platform */ | |||||
# define PLATFORM_ID | |||||
# endif | |||||
#else /* unknown platform */ | |||||
# define PLATFORM_ID | |||||
#endif | |||||
/* For windows compilers MSVC and Intel we can determine | |||||
the architecture of the compiler being used. This is because | |||||
the compilers do not have flags that can change the architecture, | |||||
but rather depend on which compiler is being used | |||||
*/ | |||||
#if defined(_WIN32) && defined(_MSC_VER) | |||||
# if defined(_M_IA64) | |||||
# define ARCHITECTURE_ID "IA64" | |||||
# elif defined(_M_X64) || defined(_M_AMD64) | |||||
# define ARCHITECTURE_ID "x64" | |||||
# elif defined(_M_IX86) | |||||
# define ARCHITECTURE_ID "X86" | |||||
# elif defined(_M_ARM64) | |||||
# define ARCHITECTURE_ID "ARM64" | |||||
# elif defined(_M_ARM) | |||||
# if _M_ARM == 4 | |||||
# define ARCHITECTURE_ID "ARMV4I" | |||||
# elif _M_ARM == 5 | |||||
# define ARCHITECTURE_ID "ARMV5I" | |||||
# else | |||||
# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) | |||||
# endif | |||||
# elif defined(_M_MIPS) | |||||
# define ARCHITECTURE_ID "MIPS" | |||||
# elif defined(_M_SH) | |||||
# define ARCHITECTURE_ID "SHx" | |||||
# else /* unknown architecture */ | |||||
# define ARCHITECTURE_ID "" | |||||
# endif | |||||
#elif defined(__WATCOMC__) | |||||
# if defined(_M_I86) | |||||
# define ARCHITECTURE_ID "I86" | |||||
# elif defined(_M_IX86) | |||||
# define ARCHITECTURE_ID "X86" | |||||
# else /* unknown architecture */ | |||||
# define ARCHITECTURE_ID "" | |||||
# endif | |||||
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) | |||||
# if defined(__ICCARM__) | |||||
# define ARCHITECTURE_ID "ARM" | |||||
# elif defined(__ICCAVR__) | |||||
# define ARCHITECTURE_ID "AVR" | |||||
# else /* unknown architecture */ | |||||
# define ARCHITECTURE_ID "" | |||||
# endif | |||||
#else | |||||
# define ARCHITECTURE_ID | |||||
#endif | |||||
/* Convert integer to decimal digit literals. */ | |||||
#define DEC(n) \ | |||||
('0' + (((n) / 10000000)%10)), \ | |||||
('0' + (((n) / 1000000)%10)), \ | |||||
('0' + (((n) / 100000)%10)), \ | |||||
('0' + (((n) / 10000)%10)), \ | |||||
('0' + (((n) / 1000)%10)), \ | |||||
('0' + (((n) / 100)%10)), \ | |||||
('0' + (((n) / 10)%10)), \ | |||||
('0' + ((n) % 10)) | |||||
/* Convert integer to hex digit literals. */ | |||||
#define HEX(n) \ | |||||
('0' + ((n)>>28 & 0xF)), \ | |||||
('0' + ((n)>>24 & 0xF)), \ | |||||
('0' + ((n)>>20 & 0xF)), \ | |||||
('0' + ((n)>>16 & 0xF)), \ | |||||
('0' + ((n)>>12 & 0xF)), \ | |||||
('0' + ((n)>>8 & 0xF)), \ | |||||
('0' + ((n)>>4 & 0xF)), \ | |||||
('0' + ((n) & 0xF)) | |||||
/* Construct a string literal encoding the version number components. */ | |||||
#ifdef COMPILER_VERSION_MAJOR | |||||
char const info_version[] = { | |||||
'I', 'N', 'F', 'O', ':', | |||||
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', | |||||
COMPILER_VERSION_MAJOR, | |||||
# ifdef COMPILER_VERSION_MINOR | |||||
'.', COMPILER_VERSION_MINOR, | |||||
# ifdef COMPILER_VERSION_PATCH | |||||
'.', COMPILER_VERSION_PATCH, | |||||
# ifdef COMPILER_VERSION_TWEAK | |||||
'.', COMPILER_VERSION_TWEAK, | |||||
# endif | |||||
# endif | |||||
# endif | |||||
']','\0'}; | |||||
#endif | |||||
/* Construct a string literal encoding the internal version number. */ | |||||
#ifdef COMPILER_VERSION_INTERNAL | |||||
char const info_version_internal[] = { | |||||
'I', 'N', 'F', 'O', ':', | |||||
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', | |||||
'i','n','t','e','r','n','a','l','[', | |||||
COMPILER_VERSION_INTERNAL,']','\0'}; | |||||
#endif | |||||
/* Construct a string literal encoding the version number components. */ | |||||
#ifdef SIMULATE_VERSION_MAJOR | |||||
char const info_simulate_version[] = { | |||||
'I', 'N', 'F', 'O', ':', | |||||
's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', | |||||
SIMULATE_VERSION_MAJOR, | |||||
# ifdef SIMULATE_VERSION_MINOR | |||||
'.', SIMULATE_VERSION_MINOR, | |||||
# ifdef SIMULATE_VERSION_PATCH | |||||
'.', SIMULATE_VERSION_PATCH, | |||||
# ifdef SIMULATE_VERSION_TWEAK | |||||
'.', SIMULATE_VERSION_TWEAK, | |||||
# endif | |||||
# endif | |||||
# endif | |||||
']','\0'}; | |||||
#endif | |||||
/* Construct the string literal in pieces to prevent the source from | |||||
getting matched. Store it in a pointer rather than an array | |||||
because some compilers will just produce instructions to fill the | |||||
array rather than assigning a pointer to a static array. */ | |||||
char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; | |||||
char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; | |||||
#if defined(_MSC_VER) && defined(_MSVC_LANG) | |||||
#define CXX_STD _MSVC_LANG | |||||
#else | |||||
#define CXX_STD __cplusplus | |||||
#endif | |||||
const char* info_language_dialect_default = "INFO" ":" "dialect_default[" | |||||
#if CXX_STD > 201402L | |||||
"17" | |||||
#elif CXX_STD >= 201402L | |||||
"14" | |||||
#elif CXX_STD >= 201103L | |||||
"11" | |||||
#else | |||||
"98" | |||||
#endif | |||||
"]"; | |||||
/*--------------------------------------------------------------------------*/ | |||||
int main(int argc, char* argv[]) | |||||
{ | |||||
int require = 0; | |||||
require += info_compiler[argc]; | |||||
require += info_platform[argc]; | |||||
#ifdef COMPILER_VERSION_MAJOR | |||||
require += info_version[argc]; | |||||
#endif | |||||
#ifdef COMPILER_VERSION_INTERNAL | |||||
require += info_version_internal[argc]; | |||||
#endif | |||||
#ifdef SIMULATE_ID | |||||
require += info_simulate[argc]; | |||||
#endif | |||||
#ifdef SIMULATE_VERSION_MAJOR | |||||
require += info_simulate_version[argc]; | |||||
#endif | |||||
#if defined(__CRAYXE) || defined(__CRAYXC) | |||||
require += info_cray[argc]; | |||||
#endif | |||||
require += info_language_dialect_default[argc]; | |||||
(void)argv; | |||||
return require; | |||||
} |
@@ -0,0 +1,16 @@ | |||||
# CMAKE generated file: DO NOT EDIT! | |||||
# Generated by "Unix Makefiles" Generator, CMake Version 3.11 | |||||
# Relative path conversion top directories. | |||||
set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp") | |||||
set(CMAKE_RELATIVE_PATH_TOP_BINARY "/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp") | |||||
# Force unix paths in dependencies. | |||||
set(CMAKE_FORCE_UNIX_PATHS 1) | |||||
# The C and CXX include file regular expressions for this directory. | |||||
set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") | |||||
set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") | |||||
set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) | |||||
set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) |
@@ -0,0 +1,130 @@ | |||||
# CMAKE generated file: DO NOT EDIT! | |||||
# Generated by "Unix Makefiles" Generator, CMake Version 3.11 | |||||
# The generator used is: | |||||
set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") | |||||
# The top level Makefile was generated from the following files: | |||||
set(CMAKE_MAKEFILE_DEPENDS | |||||
"CMakeCache.txt" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeCCompiler.cmake.in" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeCCompilerABI.c" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeCInformation.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeCXXCompiler.cmake.in" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeCXXCompilerABI.cpp" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeCXXInformation.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeCommonLanguageInclude.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeCompilerIdDetection.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeDetermineCCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeDetermineCXXCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeDetermineCompileFeatures.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeDetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeDetermineCompilerABI.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeDetermineCompilerId.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeDetermineSystem.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeFindBinUtils.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeGenericSystem.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeInitializeConfigs.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeLanguageInformation.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeParseImplicitLinkInfo.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeSystem.cmake.in" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeSystemSpecificInformation.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeSystemSpecificInitialize.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeTestCCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeTestCXXCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeTestCompilerCommon.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/CMakeUnixFindMake.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/ADSP-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/ARMCC-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/AppleClang-C-FeatureTests.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/AppleClang-C.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/AppleClang-CXX-FeatureTests.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/AppleClang-CXX.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/AppleClang-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/Borland-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/CMakeCommonCompilerMacros.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/Clang-CXX-TestableFeatures.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/Clang-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/Clang.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/Cray-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/GHS-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/GNU-C-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/GNU.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/HP-C-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/IAR-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/Intel-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/MIPSpro-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/MSVC-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/PGI-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/PathScale-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/SCO-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/TI-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/Watcom-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/XL-C-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/zOS-C-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/FindPackageHandleStandardArgs.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/FindPackageMessage.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Internal/FeatureTesting.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Platform/Darwin-AppleClang-C.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Platform/Darwin-AppleClang-CXX.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Platform/Darwin-Clang-C.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Platform/Darwin-Clang-CXX.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Platform/Darwin-Clang.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Platform/Darwin-Determine-CXX.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Platform/Darwin-Initialize.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Platform/Darwin.cmake" | |||||
"/Applications/CMake.app/Contents/share/cmake-3.11/Modules/Platform/UnixPaths.cmake" | |||||
"CMakeFiles/3.11.0/CMakeCCompiler.cmake" | |||||
"CMakeFiles/3.11.0/CMakeCXXCompiler.cmake" | |||||
"CMakeFiles/3.11.0/CMakeSystem.cmake" | |||||
"CMakeFiles/feature_tests.c" | |||||
"CMakeFiles/feature_tests.cxx" | |||||
"CMakeLists.txt" | |||||
"opencv342/sdk/native/jni/OpenCVConfig-version.cmake" | |||||
"opencv342/sdk/native/jni/OpenCVConfig.cmake" | |||||
"opencv342/sdk/native/jni/abi-armeabi-v7a/OpenCVConfig.cmake" | |||||
"opencv342/sdk/native/jni/abi-armeabi-v7a/OpenCVModules-release.cmake" | |||||
"opencv342/sdk/native/jni/abi-armeabi-v7a/OpenCVModules.cmake" | |||||
) | |||||
# The corresponding makefile is: | |||||
set(CMAKE_MAKEFILE_OUTPUTS | |||||
"Makefile" | |||||
"CMakeFiles/cmake.check_cache" | |||||
) | |||||
# Byproducts of CMake generate step: | |||||
set(CMAKE_MAKEFILE_PRODUCTS | |||||
"CMakeFiles/3.11.0/CMakeSystem.cmake" | |||||
"CMakeFiles/3.11.0/CMakeCCompiler.cmake" | |||||
"CMakeFiles/3.11.0/CMakeCXXCompiler.cmake" | |||||
"CMakeFiles/3.11.0/CMakeCCompiler.cmake" | |||||
"CMakeFiles/3.11.0/CMakeCXXCompiler.cmake" | |||||
"CMakeFiles/CMakeDirectoryInformation.cmake" | |||||
) | |||||
# Dependency information for all targets: | |||||
set(CMAKE_DEPEND_INFO_FILES | |||||
"CMakeFiles/hyperlpr.dir/DependInfo.cmake" | |||||
) |
@@ -0,0 +1,108 @@ | |||||
# CMAKE generated file: DO NOT EDIT! | |||||
# Generated by "Unix Makefiles" Generator, CMake Version 3.11 | |||||
# Default target executed when no arguments are given to make. | |||||
default_target: all | |||||
.PHONY : default_target | |||||
# The main recursive all target | |||||
all: | |||||
.PHONY : all | |||||
# The main recursive preinstall target | |||||
preinstall: | |||||
.PHONY : preinstall | |||||
#============================================================================= | |||||
# Special targets provided by cmake. | |||||
# Disable implicit rules so canonical targets will work. | |||||
.SUFFIXES: | |||||
# Remove some rules from gmake that .SUFFIXES does not remove. | |||||
SUFFIXES = | |||||
.SUFFIXES: .hpux_make_needs_suffix_list | |||||
# Suppress display of executed commands. | |||||
$(VERBOSE).SILENT: | |||||
# A target that is always out of date. | |||||
cmake_force: | |||||
.PHONY : cmake_force | |||||
#============================================================================= | |||||
# Set environment variables for the build. | |||||
# The shell in which to execute make rules. | |||||
SHELL = /bin/sh | |||||
# The CMake executable. | |||||
CMAKE_COMMAND = /Applications/CMake.app/Contents/bin/cmake | |||||
# The command to remove a file. | |||||
RM = /Applications/CMake.app/Contents/bin/cmake -E remove -f | |||||
# Escaping for special characters. | |||||
EQUALS = = | |||||
# The top-level source directory on which CMake was run. | |||||
CMAKE_SOURCE_DIR = /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp | |||||
# The top-level build directory on which CMake was run. | |||||
CMAKE_BINARY_DIR = /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp | |||||
#============================================================================= | |||||
# Target rules for target CMakeFiles/hyperlpr.dir | |||||
# All Build rule for target. | |||||
CMakeFiles/hyperlpr.dir/all: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/depend | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/build | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles --progress-num=1,2,3,4,5,6,7,8,9,10 "Built target hyperlpr" | |||||
.PHONY : CMakeFiles/hyperlpr.dir/all | |||||
# Include target in all. | |||||
all: CMakeFiles/hyperlpr.dir/all | |||||
.PHONY : all | |||||
# Build rule for subdir invocation for target. | |||||
CMakeFiles/hyperlpr.dir/rule: cmake_check_build_system | |||||
$(CMAKE_COMMAND) -E cmake_progress_start /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles 10 | |||||
$(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/hyperlpr.dir/all | |||||
$(CMAKE_COMMAND) -E cmake_progress_start /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles 0 | |||||
.PHONY : CMakeFiles/hyperlpr.dir/rule | |||||
# Convenience name for target. | |||||
hyperlpr: CMakeFiles/hyperlpr.dir/rule | |||||
.PHONY : hyperlpr | |||||
# clean rule for target. | |||||
CMakeFiles/hyperlpr.dir/clean: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/clean | |||||
.PHONY : CMakeFiles/hyperlpr.dir/clean | |||||
# clean rule for target. | |||||
clean: CMakeFiles/hyperlpr.dir/clean | |||||
.PHONY : clean | |||||
#============================================================================= | |||||
# Special targets to cleanup operation of make. | |||||
# Special rule to run CMake to check the build system integrity. | |||||
# No rule that depends on this can have commands that come from listfiles | |||||
# because they might be regenerated. | |||||
cmake_check_build_system: | |||||
$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 | |||||
.PHONY : cmake_check_build_system | |||||
@@ -0,0 +1 @@ | |||||
empty |
@@ -0,0 +1 @@ | |||||
10 |
@@ -0,0 +1,3 @@ | |||||
/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles/rebuild_cache.dir | |||||
/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles/edit_cache.dir | |||||
/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles/hyperlpr.dir |
@@ -0,0 +1 @@ | |||||
# This file is generated by cmake for dependency checking of the CMakeCache.txt file |
@@ -0,0 +1,34 @@ | |||||
const char features[] = {"\n" | |||||
"C_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"c_function_prototypes\n" | |||||
"C_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"c_restrict\n" | |||||
"C_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"c_static_assert\n" | |||||
"C_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"c_variadic_macros\n" | |||||
}; | |||||
int main(int argc, char** argv) { (void)argv; return features[argc]; } |
@@ -0,0 +1,405 @@ | |||||
const char features[] = {"\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_aggregate_nsdmi) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_aggregate_default_initializers\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_alias_templates) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_alias_templates\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_alignas) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_alignas\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_alignas) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_alignof\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_attributes) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_attributes\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 501 && __cplusplus > 201103L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_attribute_deprecated\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_auto_type) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_auto_type\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_binary_literals) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_binary_literals\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_constexpr) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_constexpr\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_contextual_conversions) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_contextual_conversions\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_decltype) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_decltype\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 501 && __cplusplus > 201103L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_decltype_auto\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_decltype_incomplete_return_types) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_decltype_incomplete_return_types\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_default_function_template_args) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_default_function_template_args\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_defaulted_functions) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_defaulted_functions\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_defaulted_functions) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_defaulted_move_initializers\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_delegating_constructors) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_delegating_constructors\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_deleted_functions) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_deleted_functions\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 501 && __cplusplus > 201103L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_digit_separators\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_enum_forward_declarations\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_explicit_conversions) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_explicit_conversions\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_extended_friend_declarations\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_extern_templates\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_override_control) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_final\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_func_identifier\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_generalized_initializers) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_generalized_initializers\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 501 && __cplusplus > 201103L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_generic_lambdas\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_inheriting_constructors) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_inheriting_constructors\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_inline_namespaces\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_lambdas) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_lambdas\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_init_captures) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_lambda_init_captures\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_local_type_template_args) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_local_type_template_args\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_long_long_type\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_noexcept) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_noexcept\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_nonstatic_member_init) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_nonstatic_member_init\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_nullptr) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_nullptr\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_override_control) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_override\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_range_for) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_range_for\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_raw_string_literals) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_raw_string_literals\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_reference_qualified_functions) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_reference_qualified_functions\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_relaxed_constexpr) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_relaxed_constexpr\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_return_type_deduction) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_return_type_deduction\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_right_angle_brackets\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_rvalue_references) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_rvalue_references\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_sizeof_member\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_static_assert) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_static_assert\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_strong_enums) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_strong_enums\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 199711L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_template_template_parameters\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_thread_local) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_thread_local\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_trailing_return) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_trailing_return_types\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_unicode_literals) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_unicode_literals\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_generalized_initializers) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_uniform_initialization\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_unrestricted_unions) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_unrestricted_unions\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_user_literals) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_user_literals\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_variable_templates) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_variable_templates\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_variadic_macros\n" | |||||
"CXX_FEATURE:" | |||||
#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_variadic_templates) | |||||
"1" | |||||
#else | |||||
"0" | |||||
#endif | |||||
"cxx_variadic_templates\n" | |||||
}; | |||||
int main(int argc, char** argv) { (void)argv; return features[argc]; } |
@@ -0,0 +1,30 @@ | |||||
# The set of languages for which implicit dependencies are needed: | |||||
set(CMAKE_DEPENDS_LANGUAGES | |||||
"CXX" | |||||
) | |||||
# The set of files for implicit dependencies of each language: | |||||
set(CMAKE_DEPENDS_CHECK_CXX | |||||
"/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/javaWarpper.cpp" "/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles/hyperlpr.dir/javaWarpper.cpp.o" | |||||
"/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/CNNRecognizer.cpp" "/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.o" | |||||
"/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/FastDeskew.cpp" "/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.o" | |||||
"/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/FineMapping.cpp" "/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.o" | |||||
"/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/Pipeline.cpp" "/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.o" | |||||
"/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/PlateDetection.cpp" "/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.o" | |||||
"/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/PlateSegmentation.cpp" "/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.o" | |||||
"/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/Recognizer.cpp" "/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.o" | |||||
"/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/SegmentationFreeRecognizer.cpp" "/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.o" | |||||
) | |||||
set(CMAKE_CXX_COMPILER_ID "Clang") | |||||
# The include file search paths: | |||||
set(CMAKE_CXX_TARGET_INCLUDE_PATH | |||||
"opencv342/sdk/native/jni/include" | |||||
"opencv342/sdk/native/jni/include/opencv" | |||||
) | |||||
# Targets to which this target links. | |||||
set(CMAKE_TARGET_LINKED_INFO_FILES | |||||
) | |||||
# Fortran module output directory. | |||||
set(CMAKE_Fortran_TARGET_MODULE_DIR "") |
@@ -0,0 +1,255 @@ | |||||
# CMAKE generated file: DO NOT EDIT! | |||||
# Generated by "Unix Makefiles" Generator, CMake Version 3.11 | |||||
# Delete rule output on recipe failure. | |||||
.DELETE_ON_ERROR: | |||||
#============================================================================= | |||||
# Special targets provided by cmake. | |||||
# Disable implicit rules so canonical targets will work. | |||||
.SUFFIXES: | |||||
# Remove some rules from gmake that .SUFFIXES does not remove. | |||||
SUFFIXES = | |||||
.SUFFIXES: .hpux_make_needs_suffix_list | |||||
# Suppress display of executed commands. | |||||
$(VERBOSE).SILENT: | |||||
# A target that is always out of date. | |||||
cmake_force: | |||||
.PHONY : cmake_force | |||||
#============================================================================= | |||||
# Set environment variables for the build. | |||||
# The shell in which to execute make rules. | |||||
SHELL = /bin/sh | |||||
# The CMake executable. | |||||
CMAKE_COMMAND = /Applications/CMake.app/Contents/bin/cmake | |||||
# The command to remove a file. | |||||
RM = /Applications/CMake.app/Contents/bin/cmake -E remove -f | |||||
# Escaping for special characters. | |||||
EQUALS = = | |||||
# The top-level source directory on which CMake was run. | |||||
CMAKE_SOURCE_DIR = /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp | |||||
# The top-level build directory on which CMake was run. | |||||
CMAKE_BINARY_DIR = /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp | |||||
# Include any dependencies generated for this target. | |||||
include CMakeFiles/hyperlpr.dir/depend.make | |||||
# Include the progress variables for this target. | |||||
include CMakeFiles/hyperlpr.dir/progress.make | |||||
# Include the compile flags for this target's objects. | |||||
include CMakeFiles/hyperlpr.dir/flags.make | |||||
CMakeFiles/hyperlpr.dir/javaWarpper.cpp.o: CMakeFiles/hyperlpr.dir/flags.make | |||||
CMakeFiles/hyperlpr.dir/javaWarpper.cpp.o: javaWarpper.cpp | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/hyperlpr.dir/javaWarpper.cpp.o" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/hyperlpr.dir/javaWarpper.cpp.o -c /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/javaWarpper.cpp | |||||
CMakeFiles/hyperlpr.dir/javaWarpper.cpp.i: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/hyperlpr.dir/javaWarpper.cpp.i" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/javaWarpper.cpp > CMakeFiles/hyperlpr.dir/javaWarpper.cpp.i | |||||
CMakeFiles/hyperlpr.dir/javaWarpper.cpp.s: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/hyperlpr.dir/javaWarpper.cpp.s" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/javaWarpper.cpp -o CMakeFiles/hyperlpr.dir/javaWarpper.cpp.s | |||||
CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.o: CMakeFiles/hyperlpr.dir/flags.make | |||||
CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.o: src/CNNRecognizer.cpp | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.o" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.o -c /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/CNNRecognizer.cpp | |||||
CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.i: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.i" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/CNNRecognizer.cpp > CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.i | |||||
CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.s: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.s" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/CNNRecognizer.cpp -o CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.s | |||||
CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.o: CMakeFiles/hyperlpr.dir/flags.make | |||||
CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.o: src/FastDeskew.cpp | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.o" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.o -c /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/FastDeskew.cpp | |||||
CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.i: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.i" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/FastDeskew.cpp > CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.i | |||||
CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.s: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.s" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/FastDeskew.cpp -o CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.s | |||||
CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.o: CMakeFiles/hyperlpr.dir/flags.make | |||||
CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.o: src/FineMapping.cpp | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.o" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.o -c /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/FineMapping.cpp | |||||
CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.i: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.i" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/FineMapping.cpp > CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.i | |||||
CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.s: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.s" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/FineMapping.cpp -o CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.s | |||||
CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.o: CMakeFiles/hyperlpr.dir/flags.make | |||||
CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.o: src/Pipeline.cpp | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.o" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.o -c /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/Pipeline.cpp | |||||
CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.i: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.i" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/Pipeline.cpp > CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.i | |||||
CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.s: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.s" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/Pipeline.cpp -o CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.s | |||||
CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.o: CMakeFiles/hyperlpr.dir/flags.make | |||||
CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.o: src/PlateDetection.cpp | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.o" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.o -c /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/PlateDetection.cpp | |||||
CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.i: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.i" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/PlateDetection.cpp > CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.i | |||||
CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.s: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.s" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/PlateDetection.cpp -o CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.s | |||||
CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.o: CMakeFiles/hyperlpr.dir/flags.make | |||||
CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.o: src/PlateSegmentation.cpp | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.o" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.o -c /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/PlateSegmentation.cpp | |||||
CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.i: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.i" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/PlateSegmentation.cpp > CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.i | |||||
CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.s: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.s" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/PlateSegmentation.cpp -o CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.s | |||||
CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.o: CMakeFiles/hyperlpr.dir/flags.make | |||||
CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.o: src/Recognizer.cpp | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CXX object CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.o" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.o -c /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/Recognizer.cpp | |||||
CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.i: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.i" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/Recognizer.cpp > CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.i | |||||
CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.s: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.s" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/Recognizer.cpp -o CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.s | |||||
CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.o: CMakeFiles/hyperlpr.dir/flags.make | |||||
CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.o: src/SegmentationFreeRecognizer.cpp | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building CXX object CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.o" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.o -c /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/SegmentationFreeRecognizer.cpp | |||||
CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.i: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.i" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/SegmentationFreeRecognizer.cpp > CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.i | |||||
CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.s: cmake_force | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.s" | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/src/SegmentationFreeRecognizer.cpp -o CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.s | |||||
# Object files for target hyperlpr | |||||
hyperlpr_OBJECTS = \ | |||||
"CMakeFiles/hyperlpr.dir/javaWarpper.cpp.o" \ | |||||
"CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.o" \ | |||||
"CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.o" \ | |||||
"CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.o" \ | |||||
"CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.o" \ | |||||
"CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.o" \ | |||||
"CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.o" \ | |||||
"CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.o" \ | |||||
"CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.o" | |||||
# External object files for target hyperlpr | |||||
hyperlpr_EXTERNAL_OBJECTS = | |||||
libhyperlpr.dylib: CMakeFiles/hyperlpr.dir/javaWarpper.cpp.o | |||||
libhyperlpr.dylib: CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.o | |||||
libhyperlpr.dylib: CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.o | |||||
libhyperlpr.dylib: CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.o | |||||
libhyperlpr.dylib: CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.o | |||||
libhyperlpr.dylib: CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.o | |||||
libhyperlpr.dylib: CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.o | |||||
libhyperlpr.dylib: CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.o | |||||
libhyperlpr.dylib: CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.o | |||||
libhyperlpr.dylib: CMakeFiles/hyperlpr.dir/build.make | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_highgui.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_features2d.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_shape.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_imgcodecs.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_ml.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_videoio.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_dnn.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_flann.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_objdetect.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_core.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_calib3d.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_video.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_superres.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_photo.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_imgproc.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_stitching.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_videostab.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibprotobuf.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_calib3d.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_features2d.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_highgui.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_videoio.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_imgcodecs.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibjpeg-turbo.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibwebp.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibpng.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibtiff.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibjasper.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libIlmImf.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_flann.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_video.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_photo.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_imgproc.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_core.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libtbb.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libcpufeatures.a | |||||
libhyperlpr.dylib: opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libtegra_hal.a | |||||
libhyperlpr.dylib: CMakeFiles/hyperlpr.dir/link.txt | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Linking CXX shared library libhyperlpr.dylib" | |||||
$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/hyperlpr.dir/link.txt --verbose=$(VERBOSE) | |||||
# Rule to build all files generated by this target. | |||||
CMakeFiles/hyperlpr.dir/build: libhyperlpr.dylib | |||||
.PHONY : CMakeFiles/hyperlpr.dir/build | |||||
CMakeFiles/hyperlpr.dir/clean: | |||||
$(CMAKE_COMMAND) -P CMakeFiles/hyperlpr.dir/cmake_clean.cmake | |||||
.PHONY : CMakeFiles/hyperlpr.dir/clean | |||||
CMakeFiles/hyperlpr.dir/depend: | |||||
cd /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles/hyperlpr.dir/DependInfo.cmake --color=$(COLOR) | |||||
.PHONY : CMakeFiles/hyperlpr.dir/depend | |||||
@@ -0,0 +1,18 @@ | |||||
file(REMOVE_RECURSE | |||||
"CMakeFiles/hyperlpr.dir/javaWarpper.cpp.o" | |||||
"CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.o" | |||||
"CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.o" | |||||
"CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.o" | |||||
"CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.o" | |||||
"CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.o" | |||||
"CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.o" | |||||
"CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.o" | |||||
"CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.o" | |||||
"libhyperlpr.pdb" | |||||
"libhyperlpr.dylib" | |||||
) | |||||
# Per-language clean rules from dependency scanning. | |||||
foreach(lang CXX) | |||||
include(CMakeFiles/hyperlpr.dir/cmake_clean_${lang}.cmake OPTIONAL) | |||||
endforeach() |
@@ -0,0 +1,10 @@ | |||||
# CMAKE generated file: DO NOT EDIT! | |||||
# Generated by "Unix Makefiles" Generator, CMake Version 3.11 | |||||
# compile CXX with /Library/Developer/CommandLineTools/usr/bin/c++ | |||||
CXX_FLAGS = -fPIC | |||||
CXX_DEFINES = -Dhyperlpr_EXPORTS | |||||
CXX_INCLUDES = -isystem /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/opencv342/sdk/native/jni/include -isystem /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv | |||||
@@ -0,0 +1 @@ | |||||
/Library/Developer/CommandLineTools/usr/bin/c++ -dynamiclib -Wl,-headerpad_max_install_names -o libhyperlpr.dylib -install_name @rpath/libhyperlpr.dylib CMakeFiles/hyperlpr.dir/javaWarpper.cpp.o CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.o CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.o CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.o CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.o CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.o CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.o CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.o CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.o opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_highgui.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_features2d.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_shape.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_imgcodecs.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_ml.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_videoio.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_dnn.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_flann.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_objdetect.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_core.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_calib3d.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_video.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_superres.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_photo.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_imgproc.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_stitching.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_videostab.a opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibprotobuf.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_calib3d.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_features2d.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_highgui.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_videoio.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_imgcodecs.a opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibjpeg-turbo.a opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibwebp.a opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibpng.a opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibtiff.a opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibjasper.a opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libIlmImf.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_flann.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_video.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_photo.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_imgproc.a opencv342/sdk/native/staticlibs/armeabi-v7a/libopencv_core.a -lz opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libtbb.a -lc opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libcpufeatures.a -ldl -lm -llog opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libtegra_hal.a |
@@ -0,0 +1,11 @@ | |||||
CMAKE_PROGRESS_1 = 1 | |||||
CMAKE_PROGRESS_2 = 2 | |||||
CMAKE_PROGRESS_3 = 3 | |||||
CMAKE_PROGRESS_4 = 4 | |||||
CMAKE_PROGRESS_5 = 5 | |||||
CMAKE_PROGRESS_6 = 6 | |||||
CMAKE_PROGRESS_7 = 7 | |||||
CMAKE_PROGRESS_8 = 8 | |||||
CMAKE_PROGRESS_9 = 9 | |||||
CMAKE_PROGRESS_10 = 10 | |||||
@@ -0,0 +1 @@ | |||||
10 |
@@ -0,0 +1,66 @@ | |||||
# For more information about using CMake with Android Studio, read the | |||||
# documentation: https://d.android.com/studio/projects/add-native-code.html | |||||
# Sets the minimum version of CMake required to build the native library. | |||||
cmake_minimum_required(VERSION 3.4.1) | |||||
#set(OpenCV_DIR /Users/mac02/Downloads/OpenCV-android/sdk/native/jni) | |||||
set(OpenCV_DIR ${CMAKE_CURRENT_SOURCE_DIR}/opencv342/sdk/native/jni) | |||||
#message(STATUS "路径:${CMAKE_CURRENT_SOURCE_DIR}/opencvnative3_4_2/jni}") | |||||
find_package(OpenCV REQUIRED) | |||||
message(STATUS "OpenCV libraries: ${OpenCV_LIBS}") | |||||
#include_directories(/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/include) | |||||
#set(pathToOpenCv /Users/mac02/Downloads/OpenCV-android) | |||||
#配置加载native依赖 | |||||
#include_directories(${pathToOpenCv}/sdk/native/jni/include) | |||||
#动态方式加载 | |||||
#add_library( lib_opencv SHARED IMPORTED ) | |||||
#引入libopencv_java3.so文件 | |||||
#set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/jniLibs/armeabi-v7a/libopencv_java3.so) | |||||
aux_source_directory(. SOURCES1) | |||||
aux_source_directory(./src SOURCES2) | |||||
list (APPEND SOURCES | |||||
${SOURCES1} | |||||
${SOURCES2} | |||||
) | |||||
message(STATUS "My sources: ${SOURCES}") | |||||
add_library( # Sets the name of the library. | |||||
hyperlpr | |||||
# Sets the library as a shared library. | |||||
SHARED | |||||
# Provides a relative path to your source file(s). | |||||
${SOURCES}) | |||||
#target_link_libraries( hyperlpr lib_opencv) | |||||
target_link_libraries(hyperlpr ${OpenCV_LIBS}) | |||||
#连接现成的第三方库 | |||||
#set(INC_DIR /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/OpencvNative/include) | |||||
#set(LINK_DIR /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/OpencvNative/libs) | |||||
#include_directories(OpencvNative/jni/include) | |||||
#include_directories(${INC_DIR}) # 用${}引用变量 | |||||
#link_directories(${LINK_DIR}) | |||||
#aux_source_directory(./include SOURCES1) | |||||
#aux_source_directory(./src SOURCES2) | |||||
#list (APPEND SOURCES | |||||
# ${SOURCES1} | |||||
# ${SOURCES2} | |||||
# javaWarpper.cpp | |||||
#) | |||||
#add_library( # Sets the name of the library. | |||||
# hyperlpr | |||||
# # Sets the library as a shared library. | |||||
# SHARED | |||||
# Provides a relative path to your source file(s). | |||||
# ${SOURCES}) |
@@ -0,0 +1,418 @@ | |||||
# CMAKE generated file: DO NOT EDIT! | |||||
# Generated by "Unix Makefiles" Generator, CMake Version 3.11 | |||||
# Default target executed when no arguments are given to make. | |||||
default_target: all | |||||
.PHONY : default_target | |||||
# Allow only one "make -f Makefile2" at a time, but pass parallelism. | |||||
.NOTPARALLEL: | |||||
#============================================================================= | |||||
# Special targets provided by cmake. | |||||
# Disable implicit rules so canonical targets will work. | |||||
.SUFFIXES: | |||||
# Remove some rules from gmake that .SUFFIXES does not remove. | |||||
SUFFIXES = | |||||
.SUFFIXES: .hpux_make_needs_suffix_list | |||||
# Suppress display of executed commands. | |||||
$(VERBOSE).SILENT: | |||||
# A target that is always out of date. | |||||
cmake_force: | |||||
.PHONY : cmake_force | |||||
#============================================================================= | |||||
# Set environment variables for the build. | |||||
# The shell in which to execute make rules. | |||||
SHELL = /bin/sh | |||||
# The CMake executable. | |||||
CMAKE_COMMAND = /Applications/CMake.app/Contents/bin/cmake | |||||
# The command to remove a file. | |||||
RM = /Applications/CMake.app/Contents/bin/cmake -E remove -f | |||||
# Escaping for special characters. | |||||
EQUALS = = | |||||
# The top-level source directory on which CMake was run. | |||||
CMAKE_SOURCE_DIR = /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp | |||||
# The top-level build directory on which CMake was run. | |||||
CMAKE_BINARY_DIR = /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp | |||||
#============================================================================= | |||||
# Targets provided globally by CMake. | |||||
# Special rule for the target rebuild_cache | |||||
rebuild_cache: | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." | |||||
/Applications/CMake.app/Contents/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) | |||||
.PHONY : rebuild_cache | |||||
# Special rule for the target rebuild_cache | |||||
rebuild_cache/fast: rebuild_cache | |||||
.PHONY : rebuild_cache/fast | |||||
# Special rule for the target edit_cache | |||||
edit_cache: | |||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." | |||||
/Applications/CMake.app/Contents/bin/ccmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) | |||||
.PHONY : edit_cache | |||||
# Special rule for the target edit_cache | |||||
edit_cache/fast: edit_cache | |||||
.PHONY : edit_cache/fast | |||||
# The main all target | |||||
all: cmake_check_build_system | |||||
$(CMAKE_COMMAND) -E cmake_progress_start /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles/progress.marks | |||||
$(MAKE) -f CMakeFiles/Makefile2 all | |||||
$(CMAKE_COMMAND) -E cmake_progress_start /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/CMakeFiles 0 | |||||
.PHONY : all | |||||
# The main clean target | |||||
clean: | |||||
$(MAKE) -f CMakeFiles/Makefile2 clean | |||||
.PHONY : clean | |||||
# The main clean target | |||||
clean/fast: clean | |||||
.PHONY : clean/fast | |||||
# Prepare targets for installation. | |||||
preinstall: all | |||||
$(MAKE) -f CMakeFiles/Makefile2 preinstall | |||||
.PHONY : preinstall | |||||
# Prepare targets for installation. | |||||
preinstall/fast: | |||||
$(MAKE) -f CMakeFiles/Makefile2 preinstall | |||||
.PHONY : preinstall/fast | |||||
# clear depends | |||||
depend: | |||||
$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 | |||||
.PHONY : depend | |||||
#============================================================================= | |||||
# Target rules for targets named hyperlpr | |||||
# Build rule for target. | |||||
hyperlpr: cmake_check_build_system | |||||
$(MAKE) -f CMakeFiles/Makefile2 hyperlpr | |||||
.PHONY : hyperlpr | |||||
# fast build rule for target. | |||||
hyperlpr/fast: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/build | |||||
.PHONY : hyperlpr/fast | |||||
javaWarpper.o: javaWarpper.cpp.o | |||||
.PHONY : javaWarpper.o | |||||
# target to build an object file | |||||
javaWarpper.cpp.o: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/javaWarpper.cpp.o | |||||
.PHONY : javaWarpper.cpp.o | |||||
javaWarpper.i: javaWarpper.cpp.i | |||||
.PHONY : javaWarpper.i | |||||
# target to preprocess a source file | |||||
javaWarpper.cpp.i: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/javaWarpper.cpp.i | |||||
.PHONY : javaWarpper.cpp.i | |||||
javaWarpper.s: javaWarpper.cpp.s | |||||
.PHONY : javaWarpper.s | |||||
# target to generate assembly for a file | |||||
javaWarpper.cpp.s: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/javaWarpper.cpp.s | |||||
.PHONY : javaWarpper.cpp.s | |||||
src/CNNRecognizer.o: src/CNNRecognizer.cpp.o | |||||
.PHONY : src/CNNRecognizer.o | |||||
# target to build an object file | |||||
src/CNNRecognizer.cpp.o: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.o | |||||
.PHONY : src/CNNRecognizer.cpp.o | |||||
src/CNNRecognizer.i: src/CNNRecognizer.cpp.i | |||||
.PHONY : src/CNNRecognizer.i | |||||
# target to preprocess a source file | |||||
src/CNNRecognizer.cpp.i: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.i | |||||
.PHONY : src/CNNRecognizer.cpp.i | |||||
src/CNNRecognizer.s: src/CNNRecognizer.cpp.s | |||||
.PHONY : src/CNNRecognizer.s | |||||
# target to generate assembly for a file | |||||
src/CNNRecognizer.cpp.s: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/CNNRecognizer.cpp.s | |||||
.PHONY : src/CNNRecognizer.cpp.s | |||||
src/FastDeskew.o: src/FastDeskew.cpp.o | |||||
.PHONY : src/FastDeskew.o | |||||
# target to build an object file | |||||
src/FastDeskew.cpp.o: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.o | |||||
.PHONY : src/FastDeskew.cpp.o | |||||
src/FastDeskew.i: src/FastDeskew.cpp.i | |||||
.PHONY : src/FastDeskew.i | |||||
# target to preprocess a source file | |||||
src/FastDeskew.cpp.i: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.i | |||||
.PHONY : src/FastDeskew.cpp.i | |||||
src/FastDeskew.s: src/FastDeskew.cpp.s | |||||
.PHONY : src/FastDeskew.s | |||||
# target to generate assembly for a file | |||||
src/FastDeskew.cpp.s: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/FastDeskew.cpp.s | |||||
.PHONY : src/FastDeskew.cpp.s | |||||
src/FineMapping.o: src/FineMapping.cpp.o | |||||
.PHONY : src/FineMapping.o | |||||
# target to build an object file | |||||
src/FineMapping.cpp.o: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.o | |||||
.PHONY : src/FineMapping.cpp.o | |||||
src/FineMapping.i: src/FineMapping.cpp.i | |||||
.PHONY : src/FineMapping.i | |||||
# target to preprocess a source file | |||||
src/FineMapping.cpp.i: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.i | |||||
.PHONY : src/FineMapping.cpp.i | |||||
src/FineMapping.s: src/FineMapping.cpp.s | |||||
.PHONY : src/FineMapping.s | |||||
# target to generate assembly for a file | |||||
src/FineMapping.cpp.s: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/FineMapping.cpp.s | |||||
.PHONY : src/FineMapping.cpp.s | |||||
src/Pipeline.o: src/Pipeline.cpp.o | |||||
.PHONY : src/Pipeline.o | |||||
# target to build an object file | |||||
src/Pipeline.cpp.o: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.o | |||||
.PHONY : src/Pipeline.cpp.o | |||||
src/Pipeline.i: src/Pipeline.cpp.i | |||||
.PHONY : src/Pipeline.i | |||||
# target to preprocess a source file | |||||
src/Pipeline.cpp.i: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.i | |||||
.PHONY : src/Pipeline.cpp.i | |||||
src/Pipeline.s: src/Pipeline.cpp.s | |||||
.PHONY : src/Pipeline.s | |||||
# target to generate assembly for a file | |||||
src/Pipeline.cpp.s: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/Pipeline.cpp.s | |||||
.PHONY : src/Pipeline.cpp.s | |||||
src/PlateDetection.o: src/PlateDetection.cpp.o | |||||
.PHONY : src/PlateDetection.o | |||||
# target to build an object file | |||||
src/PlateDetection.cpp.o: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.o | |||||
.PHONY : src/PlateDetection.cpp.o | |||||
src/PlateDetection.i: src/PlateDetection.cpp.i | |||||
.PHONY : src/PlateDetection.i | |||||
# target to preprocess a source file | |||||
src/PlateDetection.cpp.i: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.i | |||||
.PHONY : src/PlateDetection.cpp.i | |||||
src/PlateDetection.s: src/PlateDetection.cpp.s | |||||
.PHONY : src/PlateDetection.s | |||||
# target to generate assembly for a file | |||||
src/PlateDetection.cpp.s: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/PlateDetection.cpp.s | |||||
.PHONY : src/PlateDetection.cpp.s | |||||
src/PlateSegmentation.o: src/PlateSegmentation.cpp.o | |||||
.PHONY : src/PlateSegmentation.o | |||||
# target to build an object file | |||||
src/PlateSegmentation.cpp.o: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.o | |||||
.PHONY : src/PlateSegmentation.cpp.o | |||||
src/PlateSegmentation.i: src/PlateSegmentation.cpp.i | |||||
.PHONY : src/PlateSegmentation.i | |||||
# target to preprocess a source file | |||||
src/PlateSegmentation.cpp.i: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.i | |||||
.PHONY : src/PlateSegmentation.cpp.i | |||||
src/PlateSegmentation.s: src/PlateSegmentation.cpp.s | |||||
.PHONY : src/PlateSegmentation.s | |||||
# target to generate assembly for a file | |||||
src/PlateSegmentation.cpp.s: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/PlateSegmentation.cpp.s | |||||
.PHONY : src/PlateSegmentation.cpp.s | |||||
src/Recognizer.o: src/Recognizer.cpp.o | |||||
.PHONY : src/Recognizer.o | |||||
# target to build an object file | |||||
src/Recognizer.cpp.o: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.o | |||||
.PHONY : src/Recognizer.cpp.o | |||||
src/Recognizer.i: src/Recognizer.cpp.i | |||||
.PHONY : src/Recognizer.i | |||||
# target to preprocess a source file | |||||
src/Recognizer.cpp.i: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.i | |||||
.PHONY : src/Recognizer.cpp.i | |||||
src/Recognizer.s: src/Recognizer.cpp.s | |||||
.PHONY : src/Recognizer.s | |||||
# target to generate assembly for a file | |||||
src/Recognizer.cpp.s: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/Recognizer.cpp.s | |||||
.PHONY : src/Recognizer.cpp.s | |||||
src/SegmentationFreeRecognizer.o: src/SegmentationFreeRecognizer.cpp.o | |||||
.PHONY : src/SegmentationFreeRecognizer.o | |||||
# target to build an object file | |||||
src/SegmentationFreeRecognizer.cpp.o: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.o | |||||
.PHONY : src/SegmentationFreeRecognizer.cpp.o | |||||
src/SegmentationFreeRecognizer.i: src/SegmentationFreeRecognizer.cpp.i | |||||
.PHONY : src/SegmentationFreeRecognizer.i | |||||
# target to preprocess a source file | |||||
src/SegmentationFreeRecognizer.cpp.i: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.i | |||||
.PHONY : src/SegmentationFreeRecognizer.cpp.i | |||||
src/SegmentationFreeRecognizer.s: src/SegmentationFreeRecognizer.cpp.s | |||||
.PHONY : src/SegmentationFreeRecognizer.s | |||||
# target to generate assembly for a file | |||||
src/SegmentationFreeRecognizer.cpp.s: | |||||
$(MAKE) -f CMakeFiles/hyperlpr.dir/build.make CMakeFiles/hyperlpr.dir/src/SegmentationFreeRecognizer.cpp.s | |||||
.PHONY : src/SegmentationFreeRecognizer.cpp.s | |||||
# Help Target | |||||
help: | |||||
@echo "The following are some of the valid targets for this Makefile:" | |||||
@echo "... all (the default if no target is provided)" | |||||
@echo "... clean" | |||||
@echo "... depend" | |||||
@echo "... rebuild_cache" | |||||
@echo "... edit_cache" | |||||
@echo "... hyperlpr" | |||||
@echo "... javaWarpper.o" | |||||
@echo "... javaWarpper.i" | |||||
@echo "... javaWarpper.s" | |||||
@echo "... src/CNNRecognizer.o" | |||||
@echo "... src/CNNRecognizer.i" | |||||
@echo "... src/CNNRecognizer.s" | |||||
@echo "... src/FastDeskew.o" | |||||
@echo "... src/FastDeskew.i" | |||||
@echo "... src/FastDeskew.s" | |||||
@echo "... src/FineMapping.o" | |||||
@echo "... src/FineMapping.i" | |||||
@echo "... src/FineMapping.s" | |||||
@echo "... src/Pipeline.o" | |||||
@echo "... src/Pipeline.i" | |||||
@echo "... src/Pipeline.s" | |||||
@echo "... src/PlateDetection.o" | |||||
@echo "... src/PlateDetection.i" | |||||
@echo "... src/PlateDetection.s" | |||||
@echo "... src/PlateSegmentation.o" | |||||
@echo "... src/PlateSegmentation.i" | |||||
@echo "... src/PlateSegmentation.s" | |||||
@echo "... src/Recognizer.o" | |||||
@echo "... src/Recognizer.i" | |||||
@echo "... src/Recognizer.s" | |||||
@echo "... src/SegmentationFreeRecognizer.o" | |||||
@echo "... src/SegmentationFreeRecognizer.i" | |||||
@echo "... src/SegmentationFreeRecognizer.s" | |||||
.PHONY : help | |||||
#============================================================================= | |||||
# Special targets to cleanup operation of make. | |||||
# Special rule to run CMake to check the build system integrity. | |||||
# No rule that depends on this can have commands that come from listfiles | |||||
# because they might be regenerated. | |||||
cmake_check_build_system: | |||||
$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 | |||||
.PHONY : cmake_check_build_system | |||||
@@ -0,0 +1,44 @@ | |||||
# Install script for directory: /Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp | |||||
# Set the install prefix | |||||
if(NOT DEFINED CMAKE_INSTALL_PREFIX) | |||||
set(CMAKE_INSTALL_PREFIX "/usr/local") | |||||
endif() | |||||
string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") | |||||
# Set the install configuration name. | |||||
if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) | |||||
if(BUILD_TYPE) | |||||
string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" | |||||
CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") | |||||
else() | |||||
set(CMAKE_INSTALL_CONFIG_NAME "") | |||||
endif() | |||||
message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") | |||||
endif() | |||||
# Set the component getting installed. | |||||
if(NOT CMAKE_INSTALL_COMPONENT) | |||||
if(COMPONENT) | |||||
message(STATUS "Install component: \"${COMPONENT}\"") | |||||
set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") | |||||
else() | |||||
set(CMAKE_INSTALL_COMPONENT) | |||||
endif() | |||||
endif() | |||||
# Is this installation the result of a crosscompile? | |||||
if(NOT DEFINED CMAKE_CROSSCOMPILING) | |||||
set(CMAKE_CROSSCOMPILING "FALSE") | |||||
endif() | |||||
if(CMAKE_INSTALL_COMPONENT) | |||||
set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") | |||||
else() | |||||
set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") | |||||
endif() | |||||
string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT | |||||
"${CMAKE_INSTALL_MANIFEST_FILES}") | |||||
file(WRITE "/Users/mac02/Desktop/studiospace/test/PrjAnndroid/app/src/main/cpp/${CMAKE_INSTALL_MANIFEST}" | |||||
"${CMAKE_INSTALL_MANIFEST_CONTENT}") |
@@ -0,0 +1,2 @@ | |||||
OPENCV_3RDPARTY_COMPONENTS:=libjpeg-turbo libwebp libpng libtiff libjasper IlmImf libprotobuf tbb cpufeatures tegra_hal | |||||
OPENCV_EXTRA_COMPONENTS:=z dl m log |
@@ -0,0 +1,120 @@ | |||||
# In order to compile your application under cygwin | |||||
# you might need to define NDK_USE_CYGPATH=1 before calling the ndk-build | |||||
USER_LOCAL_PATH:=$(LOCAL_PATH) | |||||
USER_LOCAL_C_INCLUDES:=$(LOCAL_C_INCLUDES) | |||||
USER_LOCAL_CFLAGS:=$(LOCAL_CFLAGS) | |||||
USER_LOCAL_STATIC_LIBRARIES:=$(LOCAL_STATIC_LIBRARIES) | |||||
USER_LOCAL_SHARED_LIBRARIES:=$(LOCAL_SHARED_LIBRARIES) | |||||
USER_LOCAL_LDLIBS:=$(LOCAL_LDLIBS) | |||||
LOCAL_PATH:=$(subst ?,,$(firstword ?$(subst \, ,$(subst /, ,$(call my-dir))))) | |||||
OPENCV_TARGET_ARCH_ABI:=$(TARGET_ARCH_ABI) | |||||
OPENCV_THIS_DIR:=$(patsubst $(LOCAL_PATH)\\%,%,$(patsubst $(LOCAL_PATH)/%,%,$(call my-dir))) | |||||
OPENCV_MK_DIR:=$(dir $(lastword $(MAKEFILE_LIST))) | |||||
OPENCV_3RDPARTY_LIBS_DIR:=$(OPENCV_THIS_DIR)/../3rdparty/libs/$(OPENCV_TARGET_ARCH_ABI) | |||||
OPENCV_BASEDIR:= | |||||
OPENCV_LOCAL_C_INCLUDES:="$(LOCAL_PATH)/$(OPENCV_THIS_DIR)/include/opencv" "$(LOCAL_PATH)/$(OPENCV_THIS_DIR)/include" | |||||
OPENCV_MODULES:=shape ml dnn objdetect superres stitching videostab calib3d features2d highgui videoio imgcodecs video photo imgproc flann core | |||||
OPENCV_SUB_MK:=$(call my-dir)/OpenCV-$(TARGET_ARCH_ABI).mk | |||||
ifeq ($(OPENCV_LIB_TYPE),) | |||||
OPENCV_LIB_TYPE:=SHARED | |||||
endif | |||||
ifeq ($(OPENCV_LIB_TYPE),SHARED) | |||||
OPENCV_LIBS:=java3 | |||||
OPENCV_LIB_TYPE:=SHARED | |||||
else | |||||
OPENCV_LIBS:=$(OPENCV_MODULES) | |||||
OPENCV_LIB_TYPE:=STATIC | |||||
endif | |||||
ifeq ($(OPENCV_LIB_TYPE),SHARED) | |||||
OPENCV_3RDPARTY_COMPONENTS:= | |||||
OPENCV_EXTRA_COMPONENTS:= | |||||
else | |||||
include $(OPENCV_SUB_MK) | |||||
endif | |||||
ifeq ($(OPENCV_LIB_TYPE),SHARED) | |||||
OPENCV_LIBS_DIR:=$(OPENCV_THIS_DIR)/../libs/$(OPENCV_TARGET_ARCH_ABI) | |||||
OPENCV_LIB_SUFFIX:=so | |||||
else | |||||
OPENCV_LIBS_DIR:=$(OPENCV_THIS_DIR)/../staticlibs/$(OPENCV_TARGET_ARCH_ABI) | |||||
OPENCV_LIB_SUFFIX:=a | |||||
OPENCV_INSTALL_MODULES:=on | |||||
endif | |||||
define add_opencv_module | |||||
include $(CLEAR_VARS) | |||||
LOCAL_MODULE:=opencv_$1 | |||||
LOCAL_SRC_FILES:=$(OPENCV_LIBS_DIR)/libopencv_$1.$(OPENCV_LIB_SUFFIX) | |||||
include $(PREBUILT_$(OPENCV_LIB_TYPE)_LIBRARY) | |||||
endef | |||||
define add_opencv_3rdparty_component | |||||
include $(CLEAR_VARS) | |||||
LOCAL_MODULE:=$1 | |||||
LOCAL_SRC_FILES:=$(OPENCV_3RDPARTY_LIBS_DIR)/lib$1.a | |||||
include $(PREBUILT_STATIC_LIBRARY) | |||||
endef | |||||
ifeq ($(OPENCV_MK_$(OPENCV_TARGET_ARCH_ABI)_ALREADY_INCLUDED),) | |||||
ifeq ($(OPENCV_INSTALL_MODULES),on) | |||||
$(foreach module,$(OPENCV_LIBS),$(eval $(call add_opencv_module,$(module)))) | |||||
endif | |||||
$(foreach module,$(OPENCV_3RDPARTY_COMPONENTS),$(eval $(call add_opencv_3rdparty_component,$(module)))) | |||||
ifneq ($(OPENCV_BASEDIR),) | |||||
OPENCV_LOCAL_C_INCLUDES += $(foreach mod, $(OPENCV_MODULES), $(OPENCV_BASEDIR)/modules/$(mod)/include) | |||||
endif | |||||
#turn off module installation to prevent their redefinition | |||||
OPENCV_MK_$(OPENCV_TARGET_ARCH_ABI)_ALREADY_INCLUDED:=on | |||||
endif | |||||
ifeq ($(OPENCV_LOCAL_CFLAGS),) | |||||
OPENCV_LOCAL_CFLAGS := -fPIC -DANDROID -fsigned-char | |||||
endif | |||||
include $(CLEAR_VARS) | |||||
LOCAL_C_INCLUDES:=$(USER_LOCAL_C_INCLUDES) | |||||
LOCAL_CFLAGS:=$(USER_LOCAL_CFLAGS) | |||||
LOCAL_STATIC_LIBRARIES:=$(USER_LOCAL_STATIC_LIBRARIES) | |||||
LOCAL_SHARED_LIBRARIES:=$(USER_LOCAL_SHARED_LIBRARIES) | |||||
LOCAL_LDLIBS:=$(USER_LOCAL_LDLIBS) | |||||
# Details: #10229 | |||||
ifeq ($(OPENCV_SKIP_ANDROID_IPP_FIX_1),) | |||||
LOCAL_LDFLAGS += -Wl,--exclude-libs,libippicv.a | |||||
LOCAL_LDFLAGS += -Wl,--exclude-libs,libippiw.a | |||||
else | |||||
ifeq ($(OPENCV_SKIP_ANDROID_IPP_FIX_2),) | |||||
LOCAL_LDFLAGS += -Wl,-Bsymbolic | |||||
endif | |||||
endif | |||||
LOCAL_C_INCLUDES += $(OPENCV_LOCAL_C_INCLUDES) | |||||
LOCAL_CFLAGS += $(OPENCV_LOCAL_CFLAGS) | |||||
ifeq ($(OPENCV_INSTALL_MODULES),on) | |||||
LOCAL_$(OPENCV_LIB_TYPE)_LIBRARIES += $(foreach mod, $(OPENCV_LIBS), opencv_$(mod)) | |||||
else | |||||
$(call __ndk_info,OpenCV: You should ignore warning about 'non-system libraries in linker flags' and 'opencv_java' library.) | |||||
$(call __ndk_info, 'OPENCV_INSTALL_MODULES:=on' can be used to build APK with included OpenCV binaries) | |||||
LOCAL_LDLIBS += -L$(call host-path,$(LOCAL_PATH)/$(OPENCV_LIBS_DIR)) $(foreach lib, $(OPENCV_LIBS), -lopencv_$(lib)) | |||||
endif | |||||
ifeq ($(OPENCV_LIB_TYPE),STATIC) | |||||
LOCAL_STATIC_LIBRARIES += $(OPENCV_3RDPARTY_COMPONENTS) | |||||
endif | |||||
LOCAL_LDLIBS += $(foreach lib,$(OPENCV_EXTRA_COMPONENTS), -l$(lib)) | |||||
#restore the LOCAL_PATH | |||||
LOCAL_PATH:=$(USER_LOCAL_PATH) |
@@ -0,0 +1,15 @@ | |||||
set(OpenCV_VERSION 3.4.2) | |||||
set(PACKAGE_VERSION ${OpenCV_VERSION}) | |||||
set(PACKAGE_VERSION_EXACT False) | |||||
set(PACKAGE_VERSION_COMPATIBLE False) | |||||
if(PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION) | |||||
set(PACKAGE_VERSION_EXACT True) | |||||
set(PACKAGE_VERSION_COMPATIBLE True) | |||||
endif() | |||||
if(PACKAGE_FIND_VERSION_MAJOR EQUAL 3 | |||||
AND PACKAGE_FIND_VERSION VERSION_LESS PACKAGE_VERSION) | |||||
set(PACKAGE_VERSION_COMPATIBLE True) | |||||
endif() |
@@ -0,0 +1,50 @@ | |||||
# =================================================================================== | |||||
# The OpenCV CMake configuration file | |||||
# | |||||
# ** File generated automatically, do not modify ** | |||||
# | |||||
# Usage from an external project: | |||||
# In your CMakeLists.txt, add these lines: | |||||
# | |||||
# find_package(OpenCV REQUIRED) | |||||
# include_directories(${OpenCV_INCLUDE_DIRS}) # Not needed for CMake >= 2.8.11 | |||||
# target_link_libraries(MY_TARGET_NAME ${OpenCV_LIBS}) | |||||
# | |||||
# Or you can search for specific OpenCV modules: | |||||
# | |||||
# find_package(OpenCV REQUIRED core videoio) | |||||
# | |||||
# If the module is found then OPENCV_<MODULE>_FOUND is set to TRUE. | |||||
# | |||||
# This file will define the following variables: | |||||
# - OpenCV_LIBS : The list of all imported targets for OpenCV modules. | |||||
# - OpenCV_INCLUDE_DIRS : The OpenCV include directories. | |||||
# - OpenCV_ANDROID_NATIVE_API_LEVEL : Minimum required level of Android API. | |||||
# - OpenCV_VERSION : The version of this OpenCV build: "3.4.2" | |||||
# - OpenCV_VERSION_MAJOR : Major version part of OpenCV_VERSION: "3" | |||||
# - OpenCV_VERSION_MINOR : Minor version part of OpenCV_VERSION: "4" | |||||
# - OpenCV_VERSION_PATCH : Patch version part of OpenCV_VERSION: "2" | |||||
# - OpenCV_VERSION_STATUS : Development status of this build: "" | |||||
# | |||||
# =================================================================================== | |||||
# Extract directory name from full path of the file currently being processed. | |||||
# Note that CMake 2.8.3 introduced CMAKE_CURRENT_LIST_DIR. We reimplement it | |||||
# for older versions of CMake to support these as well. | |||||
if(CMAKE_VERSION VERSION_LESS "2.8.3") | |||||
get_filename_component(CMAKE_CURRENT_LIST_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) | |||||
endif() | |||||
if(NOT DEFINED OpenCV_CONFIG_SUBDIR) | |||||
set(OpenCV_CONFIG_SUBDIR "/abi-${ANDROID_NDK_ABI_NAME}") | |||||
endif() | |||||
set(OpenCV_CONFIG_PATH "${CMAKE_CURRENT_LIST_DIR}${OpenCV_CONFIG_SUBDIR}") | |||||
if(EXISTS "${OpenCV_CONFIG_PATH}/OpenCVConfig.cmake") | |||||
include("${OpenCV_CONFIG_PATH}/OpenCVConfig.cmake") | |||||
else() | |||||
if(NOT OpenCV_FIND_QUIETLY) | |||||
message(WARNING "Found OpenCV Android Pack but it has no binaries compatible with your ABI (can't find: ${OpenCV_CONFIG_SUBDIR})") | |||||
endif() | |||||
set(OpenCV_FOUND FALSE) | |||||
endif() |
@@ -0,0 +1,15 @@ | |||||
set(OpenCV_VERSION 3.4.2) | |||||
set(PACKAGE_VERSION ${OpenCV_VERSION}) | |||||
set(PACKAGE_VERSION_EXACT False) | |||||
set(PACKAGE_VERSION_COMPATIBLE False) | |||||
if(PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION) | |||||
set(PACKAGE_VERSION_EXACT True) | |||||
set(PACKAGE_VERSION_COMPATIBLE True) | |||||
endif() | |||||
if(PACKAGE_FIND_VERSION_MAJOR EQUAL 3 | |||||
AND PACKAGE_FIND_VERSION VERSION_LESS PACKAGE_VERSION) | |||||
set(PACKAGE_VERSION_COMPATIBLE True) | |||||
endif() |
@@ -0,0 +1,328 @@ | |||||
# =================================================================================== | |||||
# The OpenCV CMake configuration file | |||||
# | |||||
# ** File generated automatically, do not modify ** | |||||
# | |||||
# Usage from an external project: | |||||
# In your CMakeLists.txt, add these lines: | |||||
# | |||||
# find_package(OpenCV REQUIRED) | |||||
# include_directories(${OpenCV_INCLUDE_DIRS}) # Not needed for CMake >= 2.8.11 | |||||
# target_link_libraries(MY_TARGET_NAME ${OpenCV_LIBS}) | |||||
# | |||||
# Or you can search for specific OpenCV modules: | |||||
# | |||||
# find_package(OpenCV REQUIRED core videoio) | |||||
# | |||||
# You can also mark OpenCV components as optional: | |||||
# find_package(OpenCV REQUIRED core OPTIONAL_COMPONENTS viz) | |||||
# | |||||
# If the module is found then OPENCV_<MODULE>_FOUND is set to TRUE. | |||||
# | |||||
# This file will define the following variables: | |||||
# - OpenCV_LIBS : The list of all imported targets for OpenCV modules. | |||||
# - OpenCV_INCLUDE_DIRS : The OpenCV include directories. | |||||
# - OpenCV_COMPUTE_CAPABILITIES : The version of compute capability. | |||||
# - OpenCV_ANDROID_NATIVE_API_LEVEL : Minimum required level of Android API. | |||||
# - OpenCV_VERSION : The version of this OpenCV build: "3.4.2" | |||||
# - OpenCV_VERSION_MAJOR : Major version part of OpenCV_VERSION: "3" | |||||
# - OpenCV_VERSION_MINOR : Minor version part of OpenCV_VERSION: "4" | |||||
# - OpenCV_VERSION_PATCH : Patch version part of OpenCV_VERSION: "2" | |||||
# - OpenCV_VERSION_STATUS : Development status of this build: "" | |||||
# | |||||
# Advanced variables: | |||||
# - OpenCV_SHARED : Use OpenCV as shared library | |||||
# - OpenCV_INSTALL_PATH : OpenCV location | |||||
# - OpenCV_LIB_COMPONENTS : Present OpenCV modules list | |||||
# - OpenCV_USE_MANGLED_PATHS : Mangled OpenCV path flag | |||||
# | |||||
# Deprecated variables: | |||||
# - OpenCV_VERSION_TWEAK : Always "0" | |||||
# | |||||
# =================================================================================== | |||||
# ====================================================== | |||||
# Version variables: | |||||
# ====================================================== | |||||
SET(OpenCV_VERSION 3.4.2) | |||||
SET(OpenCV_VERSION_MAJOR 3) | |||||
SET(OpenCV_VERSION_MINOR 4) | |||||
SET(OpenCV_VERSION_PATCH 2) | |||||
SET(OpenCV_VERSION_TWEAK 0) | |||||
SET(OpenCV_VERSION_STATUS "") | |||||
include(FindPackageHandleStandardArgs) | |||||
if(NOT CMAKE_VERSION VERSION_LESS 2.8.8 | |||||
AND OpenCV_FIND_COMPONENTS # prevent excessive output | |||||
) | |||||
# HANDLE_COMPONENTS was introduced in CMake 2.8.8 | |||||
list(APPEND _OpenCV_FPHSA_ARGS HANDLE_COMPONENTS) | |||||
# The missing components will be handled by the FindPackageHandleStandardArgs | |||||
# module. | |||||
set(_OpenCV_HANDLE_COMPONENTS_MANUALLY FALSE) | |||||
else() | |||||
# The missing components will be handled by this config. | |||||
set(_OpenCV_HANDLE_COMPONENTS_MANUALLY TRUE) | |||||
endif() | |||||
# Extract directory name from full path of the file currently being processed. | |||||
# Note that CMake 2.8.3 introduced CMAKE_CURRENT_LIST_DIR. We reimplement it | |||||
# for older versions of CMake to support these as well. | |||||
if(CMAKE_VERSION VERSION_LESS "2.8.3") | |||||
get_filename_component(CMAKE_CURRENT_LIST_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) | |||||
endif() | |||||
# Extract the directory where *this* file has been installed (determined at cmake run-time) | |||||
# Get the absolute path with no ../.. relative marks, to eliminate implicit linker warnings | |||||
set(OpenCV_CONFIG_PATH "${CMAKE_CURRENT_LIST_DIR}") | |||||
get_filename_component(OpenCV_INSTALL_PATH "${OpenCV_CONFIG_PATH}/../../../../" REALPATH) | |||||
# Search packages for host system instead of packages for target system. | |||||
# in case of cross compilation this macro should be defined by toolchain file | |||||
if(NOT COMMAND find_host_package) | |||||
macro(find_host_package) | |||||
find_package(${ARGN}) | |||||
endmacro() | |||||
endif() | |||||
if(NOT COMMAND find_host_program) | |||||
macro(find_host_program) | |||||
find_program(${ARGN}) | |||||
endmacro() | |||||
endif() | |||||
# Android API level from which OpenCV has been compiled is remembered | |||||
set(OpenCV_ANDROID_NATIVE_API_LEVEL "9") | |||||
# ============================================================== | |||||
# Check OpenCV availability | |||||
# ============================================================== | |||||
if(OpenCV_ANDROID_NATIVE_API_LEVEL GREATER ANDROID_NATIVE_API_LEVEL) | |||||
if(NOT OpenCV_FIND_QUIETLY) | |||||
message(WARNING "Minimum required by OpenCV API level is android-${OpenCV_ANDROID_NATIVE_API_LEVEL}") | |||||
endif() | |||||
set(OpenCV_FOUND 0) | |||||
return() | |||||
endif() | |||||
# Some additional settings are required if OpenCV is built as static libs | |||||
set(OpenCV_SHARED OFF) | |||||
# Enables mangled install paths, that help with side by side installs | |||||
set(OpenCV_USE_MANGLED_PATHS FALSE) | |||||
set(OpenCV_LIB_COMPONENTS opencv_highgui;opencv_features2d;opencv_shape;opencv_imgcodecs;opencv_ml;opencv_videoio;opencv_dnn;opencv_flann;opencv_objdetect;opencv_core;opencv_calib3d;opencv_video;opencv_superres;opencv_photo;opencv_imgproc;opencv_stitching;opencv_videostab;opencv_java) | |||||
set(OpenCV_INCLUDE_DIRS "${OpenCV_INSTALL_PATH}/sdk/native/jni/include" "${OpenCV_INSTALL_PATH}/sdk/native/jni/include/opencv") | |||||
if(NOT TARGET opencv_core) | |||||
include(${CMAKE_CURRENT_LIST_DIR}/OpenCVModules${OpenCV_MODULES_SUFFIX}.cmake) | |||||
endif() | |||||
if(NOT CMAKE_VERSION VERSION_LESS "2.8.11") | |||||
# Target property INTERFACE_INCLUDE_DIRECTORIES available since 2.8.11: | |||||
# * http://www.cmake.org/cmake/help/v2.8.11/cmake.html#prop_tgt:INTERFACE_INCLUDE_DIRECTORIES | |||||
foreach(__component ${OpenCV_LIB_COMPONENTS}) | |||||
if(TARGET ${__component}) | |||||
set_target_properties( | |||||
${__component} | |||||
PROPERTIES | |||||
INTERFACE_INCLUDE_DIRECTORIES "${OpenCV_INCLUDE_DIRS}" | |||||
) | |||||
endif() | |||||
endforeach() | |||||
endif() | |||||
if(NOT DEFINED OPENCV_MAP_IMPORTED_CONFIG) | |||||
if(CMAKE_GENERATOR MATCHES "Visual Studio" OR MSVC) | |||||
# OpenCV supports Debug and Release builds only. | |||||
# But MSVS has 'RelWithDebInfo' 'MinSizeRel' configurations for applications. | |||||
# By default CMake maps these configuration on the first available (Debug) which is wrong. | |||||
# Non-Debug build of Application can't be used with OpenCV Debug build (ABI mismatch problem) | |||||
# Add mapping of RelWithDebInfo and MinSizeRel to Release here | |||||
set(OPENCV_MAP_IMPORTED_CONFIG "RELWITHDEBINFO=!Release;MINSIZEREL=!Release") | |||||
endif() | |||||
endif() | |||||
set(__remap_warnings "") | |||||
macro(ocv_map_imported_config target) | |||||
if(DEFINED OPENCV_MAP_IMPORTED_CONFIG) # list, "RELWITHDEBINFO=Release;MINSIZEREL=Release" | |||||
get_target_property(__available_configurations ${target} IMPORTED_CONFIGURATIONS) | |||||
foreach(remap ${OPENCV_MAP_IMPORTED_CONFIG}) | |||||
if(remap MATCHES "^(.+)=(!?)([^!]+)$") | |||||
set(__remap_config "${CMAKE_MATCH_1}") | |||||
set(__final_config "${CMAKE_MATCH_3}") | |||||
set(__force_flag "${CMAKE_MATCH_2}") | |||||
string(TOUPPER "${__final_config}" __final_config_upper) | |||||
string(TOUPPER "${__remap_config}" __remap_config_upper) | |||||
if(";${__available_configurations};" MATCHES ";${__remap_config_upper};" AND NOT "${__force_flag}" STREQUAL "!") | |||||
# configuration already exists, skip remap | |||||
set(__remap_warnings "${__remap_warnings}... Configuration already exists ${__remap_config} (skip mapping ${__remap_config} => ${__final_config}) (available configurations: ${__available_configurations})\n") | |||||
continue() | |||||
endif() | |||||
if(__available_configurations AND NOT ";${__available_configurations};" MATCHES ";${__final_config_upper};") | |||||
# skip, configuration is not available | |||||
if(NOT "${__force_flag}" STREQUAL "!") | |||||
set(__remap_warnings "${__remap_warnings}... Configuration is not available '${__final_config}' for ${target}, build may fail (available configurations: ${__available_configurations})\n") | |||||
endif() | |||||
endif() | |||||
set_target_properties(${target} PROPERTIES | |||||
MAP_IMPORTED_CONFIG_${__remap_config} "${__final_config}" | |||||
) | |||||
else() | |||||
message(WARNING "Invalid entry of OPENCV_MAP_IMPORTED_CONFIG: '${remap}' (${OPENCV_MAP_IMPORTED_CONFIG})") | |||||
endif() | |||||
endforeach() | |||||
endif() | |||||
endmacro() | |||||
# ============================================================== | |||||
# Form list of modules (components) to find | |||||
# ============================================================== | |||||
if(NOT OpenCV_FIND_COMPONENTS) | |||||
set(OpenCV_FIND_COMPONENTS ${OpenCV_LIB_COMPONENTS}) | |||||
list(REMOVE_ITEM OpenCV_FIND_COMPONENTS opencv_java) | |||||
if(GTest_FOUND OR GTEST_FOUND) | |||||
list(REMOVE_ITEM OpenCV_FIND_COMPONENTS opencv_ts) | |||||
endif() | |||||
endif() | |||||
set(OpenCV_WORLD_COMPONENTS ) | |||||
# expand short module names and see if requested components exist | |||||
foreach(__cvcomponent ${OpenCV_FIND_COMPONENTS}) | |||||
# Store the name of the original component so we can set the | |||||
# OpenCV_<component>_FOUND variable which can be checked by the user. | |||||
set (__original_cvcomponent ${__cvcomponent}) | |||||
if(NOT __cvcomponent MATCHES "^opencv_") | |||||
set(__cvcomponent opencv_${__cvcomponent}) | |||||
endif() | |||||
list(FIND OpenCV_LIB_COMPONENTS ${__cvcomponent} __cvcomponentIdx) | |||||
if(__cvcomponentIdx LESS 0) | |||||
if(_OpenCV_HANDLE_COMPONENTS_MANUALLY) | |||||
# Either the component is required or the user did not set any components at | |||||
# all. In the latter case, the OpenCV_FIND_REQUIRED_<component> variable | |||||
# will not be defined since it is not set by this config. So let's assume | |||||
# the implicitly set components are always required. | |||||
if(NOT DEFINED OpenCV_FIND_REQUIRED_${__original_cvcomponent} OR | |||||
OpenCV_FIND_REQUIRED_${__original_cvcomponent}) | |||||
message(FATAL_ERROR "${__cvcomponent} is required but was not found") | |||||
elseif(NOT OpenCV_FIND_QUIETLY) | |||||
# The component was marked as optional using OPTIONAL_COMPONENTS | |||||
message(WARNING "Optional component ${__cvcomponent} was not found") | |||||
endif() | |||||
endif(_OpenCV_HANDLE_COMPONENTS_MANUALLY) | |||||
#indicate that module is NOT found | |||||
string(TOUPPER "${__cvcomponent}" __cvcomponentUP) | |||||
set(${__cvcomponentUP}_FOUND "${__cvcomponentUP}_FOUND-NOTFOUND") | |||||
set(OpenCV_${__original_cvcomponent}_FOUND FALSE) | |||||
else() | |||||
# Not using list(APPEND) here, because OpenCV_LIBS may not exist yet. | |||||
# Also not clearing OpenCV_LIBS anywhere, so that multiple calls | |||||
# to find_package(OpenCV) with different component lists add up. | |||||
set(OpenCV_LIBS ${OpenCV_LIBS} "${__cvcomponent}") | |||||
#indicate that module is found | |||||
string(TOUPPER "${__cvcomponent}" __cvcomponentUP) | |||||
set(${__cvcomponentUP}_FOUND 1) | |||||
set(OpenCV_${__original_cvcomponent}_FOUND TRUE) | |||||
endif() | |||||
if(OpenCV_SHARED AND ";${OpenCV_WORLD_COMPONENTS};" MATCHES ";${__cvcomponent};" AND NOT TARGET ${__cvcomponent}) | |||||
get_target_property(__implib_dbg opencv_world IMPORTED_IMPLIB_DEBUG) | |||||
get_target_property(__implib_release opencv_world IMPORTED_IMPLIB_RELEASE) | |||||
get_target_property(__location_dbg opencv_world IMPORTED_LOCATION_DEBUG) | |||||
get_target_property(__location_release opencv_world IMPORTED_LOCATION_RELEASE) | |||||
get_target_property(__include_dir opencv_world INTERFACE_INCLUDE_DIRECTORIES) | |||||
add_library(${__cvcomponent} SHARED IMPORTED) | |||||
set_target_properties(${__cvcomponent} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${__include_dir}") | |||||
if(__location_dbg) | |||||
set_property(TARGET ${__cvcomponent} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) | |||||
set_target_properties(${__cvcomponent} PROPERTIES | |||||
IMPORTED_IMPLIB_DEBUG "${__implib_dbg}" | |||||
IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG "" | |||||
IMPORTED_LOCATION_DEBUG "${__location_dbg}" | |||||
) | |||||
endif() | |||||
if(__location_release) | |||||
set_property(TARGET ${__cvcomponent} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(${__cvcomponent} PROPERTIES | |||||
IMPORTED_IMPLIB_RELEASE "${__implib_release}" | |||||
IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "" | |||||
IMPORTED_LOCATION_RELEASE "${__location_release}" | |||||
) | |||||
endif() | |||||
endif() | |||||
if(TARGET ${__cvcomponent}) | |||||
ocv_map_imported_config(${__cvcomponent}) | |||||
endif() | |||||
endforeach() | |||||
if(__remap_warnings AND NOT OpenCV_FIND_QUIETLY) | |||||
message("OpenCV: configurations remap warnings:\n${__remap_warnings}OpenCV: Check variable OPENCV_MAP_IMPORTED_CONFIG=${OPENCV_MAP_IMPORTED_CONFIG}") | |||||
endif() | |||||
# ============================================================== | |||||
# Compatibility stuff | |||||
# ============================================================== | |||||
set(OpenCV_LIBRARIES ${OpenCV_LIBS}) | |||||
# | |||||
# Some macroses for samples | |||||
# | |||||
macro(ocv_check_dependencies) | |||||
set(OCV_DEPENDENCIES_FOUND TRUE) | |||||
foreach(d ${ARGN}) | |||||
if(NOT TARGET ${d}) | |||||
message(WARNING "OpenCV: Can't resolve dependency: ${d}") | |||||
set(OCV_DEPENDENCIES_FOUND FALSE) | |||||
break() | |||||
endif() | |||||
endforeach() | |||||
endmacro() | |||||
# adds include directories in such way that directories from the OpenCV source tree go first | |||||
function(ocv_include_directories) | |||||
set(__add_before "") | |||||
file(TO_CMAKE_PATH "${OpenCV_INSTALL_PATH}" __baseDir) | |||||
foreach(dir ${ARGN}) | |||||
get_filename_component(__abs_dir "${dir}" ABSOLUTE) | |||||
if("${__abs_dir}" MATCHES "^${__baseDir}") | |||||
list(APPEND __add_before "${dir}") | |||||
else() | |||||
include_directories(AFTER SYSTEM "${dir}") | |||||
endif() | |||||
endforeach() | |||||
include_directories(BEFORE ${__add_before}) | |||||
endfunction() | |||||
macro(ocv_include_modules) | |||||
include_directories(BEFORE "${OpenCV_INCLUDE_DIRS}") | |||||
endmacro() | |||||
macro(ocv_include_modules_recurse) | |||||
include_directories(BEFORE "${OpenCV_INCLUDE_DIRS}") | |||||
endmacro() | |||||
macro(ocv_target_link_libraries) | |||||
target_link_libraries(${ARGN}) | |||||
endmacro() | |||||
# remove all matching elements from the list | |||||
macro(ocv_list_filterout lst regex) | |||||
foreach(item ${${lst}}) | |||||
if(item MATCHES "${regex}") | |||||
list(REMOVE_ITEM ${lst} "${item}") | |||||
endif() | |||||
endforeach() | |||||
endmacro() | |||||
# We do not actually need REQUIRED_VARS to be checked for. Just use the | |||||
# installation directory for the status. | |||||
find_package_handle_standard_args(OpenCV REQUIRED_VARS OpenCV_INSTALL_PATH | |||||
VERSION_VAR OpenCV_VERSION ${_OpenCV_FPHSA_ARGS}) |
@@ -0,0 +1,285 @@ | |||||
#---------------------------------------------------------------- | |||||
# Generated CMake target import file for configuration "Release". | |||||
#---------------------------------------------------------------- | |||||
# Commands may need to know the format version. | |||||
set(CMAKE_IMPORT_FILE_VERSION 1) | |||||
# Import target "libcpufeatures" for configuration "Release" | |||||
set_property(TARGET libcpufeatures APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(libcpufeatures PROPERTIES | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/libcpufeatures.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS libcpufeatures ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_libcpufeatures "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/libcpufeatures.a" ) | |||||
# Import target "libjpeg-turbo" for configuration "Release" | |||||
set_property(TARGET libjpeg-turbo APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(libjpeg-turbo PROPERTIES | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/liblibjpeg-turbo.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS libjpeg-turbo ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_libjpeg-turbo "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/liblibjpeg-turbo.a" ) | |||||
# Import target "libtiff" for configuration "Release" | |||||
set_property(TARGET libtiff APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(libtiff PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C;CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/liblibtiff.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS libtiff ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_libtiff "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/liblibtiff.a" ) | |||||
# Import target "libwebp" for configuration "Release" | |||||
set_property(TARGET libwebp APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(libwebp PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/liblibwebp.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS libwebp ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_libwebp "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/liblibwebp.a" ) | |||||
# Import target "libjasper" for configuration "Release" | |||||
set_property(TARGET libjasper APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(libjasper PROPERTIES | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/liblibjasper.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS libjasper ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_libjasper "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/liblibjasper.a" ) | |||||
# Import target "libpng" for configuration "Release" | |||||
set_property(TARGET libpng APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(libpng PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "ASM;C" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/liblibpng.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS libpng ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_libpng "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/liblibpng.a" ) | |||||
# Import target "IlmImf" for configuration "Release" | |||||
set_property(TARGET IlmImf APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(IlmImf PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/libIlmImf.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS IlmImf ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_IlmImf "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/libIlmImf.a" ) | |||||
# Import target "tbb" for configuration "Release" | |||||
set_property(TARGET tbb APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(tbb PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/libtbb.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS tbb ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_tbb "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/libtbb.a" ) | |||||
# Import target "libprotobuf" for configuration "Release" | |||||
set_property(TARGET libprotobuf APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(libprotobuf PROPERTIES | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/liblibprotobuf.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS libprotobuf ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_libprotobuf "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/liblibprotobuf.a" ) | |||||
# Import target "tegra_hal" for configuration "Release" | |||||
set_property(TARGET tegra_hal APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(tegra_hal PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/libtegra_hal.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS tegra_hal ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_tegra_hal "${_IMPORT_PREFIX}/sdk/native/3rdparty/libs/armeabi-v7a/libtegra_hal.a" ) | |||||
# Import target "opencv_core" for configuration "Release" | |||||
set_property(TARGET opencv_core APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_core PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_core.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_core ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_core "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_core.a" ) | |||||
# Import target "opencv_flann" for configuration "Release" | |||||
set_property(TARGET opencv_flann APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_flann PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_flann.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_flann ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_flann "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_flann.a" ) | |||||
# Import target "opencv_imgproc" for configuration "Release" | |||||
set_property(TARGET opencv_imgproc APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_imgproc PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_imgproc.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_imgproc ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_imgproc "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_imgproc.a" ) | |||||
# Import target "opencv_ml" for configuration "Release" | |||||
set_property(TARGET opencv_ml APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_ml PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_ml.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_ml ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_ml "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_ml.a" ) | |||||
# Import target "opencv_objdetect" for configuration "Release" | |||||
set_property(TARGET opencv_objdetect APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_objdetect PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_objdetect.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_objdetect ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_objdetect "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_objdetect.a" ) | |||||
# Import target "opencv_photo" for configuration "Release" | |||||
set_property(TARGET opencv_photo APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_photo PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_photo.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_photo ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_photo "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_photo.a" ) | |||||
# Import target "opencv_video" for configuration "Release" | |||||
set_property(TARGET opencv_video APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_video PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_video.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_video ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_video "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_video.a" ) | |||||
# Import target "opencv_dnn" for configuration "Release" | |||||
set_property(TARGET opencv_dnn APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_dnn PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_dnn.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_dnn ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_dnn "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_dnn.a" ) | |||||
# Import target "opencv_imgcodecs" for configuration "Release" | |||||
set_property(TARGET opencv_imgcodecs APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_imgcodecs PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_imgcodecs.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_imgcodecs ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_imgcodecs "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_imgcodecs.a" ) | |||||
# Import target "opencv_shape" for configuration "Release" | |||||
set_property(TARGET opencv_shape APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_shape PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_shape.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_shape ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_shape "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_shape.a" ) | |||||
# Import target "opencv_videoio" for configuration "Release" | |||||
set_property(TARGET opencv_videoio APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_videoio PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_videoio.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_videoio ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_videoio "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_videoio.a" ) | |||||
# Import target "opencv_highgui" for configuration "Release" | |||||
set_property(TARGET opencv_highgui APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_highgui PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_highgui.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_highgui ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_highgui "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_highgui.a" ) | |||||
# Import target "opencv_superres" for configuration "Release" | |||||
set_property(TARGET opencv_superres APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_superres PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_superres.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_superres ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_superres "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_superres.a" ) | |||||
# Import target "opencv_features2d" for configuration "Release" | |||||
set_property(TARGET opencv_features2d APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_features2d PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_features2d.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_features2d ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_features2d "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_features2d.a" ) | |||||
# Import target "opencv_calib3d" for configuration "Release" | |||||
set_property(TARGET opencv_calib3d APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_calib3d PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_calib3d.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_calib3d ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_calib3d "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_calib3d.a" ) | |||||
# Import target "opencv_java" for configuration "Release" | |||||
set_property(TARGET opencv_java APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_java PROPERTIES | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/libs/armeabi-v7a/libopencv_java3.so" | |||||
IMPORTED_SONAME_RELEASE "libopencv_java3.so" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_java ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_java "${_IMPORT_PREFIX}/sdk/native/libs/armeabi-v7a/libopencv_java3.so" ) | |||||
# Import target "opencv_stitching" for configuration "Release" | |||||
set_property(TARGET opencv_stitching APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_stitching PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_stitching.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_stitching ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_stitching "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_stitching.a" ) | |||||
# Import target "opencv_videostab" for configuration "Release" | |||||
set_property(TARGET opencv_videostab APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) | |||||
set_target_properties(opencv_videostab PROPERTIES | |||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" | |||||
IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_videostab.a" | |||||
) | |||||
list(APPEND _IMPORT_CHECK_TARGETS opencv_videostab ) | |||||
list(APPEND _IMPORT_CHECK_FILES_FOR_opencv_videostab "${_IMPORT_PREFIX}/sdk/native/staticlibs/armeabi-v7a/libopencv_videostab.a" ) | |||||
# Commands beyond this point should not need to know the version. | |||||
set(CMAKE_IMPORT_FILE_VERSION) |
@@ -0,0 +1,263 @@ | |||||
# Generated by CMake 2.8.12.2 | |||||
if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) | |||||
message(FATAL_ERROR "CMake >= 2.6.0 required") | |||||
endif() | |||||
cmake_policy(PUSH) | |||||
cmake_policy(VERSION 2.6) | |||||
#---------------------------------------------------------------- | |||||
# Generated CMake target import file. | |||||
#---------------------------------------------------------------- | |||||
# Commands may need to know the format version. | |||||
set(CMAKE_IMPORT_FILE_VERSION 1) | |||||
# Protect against multiple inclusion, which would fail when already imported targets are added once more. | |||||
set(_targetsDefined) | |||||
set(_targetsNotDefined) | |||||
set(_expectedTargets) | |||||
foreach(_expectedTarget libcpufeatures libjpeg-turbo libtiff libwebp libjasper libpng IlmImf tbb libprotobuf tegra_hal opencv_core opencv_flann opencv_imgproc opencv_ml opencv_objdetect opencv_photo opencv_video opencv_dnn opencv_imgcodecs opencv_shape opencv_videoio opencv_highgui opencv_superres opencv_features2d opencv_calib3d opencv_java opencv_stitching opencv_videostab) | |||||
list(APPEND _expectedTargets ${_expectedTarget}) | |||||
if(NOT TARGET ${_expectedTarget}) | |||||
list(APPEND _targetsNotDefined ${_expectedTarget}) | |||||
endif() | |||||
if(TARGET ${_expectedTarget}) | |||||
list(APPEND _targetsDefined ${_expectedTarget}) | |||||
endif() | |||||
endforeach() | |||||
if("${_targetsDefined}" STREQUAL "${_expectedTargets}") | |||||
set(CMAKE_IMPORT_FILE_VERSION) | |||||
cmake_policy(POP) | |||||
return() | |||||
endif() | |||||
if(NOT "${_targetsDefined}" STREQUAL "") | |||||
message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") | |||||
endif() | |||||
unset(_targetsDefined) | |||||
unset(_targetsNotDefined) | |||||
unset(_expectedTargets) | |||||
# Compute the installation prefix relative to this file. | |||||
get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) | |||||
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) | |||||
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) | |||||
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) | |||||
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) | |||||
# Create imported target libcpufeatures | |||||
add_library(libcpufeatures STATIC IMPORTED) | |||||
# Create imported target libjpeg-turbo | |||||
add_library(libjpeg-turbo STATIC IMPORTED) | |||||
# Create imported target libtiff | |||||
add_library(libtiff STATIC IMPORTED) | |||||
set_target_properties(libtiff PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "z" | |||||
) | |||||
# Create imported target libwebp | |||||
add_library(libwebp STATIC IMPORTED) | |||||
set_target_properties(libwebp PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "libcpufeatures" | |||||
) | |||||
# Create imported target libjasper | |||||
add_library(libjasper STATIC IMPORTED) | |||||
# Create imported target libpng | |||||
add_library(libpng STATIC IMPORTED) | |||||
set_target_properties(libpng PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "z" | |||||
) | |||||
# Create imported target IlmImf | |||||
add_library(IlmImf STATIC IMPORTED) | |||||
set_target_properties(IlmImf PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "z" | |||||
) | |||||
# Create imported target tbb | |||||
add_library(tbb STATIC IMPORTED) | |||||
set_target_properties(tbb PROPERTIES | |||||
INTERFACE_COMPILE_DEFINITIONS "TBB_USE_GCC_BUILTINS=1;__TBB_GCC_BUILTIN_ATOMICS_PRESENT=1" | |||||
INTERFACE_LINK_LIBRARIES "c;m;dl" | |||||
) | |||||
# Create imported target libprotobuf | |||||
add_library(libprotobuf STATIC IMPORTED) | |||||
# Create imported target tegra_hal | |||||
add_library(tegra_hal STATIC IMPORTED) | |||||
# Create imported target opencv_core | |||||
add_library(opencv_core STATIC IMPORTED) | |||||
set_target_properties(opencv_core PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>;$<LINK_ONLY:tbb>;$<LINK_ONLY:z>;$<LINK_ONLY:libcpufeatures>;$<LINK_ONLY:tegra_hal>" | |||||
) | |||||
# Create imported target opencv_flann | |||||
add_library(opencv_flann STATIC IMPORTED) | |||||
set_target_properties(opencv_flann PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "opencv_core;$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>" | |||||
) | |||||
# Create imported target opencv_imgproc | |||||
add_library(opencv_imgproc STATIC IMPORTED) | |||||
set_target_properties(opencv_imgproc PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "opencv_core;$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>" | |||||
) | |||||
# Create imported target opencv_ml | |||||
add_library(opencv_ml STATIC IMPORTED) | |||||
set_target_properties(opencv_ml PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "opencv_core;$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>" | |||||
) | |||||
# Create imported target opencv_objdetect | |||||
add_library(opencv_objdetect STATIC IMPORTED) | |||||
set_target_properties(opencv_objdetect PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "opencv_core;opencv_imgproc;$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>" | |||||
) | |||||
# Create imported target opencv_photo | |||||
add_library(opencv_photo STATIC IMPORTED) | |||||
set_target_properties(opencv_photo PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "opencv_core;opencv_imgproc;$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>" | |||||
) | |||||
# Create imported target opencv_video | |||||
add_library(opencv_video STATIC IMPORTED) | |||||
set_target_properties(opencv_video PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "opencv_core;opencv_imgproc;$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>" | |||||
) | |||||
# Create imported target opencv_dnn | |||||
add_library(opencv_dnn STATIC IMPORTED) | |||||
set_target_properties(opencv_dnn PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "opencv_core;opencv_imgproc;$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>;$<LINK_ONLY:libprotobuf>" | |||||
) | |||||
# Create imported target opencv_imgcodecs | |||||
add_library(opencv_imgcodecs STATIC IMPORTED) | |||||
set_target_properties(opencv_imgcodecs PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "opencv_core;opencv_imgproc;$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>;$<LINK_ONLY:z>;$<LINK_ONLY:libjpeg-turbo>;$<LINK_ONLY:libwebp>;$<LINK_ONLY:libpng>;$<LINK_ONLY:libtiff>;$<LINK_ONLY:libjasper>;$<LINK_ONLY:IlmImf>" | |||||
) | |||||
# Create imported target opencv_shape | |||||
add_library(opencv_shape STATIC IMPORTED) | |||||
set_target_properties(opencv_shape PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "opencv_core;opencv_imgproc;opencv_video;$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>" | |||||
) | |||||
# Create imported target opencv_videoio | |||||
add_library(opencv_videoio STATIC IMPORTED) | |||||
set_target_properties(opencv_videoio PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "opencv_core;opencv_imgproc;opencv_imgcodecs;$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>" | |||||
) | |||||
# Create imported target opencv_highgui | |||||
add_library(opencv_highgui STATIC IMPORTED) | |||||
set_target_properties(opencv_highgui PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "opencv_core;opencv_imgproc;opencv_imgcodecs;opencv_videoio;$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>" | |||||
) | |||||
# Create imported target opencv_superres | |||||
add_library(opencv_superres STATIC IMPORTED) | |||||
set_target_properties(opencv_superres PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "opencv_core;opencv_imgproc;opencv_video;opencv_imgcodecs;opencv_videoio;$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>" | |||||
) | |||||
# Create imported target opencv_features2d | |||||
add_library(opencv_features2d STATIC IMPORTED) | |||||
set_target_properties(opencv_features2d PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "opencv_core;opencv_flann;opencv_imgproc;opencv_imgcodecs;opencv_videoio;opencv_highgui;$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>" | |||||
) | |||||
# Create imported target opencv_calib3d | |||||
add_library(opencv_calib3d STATIC IMPORTED) | |||||
set_target_properties(opencv_calib3d PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "opencv_core;opencv_flann;opencv_imgproc;opencv_imgcodecs;opencv_videoio;opencv_highgui;opencv_features2d;$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>" | |||||
) | |||||
# Create imported target opencv_java | |||||
add_library(opencv_java SHARED IMPORTED) | |||||
set_target_properties(opencv_java PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "jnigraphics;log;dl;z" | |||||
) | |||||
# Create imported target opencv_stitching | |||||
add_library(opencv_stitching STATIC IMPORTED) | |||||
set_target_properties(opencv_stitching PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "opencv_core;opencv_flann;opencv_imgproc;opencv_imgcodecs;opencv_videoio;opencv_highgui;opencv_features2d;opencv_calib3d;$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>" | |||||
) | |||||
# Create imported target opencv_videostab | |||||
add_library(opencv_videostab STATIC IMPORTED) | |||||
set_target_properties(opencv_videostab PROPERTIES | |||||
INTERFACE_LINK_LIBRARIES "opencv_core;opencv_flann;opencv_imgproc;opencv_photo;opencv_video;opencv_imgcodecs;opencv_videoio;opencv_highgui;opencv_features2d;opencv_calib3d;$<LINK_ONLY:dl>;$<LINK_ONLY:m>;$<LINK_ONLY:log>;$<LINK_ONLY:tegra_hal>" | |||||
) | |||||
if(CMAKE_VERSION VERSION_LESS 2.8.12) | |||||
message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") | |||||
endif() | |||||
# Load information for each installed configuration. | |||||
get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) | |||||
file(GLOB CONFIG_FILES "${_DIR}/OpenCVModules-*.cmake") | |||||
foreach(f ${CONFIG_FILES}) | |||||
include(${f}) | |||||
endforeach() | |||||
# Cleanup temporary variables. | |||||
set(_IMPORT_PREFIX) | |||||
# Loop over all imported files and verify that they actually exist | |||||
foreach(target ${_IMPORT_CHECK_TARGETS} ) | |||||
foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) | |||||
if(NOT EXISTS "${file}" ) | |||||
message(FATAL_ERROR "The imported target \"${target}\" references the file | |||||
\"${file}\" | |||||
but this file does not exist. Possible reasons include: | |||||
* The file was deleted, renamed, or moved to another location. | |||||
* An install or uninstall procedure did not complete successfully. | |||||
* The installation package was faulty and contained | |||||
\"${CMAKE_CURRENT_LIST_FILE}\" | |||||
but not all the files it references. | |||||
") | |||||
endif() | |||||
endforeach() | |||||
unset(_IMPORT_CHECK_FILES_FOR_${target}) | |||||
endforeach() | |||||
unset(_IMPORT_CHECK_TARGETS) | |||||
# This file does not depend on other imported targets which have | |||||
# been exported from the same project but in a separate export set. | |||||
# Commands beyond this point should not need to know the version. | |||||
set(CMAKE_IMPORT_FILE_VERSION) | |||||
cmake_policy(POP) |
@@ -0,0 +1,73 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_OLD_CV_H | |||||
#define OPENCV_OLD_CV_H | |||||
#if defined(_MSC_VER) | |||||
#define CV_DO_PRAGMA(x) __pragma(x) | |||||
#define __CVSTR2__(x) #x | |||||
#define __CVSTR1__(x) __CVSTR2__(x) | |||||
#define __CVMSVCLOC__ __FILE__ "("__CVSTR1__(__LINE__)") : " | |||||
#define CV_MSG_PRAGMA(_msg) CV_DO_PRAGMA(message (__CVMSVCLOC__ _msg)) | |||||
#elif defined(__GNUC__) | |||||
#define CV_DO_PRAGMA(x) _Pragma (#x) | |||||
#define CV_MSG_PRAGMA(_msg) CV_DO_PRAGMA(message (_msg)) | |||||
#else | |||||
#define CV_DO_PRAGMA(x) | |||||
#define CV_MSG_PRAGMA(_msg) | |||||
#endif | |||||
#define CV_WARNING(x) CV_MSG_PRAGMA("Warning: " #x) | |||||
//CV_WARNING("This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module") | |||||
#include "opencv2/core/core_c.h" | |||||
#include "opencv2/imgproc/imgproc_c.h" | |||||
#include "opencv2/photo/photo_c.h" | |||||
#include "opencv2/video/tracking_c.h" | |||||
#include "opencv2/objdetect/objdetect_c.h" | |||||
#if !defined(CV_IMPL) | |||||
#define CV_IMPL extern "C" | |||||
#endif //CV_IMPL | |||||
#endif // __OPENCV_OLD_CV_H_ |
@@ -0,0 +1,60 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_OLD_CV_HPP | |||||
#define OPENCV_OLD_CV_HPP | |||||
//#if defined(__GNUC__) | |||||
//#warning "This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module" | |||||
//#endif | |||||
#include "cv.h" | |||||
#include "opencv2/core.hpp" | |||||
#include "opencv2/imgproc.hpp" | |||||
#include "opencv2/photo.hpp" | |||||
#include "opencv2/video.hpp" | |||||
#include "opencv2/highgui.hpp" | |||||
#include "opencv2/features2d.hpp" | |||||
#include "opencv2/calib3d.hpp" | |||||
#include "opencv2/objdetect.hpp" | |||||
#endif |
@@ -0,0 +1,57 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// Intel License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000, Intel Corporation, all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of Intel Corporation may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_OLD_AUX_H | |||||
#define OPENCV_OLD_AUX_H | |||||
//#if defined(__GNUC__) | |||||
//#warning "This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module" | |||||
//#endif | |||||
#include "opencv2/core/core_c.h" | |||||
#include "opencv2/imgproc/imgproc_c.h" | |||||
#include "opencv2/photo/photo_c.h" | |||||
#include "opencv2/video/tracking_c.h" | |||||
#include "opencv2/objdetect/objdetect_c.h" | |||||
#endif | |||||
/* End of file. */ |
@@ -0,0 +1,52 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// Intel License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000, Intel Corporation, all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of Intel Corporation may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_OLD_AUX_HPP | |||||
#define OPENCV_OLD_AUX_HPP | |||||
//#if defined(__GNUC__) | |||||
//#warning "This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module" | |||||
//#endif | |||||
#include "cvaux.h" | |||||
#include "opencv2/core/utility.hpp" | |||||
#endif |
@@ -0,0 +1,46 @@ | |||||
/////////////////////////////////////////////////////////////////////////////// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to | |||||
// this license. If you do not agree to this license, do not download, | |||||
// install, copy or use the software. | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2008, Google, all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without | |||||
// modification, are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of Intel Corporation or contributors may not be used to endorse | |||||
// or promote products derived from this software without specific | |||||
// prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" | |||||
// and any express or implied warranties, including, but not limited to, the | |||||
// implied warranties of merchantability and fitness for a particular purpose | |||||
// are disclaimed. In no event shall the Intel Corporation or contributors be | |||||
// liable for any direct, indirect, incidental, special, exemplary, or | |||||
// consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
#ifndef OPENCV_OLD_WIMAGE_HPP | |||||
#define OPENCV_OLD_WIMAGE_HPP | |||||
#include "opencv2/core/wimage.hpp" | |||||
#endif |
@@ -0,0 +1,52 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_OLD_CXCORE_H | |||||
#define OPENCV_OLD_CXCORE_H | |||||
//#if defined(__GNUC__) | |||||
//#warning "This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module" | |||||
//#endif | |||||
#include "opencv2/core/core_c.h" | |||||
#endif |
@@ -0,0 +1,53 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_OLD_CXCORE_HPP | |||||
#define OPENCV_OLD_CXCORE_HPP | |||||
//#if defined(__GNUC__) | |||||
//#warning "This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module" | |||||
//#endif | |||||
#include "cxcore.h" | |||||
#include "opencv2/core.hpp" | |||||
#endif |
@@ -0,0 +1,48 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_OLD_EIGEN_HPP | |||||
#define OPENCV_OLD_EIGEN_HPP | |||||
#include "opencv2/core/eigen.hpp" | |||||
#endif |
@@ -0,0 +1,8 @@ | |||||
#ifndef OPENCV_OLD_CXMISC_H | |||||
#define OPENCV_OLD_CXMISC_H | |||||
#ifdef __cplusplus | |||||
# include "opencv2/core/utility.hpp" | |||||
#endif | |||||
#endif |
@@ -0,0 +1,48 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// Intel License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000, Intel Corporation, all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of Intel Corporation may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_OLD_HIGHGUI_H | |||||
#define OPENCV_OLD_HIGHGUI_H | |||||
#include "opencv2/core/core_c.h" | |||||
#include "opencv2/highgui/highgui_c.h" | |||||
#endif |
@@ -0,0 +1,47 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// Intel License Agreement | |||||
// | |||||
// Copyright (C) 2000, Intel Corporation, all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of Intel Corporation may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_OLD_ML_H | |||||
#define OPENCV_OLD_ML_H | |||||
#include "opencv2/core/core_c.h" | |||||
#include "opencv2/ml.hpp" | |||||
#endif |
@@ -0,0 +1,48 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Copyright (C) 2013, OpenCV Foundation, all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifdef __OPENCV_BUILD | |||||
#error this is a compatibility header which should not be used inside the OpenCV library | |||||
#endif | |||||
#include "opencv2/calib3d.hpp" |
@@ -0,0 +1,427 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Copyright (C) 2013, OpenCV Foundation, all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CALIB3D_C_H | |||||
#define OPENCV_CALIB3D_C_H | |||||
#include "opencv2/core/core_c.h" | |||||
#ifdef __cplusplus | |||||
extern "C" { | |||||
#endif | |||||
/** @addtogroup calib3d_c | |||||
@{ | |||||
*/ | |||||
/****************************************************************************************\ | |||||
* Camera Calibration, Pose Estimation and Stereo * | |||||
\****************************************************************************************/ | |||||
typedef struct CvPOSITObject CvPOSITObject; | |||||
/* Allocates and initializes CvPOSITObject structure before doing cvPOSIT */ | |||||
CVAPI(CvPOSITObject*) cvCreatePOSITObject( CvPoint3D32f* points, int point_count ); | |||||
/* Runs POSIT (POSe from ITeration) algorithm for determining 3d position of | |||||
an object given its model and projection in a weak-perspective case */ | |||||
CVAPI(void) cvPOSIT( CvPOSITObject* posit_object, CvPoint2D32f* image_points, | |||||
double focal_length, CvTermCriteria criteria, | |||||
float* rotation_matrix, float* translation_vector); | |||||
/* Releases CvPOSITObject structure */ | |||||
CVAPI(void) cvReleasePOSITObject( CvPOSITObject** posit_object ); | |||||
/* updates the number of RANSAC iterations */ | |||||
CVAPI(int) cvRANSACUpdateNumIters( double p, double err_prob, | |||||
int model_points, int max_iters ); | |||||
CVAPI(void) cvConvertPointsHomogeneous( const CvMat* src, CvMat* dst ); | |||||
/* Calculates fundamental matrix given a set of corresponding points */ | |||||
#define CV_FM_7POINT 1 | |||||
#define CV_FM_8POINT 2 | |||||
#define CV_LMEDS 4 | |||||
#define CV_RANSAC 8 | |||||
#define CV_FM_LMEDS_ONLY CV_LMEDS | |||||
#define CV_FM_RANSAC_ONLY CV_RANSAC | |||||
#define CV_FM_LMEDS CV_LMEDS | |||||
#define CV_FM_RANSAC CV_RANSAC | |||||
enum | |||||
{ | |||||
CV_ITERATIVE = 0, | |||||
CV_EPNP = 1, // F.Moreno-Noguer, V.Lepetit and P.Fua "EPnP: Efficient Perspective-n-Point Camera Pose Estimation" | |||||
CV_P3P = 2, // X.S. Gao, X.-R. Hou, J. Tang, H.-F. Chang; "Complete Solution Classification for the Perspective-Three-Point Problem" | |||||
CV_DLS = 3 // Joel A. Hesch and Stergios I. Roumeliotis. "A Direct Least-Squares (DLS) Method for PnP" | |||||
}; | |||||
CVAPI(int) cvFindFundamentalMat( const CvMat* points1, const CvMat* points2, | |||||
CvMat* fundamental_matrix, | |||||
int method CV_DEFAULT(CV_FM_RANSAC), | |||||
double param1 CV_DEFAULT(3.), double param2 CV_DEFAULT(0.99), | |||||
CvMat* status CV_DEFAULT(NULL) ); | |||||
/* For each input point on one of images | |||||
computes parameters of the corresponding | |||||
epipolar line on the other image */ | |||||
CVAPI(void) cvComputeCorrespondEpilines( const CvMat* points, | |||||
int which_image, | |||||
const CvMat* fundamental_matrix, | |||||
CvMat* correspondent_lines ); | |||||
/* Triangulation functions */ | |||||
CVAPI(void) cvTriangulatePoints(CvMat* projMatr1, CvMat* projMatr2, | |||||
CvMat* projPoints1, CvMat* projPoints2, | |||||
CvMat* points4D); | |||||
CVAPI(void) cvCorrectMatches(CvMat* F, CvMat* points1, CvMat* points2, | |||||
CvMat* new_points1, CvMat* new_points2); | |||||
/* Computes the optimal new camera matrix according to the free scaling parameter alpha: | |||||
alpha=0 - only valid pixels will be retained in the undistorted image | |||||
alpha=1 - all the source image pixels will be retained in the undistorted image | |||||
*/ | |||||
CVAPI(void) cvGetOptimalNewCameraMatrix( const CvMat* camera_matrix, | |||||
const CvMat* dist_coeffs, | |||||
CvSize image_size, double alpha, | |||||
CvMat* new_camera_matrix, | |||||
CvSize new_imag_size CV_DEFAULT(cvSize(0,0)), | |||||
CvRect* valid_pixel_ROI CV_DEFAULT(0), | |||||
int center_principal_point CV_DEFAULT(0)); | |||||
/* Converts rotation vector to rotation matrix or vice versa */ | |||||
CVAPI(int) cvRodrigues2( const CvMat* src, CvMat* dst, | |||||
CvMat* jacobian CV_DEFAULT(0) ); | |||||
/* Finds perspective transformation between the object plane and image (view) plane */ | |||||
CVAPI(int) cvFindHomography( const CvMat* src_points, | |||||
const CvMat* dst_points, | |||||
CvMat* homography, | |||||
int method CV_DEFAULT(0), | |||||
double ransacReprojThreshold CV_DEFAULT(3), | |||||
CvMat* mask CV_DEFAULT(0), | |||||
int maxIters CV_DEFAULT(2000), | |||||
double confidence CV_DEFAULT(0.995)); | |||||
/* Computes RQ decomposition for 3x3 matrices */ | |||||
CVAPI(void) cvRQDecomp3x3( const CvMat *matrixM, CvMat *matrixR, CvMat *matrixQ, | |||||
CvMat *matrixQx CV_DEFAULT(NULL), | |||||
CvMat *matrixQy CV_DEFAULT(NULL), | |||||
CvMat *matrixQz CV_DEFAULT(NULL), | |||||
CvPoint3D64f *eulerAngles CV_DEFAULT(NULL)); | |||||
/* Computes projection matrix decomposition */ | |||||
CVAPI(void) cvDecomposeProjectionMatrix( const CvMat *projMatr, CvMat *calibMatr, | |||||
CvMat *rotMatr, CvMat *posVect, | |||||
CvMat *rotMatrX CV_DEFAULT(NULL), | |||||
CvMat *rotMatrY CV_DEFAULT(NULL), | |||||
CvMat *rotMatrZ CV_DEFAULT(NULL), | |||||
CvPoint3D64f *eulerAngles CV_DEFAULT(NULL)); | |||||
/* Computes d(AB)/dA and d(AB)/dB */ | |||||
CVAPI(void) cvCalcMatMulDeriv( const CvMat* A, const CvMat* B, CvMat* dABdA, CvMat* dABdB ); | |||||
/* Computes r3 = rodrigues(rodrigues(r2)*rodrigues(r1)), | |||||
t3 = rodrigues(r2)*t1 + t2 and the respective derivatives */ | |||||
CVAPI(void) cvComposeRT( const CvMat* _rvec1, const CvMat* _tvec1, | |||||
const CvMat* _rvec2, const CvMat* _tvec2, | |||||
CvMat* _rvec3, CvMat* _tvec3, | |||||
CvMat* dr3dr1 CV_DEFAULT(0), CvMat* dr3dt1 CV_DEFAULT(0), | |||||
CvMat* dr3dr2 CV_DEFAULT(0), CvMat* dr3dt2 CV_DEFAULT(0), | |||||
CvMat* dt3dr1 CV_DEFAULT(0), CvMat* dt3dt1 CV_DEFAULT(0), | |||||
CvMat* dt3dr2 CV_DEFAULT(0), CvMat* dt3dt2 CV_DEFAULT(0) ); | |||||
/* Projects object points to the view plane using | |||||
the specified extrinsic and intrinsic camera parameters */ | |||||
CVAPI(void) cvProjectPoints2( const CvMat* object_points, const CvMat* rotation_vector, | |||||
const CvMat* translation_vector, const CvMat* camera_matrix, | |||||
const CvMat* distortion_coeffs, CvMat* image_points, | |||||
CvMat* dpdrot CV_DEFAULT(NULL), CvMat* dpdt CV_DEFAULT(NULL), | |||||
CvMat* dpdf CV_DEFAULT(NULL), CvMat* dpdc CV_DEFAULT(NULL), | |||||
CvMat* dpddist CV_DEFAULT(NULL), | |||||
double aspect_ratio CV_DEFAULT(0)); | |||||
/* Finds extrinsic camera parameters from | |||||
a few known corresponding point pairs and intrinsic parameters */ | |||||
CVAPI(void) cvFindExtrinsicCameraParams2( const CvMat* object_points, | |||||
const CvMat* image_points, | |||||
const CvMat* camera_matrix, | |||||
const CvMat* distortion_coeffs, | |||||
CvMat* rotation_vector, | |||||
CvMat* translation_vector, | |||||
int use_extrinsic_guess CV_DEFAULT(0) ); | |||||
/* Computes initial estimate of the intrinsic camera parameters | |||||
in case of planar calibration target (e.g. chessboard) */ | |||||
CVAPI(void) cvInitIntrinsicParams2D( const CvMat* object_points, | |||||
const CvMat* image_points, | |||||
const CvMat* npoints, CvSize image_size, | |||||
CvMat* camera_matrix, | |||||
double aspect_ratio CV_DEFAULT(1.) ); | |||||
#define CV_CALIB_CB_ADAPTIVE_THRESH 1 | |||||
#define CV_CALIB_CB_NORMALIZE_IMAGE 2 | |||||
#define CV_CALIB_CB_FILTER_QUADS 4 | |||||
#define CV_CALIB_CB_FAST_CHECK 8 | |||||
// Performs a fast check if a chessboard is in the input image. This is a workaround to | |||||
// a problem of cvFindChessboardCorners being slow on images with no chessboard | |||||
// - src: input image | |||||
// - size: chessboard size | |||||
// Returns 1 if a chessboard can be in this image and findChessboardCorners should be called, | |||||
// 0 if there is no chessboard, -1 in case of error | |||||
CVAPI(int) cvCheckChessboard(IplImage* src, CvSize size); | |||||
/* Detects corners on a chessboard calibration pattern */ | |||||
CVAPI(int) cvFindChessboardCorners( const void* image, CvSize pattern_size, | |||||
CvPoint2D32f* corners, | |||||
int* corner_count CV_DEFAULT(NULL), | |||||
int flags CV_DEFAULT(CV_CALIB_CB_ADAPTIVE_THRESH+CV_CALIB_CB_NORMALIZE_IMAGE) ); | |||||
/* Draws individual chessboard corners or the whole chessboard detected */ | |||||
CVAPI(void) cvDrawChessboardCorners( CvArr* image, CvSize pattern_size, | |||||
CvPoint2D32f* corners, | |||||
int count, int pattern_was_found ); | |||||
#define CV_CALIB_USE_INTRINSIC_GUESS 1 | |||||
#define CV_CALIB_FIX_ASPECT_RATIO 2 | |||||
#define CV_CALIB_FIX_PRINCIPAL_POINT 4 | |||||
#define CV_CALIB_ZERO_TANGENT_DIST 8 | |||||
#define CV_CALIB_FIX_FOCAL_LENGTH 16 | |||||
#define CV_CALIB_FIX_K1 32 | |||||
#define CV_CALIB_FIX_K2 64 | |||||
#define CV_CALIB_FIX_K3 128 | |||||
#define CV_CALIB_FIX_K4 2048 | |||||
#define CV_CALIB_FIX_K5 4096 | |||||
#define CV_CALIB_FIX_K6 8192 | |||||
#define CV_CALIB_RATIONAL_MODEL 16384 | |||||
#define CV_CALIB_THIN_PRISM_MODEL 32768 | |||||
#define CV_CALIB_FIX_S1_S2_S3_S4 65536 | |||||
#define CV_CALIB_TILTED_MODEL 262144 | |||||
#define CV_CALIB_FIX_TAUX_TAUY 524288 | |||||
#define CV_CALIB_FIX_TANGENT_DIST 2097152 | |||||
#define CV_CALIB_NINTRINSIC 18 | |||||
/* Finds intrinsic and extrinsic camera parameters | |||||
from a few views of known calibration pattern */ | |||||
CVAPI(double) cvCalibrateCamera2( const CvMat* object_points, | |||||
const CvMat* image_points, | |||||
const CvMat* point_counts, | |||||
CvSize image_size, | |||||
CvMat* camera_matrix, | |||||
CvMat* distortion_coeffs, | |||||
CvMat* rotation_vectors CV_DEFAULT(NULL), | |||||
CvMat* translation_vectors CV_DEFAULT(NULL), | |||||
int flags CV_DEFAULT(0), | |||||
CvTermCriteria term_crit CV_DEFAULT(cvTermCriteria( | |||||
CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,30,DBL_EPSILON)) ); | |||||
/* Computes various useful characteristics of the camera from the data computed by | |||||
cvCalibrateCamera2 */ | |||||
CVAPI(void) cvCalibrationMatrixValues( const CvMat *camera_matrix, | |||||
CvSize image_size, | |||||
double aperture_width CV_DEFAULT(0), | |||||
double aperture_height CV_DEFAULT(0), | |||||
double *fovx CV_DEFAULT(NULL), | |||||
double *fovy CV_DEFAULT(NULL), | |||||
double *focal_length CV_DEFAULT(NULL), | |||||
CvPoint2D64f *principal_point CV_DEFAULT(NULL), | |||||
double *pixel_aspect_ratio CV_DEFAULT(NULL)); | |||||
#define CV_CALIB_FIX_INTRINSIC 256 | |||||
#define CV_CALIB_SAME_FOCAL_LENGTH 512 | |||||
/* Computes the transformation from one camera coordinate system to another one | |||||
from a few correspondent views of the same calibration target. Optionally, calibrates | |||||
both cameras */ | |||||
CVAPI(double) cvStereoCalibrate( const CvMat* object_points, const CvMat* image_points1, | |||||
const CvMat* image_points2, const CvMat* npoints, | |||||
CvMat* camera_matrix1, CvMat* dist_coeffs1, | |||||
CvMat* camera_matrix2, CvMat* dist_coeffs2, | |||||
CvSize image_size, CvMat* R, CvMat* T, | |||||
CvMat* E CV_DEFAULT(0), CvMat* F CV_DEFAULT(0), | |||||
int flags CV_DEFAULT(CV_CALIB_FIX_INTRINSIC), | |||||
CvTermCriteria term_crit CV_DEFAULT(cvTermCriteria( | |||||
CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,30,1e-6)) ); | |||||
#define CV_CALIB_ZERO_DISPARITY 1024 | |||||
/* Computes 3D rotations (+ optional shift) for each camera coordinate system to make both | |||||
views parallel (=> to make all the epipolar lines horizontal or vertical) */ | |||||
CVAPI(void) cvStereoRectify( const CvMat* camera_matrix1, const CvMat* camera_matrix2, | |||||
const CvMat* dist_coeffs1, const CvMat* dist_coeffs2, | |||||
CvSize image_size, const CvMat* R, const CvMat* T, | |||||
CvMat* R1, CvMat* R2, CvMat* P1, CvMat* P2, | |||||
CvMat* Q CV_DEFAULT(0), | |||||
int flags CV_DEFAULT(CV_CALIB_ZERO_DISPARITY), | |||||
double alpha CV_DEFAULT(-1), | |||||
CvSize new_image_size CV_DEFAULT(cvSize(0,0)), | |||||
CvRect* valid_pix_ROI1 CV_DEFAULT(0), | |||||
CvRect* valid_pix_ROI2 CV_DEFAULT(0)); | |||||
/* Computes rectification transformations for uncalibrated pair of images using a set | |||||
of point correspondences */ | |||||
CVAPI(int) cvStereoRectifyUncalibrated( const CvMat* points1, const CvMat* points2, | |||||
const CvMat* F, CvSize img_size, | |||||
CvMat* H1, CvMat* H2, | |||||
double threshold CV_DEFAULT(5)); | |||||
/* stereo correspondence parameters and functions */ | |||||
#define CV_STEREO_BM_NORMALIZED_RESPONSE 0 | |||||
#define CV_STEREO_BM_XSOBEL 1 | |||||
/* Block matching algorithm structure */ | |||||
typedef struct CvStereoBMState | |||||
{ | |||||
// pre-filtering (normalization of input images) | |||||
int preFilterType; // =CV_STEREO_BM_NORMALIZED_RESPONSE now | |||||
int preFilterSize; // averaging window size: ~5x5..21x21 | |||||
int preFilterCap; // the output of pre-filtering is clipped by [-preFilterCap,preFilterCap] | |||||
// correspondence using Sum of Absolute Difference (SAD) | |||||
int SADWindowSize; // ~5x5..21x21 | |||||
int minDisparity; // minimum disparity (can be negative) | |||||
int numberOfDisparities; // maximum disparity - minimum disparity (> 0) | |||||
// post-filtering | |||||
int textureThreshold; // the disparity is only computed for pixels | |||||
// with textured enough neighborhood | |||||
int uniquenessRatio; // accept the computed disparity d* only if | |||||
// SAD(d) >= SAD(d*)*(1 + uniquenessRatio/100.) | |||||
// for any d != d*+/-1 within the search range. | |||||
int speckleWindowSize; // disparity variation window | |||||
int speckleRange; // acceptable range of variation in window | |||||
int trySmallerWindows; // if 1, the results may be more accurate, | |||||
// at the expense of slower processing | |||||
CvRect roi1, roi2; | |||||
int disp12MaxDiff; | |||||
// temporary buffers | |||||
CvMat* preFilteredImg0; | |||||
CvMat* preFilteredImg1; | |||||
CvMat* slidingSumBuf; | |||||
CvMat* cost; | |||||
CvMat* disp; | |||||
} CvStereoBMState; | |||||
#define CV_STEREO_BM_BASIC 0 | |||||
#define CV_STEREO_BM_FISH_EYE 1 | |||||
#define CV_STEREO_BM_NARROW 2 | |||||
CVAPI(CvStereoBMState*) cvCreateStereoBMState(int preset CV_DEFAULT(CV_STEREO_BM_BASIC), | |||||
int numberOfDisparities CV_DEFAULT(0)); | |||||
CVAPI(void) cvReleaseStereoBMState( CvStereoBMState** state ); | |||||
CVAPI(void) cvFindStereoCorrespondenceBM( const CvArr* left, const CvArr* right, | |||||
CvArr* disparity, CvStereoBMState* state ); | |||||
CVAPI(CvRect) cvGetValidDisparityROI( CvRect roi1, CvRect roi2, int minDisparity, | |||||
int numberOfDisparities, int SADWindowSize ); | |||||
CVAPI(void) cvValidateDisparity( CvArr* disparity, const CvArr* cost, | |||||
int minDisparity, int numberOfDisparities, | |||||
int disp12MaxDiff CV_DEFAULT(1) ); | |||||
/* Reprojects the computed disparity image to the 3D space using the specified 4x4 matrix */ | |||||
CVAPI(void) cvReprojectImageTo3D( const CvArr* disparityImage, | |||||
CvArr* _3dImage, const CvMat* Q, | |||||
int handleMissingValues CV_DEFAULT(0) ); | |||||
/** @} calib3d_c */ | |||||
#ifdef __cplusplus | |||||
} // extern "C" | |||||
////////////////////////////////////////////////////////////////////////////////////////// | |||||
class CV_EXPORTS CvLevMarq | |||||
{ | |||||
public: | |||||
CvLevMarq(); | |||||
CvLevMarq( int nparams, int nerrs, CvTermCriteria criteria= | |||||
cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER,30,DBL_EPSILON), | |||||
bool completeSymmFlag=false ); | |||||
~CvLevMarq(); | |||||
void init( int nparams, int nerrs, CvTermCriteria criteria= | |||||
cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER,30,DBL_EPSILON), | |||||
bool completeSymmFlag=false ); | |||||
bool update( const CvMat*& param, CvMat*& J, CvMat*& err ); | |||||
bool updateAlt( const CvMat*& param, CvMat*& JtJ, CvMat*& JtErr, double*& errNorm ); | |||||
void clear(); | |||||
void step(); | |||||
enum { DONE=0, STARTED=1, CALC_J=2, CHECK_ERR=3 }; | |||||
cv::Ptr<CvMat> mask; | |||||
cv::Ptr<CvMat> prevParam; | |||||
cv::Ptr<CvMat> param; | |||||
cv::Ptr<CvMat> J; | |||||
cv::Ptr<CvMat> err; | |||||
cv::Ptr<CvMat> JtJ; | |||||
cv::Ptr<CvMat> JtJN; | |||||
cv::Ptr<CvMat> JtErr; | |||||
cv::Ptr<CvMat> JtJV; | |||||
cv::Ptr<CvMat> JtJW; | |||||
double prevErrNorm, errNorm; | |||||
int lambdaLg10; | |||||
CvTermCriteria criteria; | |||||
int state; | |||||
int iters; | |||||
bool completeSymmFlag; | |||||
int solveMethod; | |||||
}; | |||||
#endif | |||||
#endif /* OPENCV_CALIB3D_C_H */ |
@@ -0,0 +1,678 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Copyright (C) 2013, OpenCV Foundation, all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CORE_AFFINE3_HPP | |||||
#define OPENCV_CORE_AFFINE3_HPP | |||||
#ifdef __cplusplus | |||||
#include <opencv2/core.hpp> | |||||
namespace cv | |||||
{ | |||||
//! @addtogroup core | |||||
//! @{ | |||||
/** @brief Affine transform | |||||
* | |||||
* It represents a 4x4 homogeneous transformation matrix \f$T\f$ | |||||
* | |||||
* \f[T = | |||||
* \begin{bmatrix} | |||||
* R & t\\ | |||||
* 0 & 1\\ | |||||
* \end{bmatrix} | |||||
* \f] | |||||
* | |||||
* where \f$R\f$ is a 3x3 rotation matrix and \f$t\f$ is a 3x1 translation vector. | |||||
* | |||||
* You can specify \f$R\f$ either by a 3x3 rotation matrix or by a 3x1 rotation vector, | |||||
* which is converted to a 3x3 rotation matrix by the Rodrigues formula. | |||||
* | |||||
* To construct a matrix \f$T\f$ representing first rotation around the axis \f$r\f$ with rotation | |||||
* angle \f$|r|\f$ in radian (right hand rule) and then translation by the vector \f$t\f$, you can use | |||||
* | |||||
* @code | |||||
* cv::Vec3f r, t; | |||||
* cv::Affine3f T(r, t); | |||||
* @endcode | |||||
* | |||||
* If you already have the rotation matrix \f$R\f$, then you can use | |||||
* | |||||
* @code | |||||
* cv::Matx33f R; | |||||
* cv::Affine3f T(R, t); | |||||
* @endcode | |||||
* | |||||
* To extract the rotation matrix \f$R\f$ from \f$T\f$, use | |||||
* | |||||
* @code | |||||
* cv::Matx33f R = T.rotation(); | |||||
* @endcode | |||||
* | |||||
* To extract the translation vector \f$t\f$ from \f$T\f$, use | |||||
* | |||||
* @code | |||||
* cv::Vec3f t = T.translation(); | |||||
* @endcode | |||||
* | |||||
* To extract the rotation vector \f$r\f$ from \f$T\f$, use | |||||
* | |||||
* @code | |||||
* cv::Vec3f r = T.rvec(); | |||||
* @endcode | |||||
* | |||||
* Note that since the mapping from rotation vectors to rotation matrices | |||||
* is many to one. The returned rotation vector is not necessarily the one | |||||
* you used before to set the matrix. | |||||
* | |||||
* If you have two transformations \f$T = T_1 * T_2\f$, use | |||||
* | |||||
* @code | |||||
* cv::Affine3f T, T1, T2; | |||||
* T = T2.concatenate(T1); | |||||
* @endcode | |||||
* | |||||
* To get the inverse transform of \f$T\f$, use | |||||
* | |||||
* @code | |||||
* cv::Affine3f T, T_inv; | |||||
* T_inv = T.inv(); | |||||
* @endcode | |||||
* | |||||
*/ | |||||
template<typename T> | |||||
class Affine3 | |||||
{ | |||||
public: | |||||
typedef T float_type; | |||||
typedef Matx<float_type, 3, 3> Mat3; | |||||
typedef Matx<float_type, 4, 4> Mat4; | |||||
typedef Vec<float_type, 3> Vec3; | |||||
//! Default constructor. It represents a 4x4 identity matrix. | |||||
Affine3(); | |||||
//! Augmented affine matrix | |||||
Affine3(const Mat4& affine); | |||||
/** | |||||
* The resulting 4x4 matrix is | |||||
* | |||||
* \f[ | |||||
* \begin{bmatrix} | |||||
* R & t\\ | |||||
* 0 & 1\\ | |||||
* \end{bmatrix} | |||||
* \f] | |||||
* | |||||
* @param R 3x3 rotation matrix. | |||||
* @param t 3x1 translation vector. | |||||
*/ | |||||
Affine3(const Mat3& R, const Vec3& t = Vec3::all(0)); | |||||
/** | |||||
* Rodrigues vector. | |||||
* | |||||
* The last row of the current matrix is set to [0,0,0,1]. | |||||
* | |||||
* @param rvec 3x1 rotation vector. Its direction indicates the rotation axis and its length | |||||
* indicates the rotation angle in radian (using right hand rule). | |||||
* @param t 3x1 translation vector. | |||||
*/ | |||||
Affine3(const Vec3& rvec, const Vec3& t = Vec3::all(0)); | |||||
/** | |||||
* Combines all constructors above. Supports 4x4, 3x4, 3x3, 1x3, 3x1 sizes of data matrix. | |||||
* | |||||
* The last row of the current matrix is set to [0,0,0,1] when data is not 4x4. | |||||
* | |||||
* @param data 1-channel matrix. | |||||
* when it is 4x4, it is copied to the current matrix and t is not used. | |||||
* When it is 3x4, it is copied to the upper part 3x4 of the current matrix and t is not used. | |||||
* When it is 3x3, it is copied to the upper left 3x3 part of the current matrix. | |||||
* When it is 3x1 or 1x3, it is treated as a rotation vector and the Rodrigues formula is used | |||||
* to compute a 3x3 rotation matrix. | |||||
* @param t 3x1 translation vector. It is used only when data is neither 4x4 nor 3x4. | |||||
*/ | |||||
explicit Affine3(const Mat& data, const Vec3& t = Vec3::all(0)); | |||||
//! From 16-element array | |||||
explicit Affine3(const float_type* vals); | |||||
//! Create an 4x4 identity transform | |||||
static Affine3 Identity(); | |||||
/** | |||||
* Rotation matrix. | |||||
* | |||||
* Copy the rotation matrix to the upper left 3x3 part of the current matrix. | |||||
* The remaining elements of the current matrix are not changed. | |||||
* | |||||
* @param R 3x3 rotation matrix. | |||||
* | |||||
*/ | |||||
void rotation(const Mat3& R); | |||||
/** | |||||
* Rodrigues vector. | |||||
* | |||||
* It sets the upper left 3x3 part of the matrix. The remaining part is unaffected. | |||||
* | |||||
* @param rvec 3x1 rotation vector. The direction indicates the rotation axis and | |||||
* its length indicates the rotation angle in radian (using the right thumb convention). | |||||
*/ | |||||
void rotation(const Vec3& rvec); | |||||
/** | |||||
* Combines rotation methods above. Supports 3x3, 1x3, 3x1 sizes of data matrix. | |||||
* | |||||
* It sets the upper left 3x3 part of the matrix. The remaining part is unaffected. | |||||
* | |||||
* @param data 1-channel matrix. | |||||
* When it is a 3x3 matrix, it sets the upper left 3x3 part of the current matrix. | |||||
* When it is a 1x3 or 3x1 matrix, it is used as a rotation vector. The Rodrigues formula | |||||
* is used to compute the rotation matrix and sets the upper left 3x3 part of the current matrix. | |||||
*/ | |||||
void rotation(const Mat& data); | |||||
/** | |||||
* Copy the 3x3 matrix L to the upper left part of the current matrix | |||||
* | |||||
* It sets the upper left 3x3 part of the matrix. The remaining part is unaffected. | |||||
* | |||||
* @param L 3x3 matrix. | |||||
*/ | |||||
void linear(const Mat3& L); | |||||
/** | |||||
* Copy t to the first three elements of the last column of the current matrix | |||||
* | |||||
* It sets the upper right 3x1 part of the matrix. The remaining part is unaffected. | |||||
* | |||||
* @param t 3x1 translation vector. | |||||
*/ | |||||
void translation(const Vec3& t); | |||||
//! @return the upper left 3x3 part | |||||
Mat3 rotation() const; | |||||
//! @return the upper left 3x3 part | |||||
Mat3 linear() const; | |||||
//! @return the upper right 3x1 part | |||||
Vec3 translation() const; | |||||
//! Rodrigues vector. | |||||
//! @return a vector representing the upper left 3x3 rotation matrix of the current matrix. | |||||
//! @warning Since the mapping between rotation vectors and rotation matrices is many to one, | |||||
//! this function returns only one rotation vector that represents the current rotation matrix, | |||||
//! which is not necessarily the same one set by `rotation(const Vec3& rvec)`. | |||||
Vec3 rvec() const; | |||||
//! @return the inverse of the current matrix. | |||||
Affine3 inv(int method = cv::DECOMP_SVD) const; | |||||
//! a.rotate(R) is equivalent to Affine(R, 0) * a; | |||||
Affine3 rotate(const Mat3& R) const; | |||||
//! a.rotate(rvec) is equivalent to Affine(rvec, 0) * a; | |||||
Affine3 rotate(const Vec3& rvec) const; | |||||
//! a.translate(t) is equivalent to Affine(E, t) * a, where E is an identity matrix | |||||
Affine3 translate(const Vec3& t) const; | |||||
//! a.concatenate(affine) is equivalent to affine * a; | |||||
Affine3 concatenate(const Affine3& affine) const; | |||||
template <typename Y> operator Affine3<Y>() const; | |||||
template <typename Y> Affine3<Y> cast() const; | |||||
Mat4 matrix; | |||||
#if defined EIGEN_WORLD_VERSION && defined EIGEN_GEOMETRY_MODULE_H | |||||
Affine3(const Eigen::Transform<T, 3, Eigen::Affine, (Eigen::RowMajor)>& affine); | |||||
Affine3(const Eigen::Transform<T, 3, Eigen::Affine>& affine); | |||||
operator Eigen::Transform<T, 3, Eigen::Affine, (Eigen::RowMajor)>() const; | |||||
operator Eigen::Transform<T, 3, Eigen::Affine>() const; | |||||
#endif | |||||
}; | |||||
template<typename T> static | |||||
Affine3<T> operator*(const Affine3<T>& affine1, const Affine3<T>& affine2); | |||||
//! V is a 3-element vector with member fields x, y and z | |||||
template<typename T, typename V> static | |||||
V operator*(const Affine3<T>& affine, const V& vector); | |||||
typedef Affine3<float> Affine3f; | |||||
typedef Affine3<double> Affine3d; | |||||
static Vec3f operator*(const Affine3f& affine, const Vec3f& vector); | |||||
static Vec3d operator*(const Affine3d& affine, const Vec3d& vector); | |||||
template<typename _Tp> class DataType< Affine3<_Tp> > | |||||
{ | |||||
public: | |||||
typedef Affine3<_Tp> value_type; | |||||
typedef Affine3<typename DataType<_Tp>::work_type> work_type; | |||||
typedef _Tp channel_type; | |||||
enum { generic_type = 0, | |||||
channels = 16, | |||||
fmt = traits::SafeFmt<channel_type>::fmt + ((channels - 1) << 8) | |||||
#ifdef OPENCV_TRAITS_ENABLE_DEPRECATED | |||||
,depth = DataType<channel_type>::depth | |||||
,type = CV_MAKETYPE(depth, channels) | |||||
#endif | |||||
}; | |||||
typedef Vec<channel_type, channels> vec_type; | |||||
}; | |||||
namespace traits { | |||||
template<typename _Tp> | |||||
struct Depth< Affine3<_Tp> > { enum { value = Depth<_Tp>::value }; }; | |||||
template<typename _Tp> | |||||
struct Type< Affine3<_Tp> > { enum { value = CV_MAKETYPE(Depth<_Tp>::value, 16) }; }; | |||||
} // namespace | |||||
//! @} core | |||||
} | |||||
//! @cond IGNORED | |||||
/////////////////////////////////////////////////////////////////////////////////// | |||||
// Implementation | |||||
template<typename T> inline | |||||
cv::Affine3<T>::Affine3() | |||||
: matrix(Mat4::eye()) | |||||
{} | |||||
template<typename T> inline | |||||
cv::Affine3<T>::Affine3(const Mat4& affine) | |||||
: matrix(affine) | |||||
{} | |||||
template<typename T> inline | |||||
cv::Affine3<T>::Affine3(const Mat3& R, const Vec3& t) | |||||
{ | |||||
rotation(R); | |||||
translation(t); | |||||
matrix.val[12] = matrix.val[13] = matrix.val[14] = 0; | |||||
matrix.val[15] = 1; | |||||
} | |||||
template<typename T> inline | |||||
cv::Affine3<T>::Affine3(const Vec3& _rvec, const Vec3& t) | |||||
{ | |||||
rotation(_rvec); | |||||
translation(t); | |||||
matrix.val[12] = matrix.val[13] = matrix.val[14] = 0; | |||||
matrix.val[15] = 1; | |||||
} | |||||
template<typename T> inline | |||||
cv::Affine3<T>::Affine3(const cv::Mat& data, const Vec3& t) | |||||
{ | |||||
CV_Assert(data.type() == cv::traits::Type<T>::value); | |||||
CV_Assert(data.channels() == 1); | |||||
if (data.cols == 4 && data.rows == 4) | |||||
{ | |||||
data.copyTo(matrix); | |||||
return; | |||||
} | |||||
else if (data.cols == 4 && data.rows == 3) | |||||
{ | |||||
rotation(data(Rect(0, 0, 3, 3))); | |||||
translation(data(Rect(3, 0, 1, 3))); | |||||
} | |||||
else | |||||
{ | |||||
rotation(data); | |||||
translation(t); | |||||
} | |||||
matrix.val[12] = matrix.val[13] = matrix.val[14] = 0; | |||||
matrix.val[15] = 1; | |||||
} | |||||
template<typename T> inline | |||||
cv::Affine3<T>::Affine3(const float_type* vals) : matrix(vals) | |||||
{} | |||||
template<typename T> inline | |||||
cv::Affine3<T> cv::Affine3<T>::Identity() | |||||
{ | |||||
return Affine3<T>(cv::Affine3<T>::Mat4::eye()); | |||||
} | |||||
template<typename T> inline | |||||
void cv::Affine3<T>::rotation(const Mat3& R) | |||||
{ | |||||
linear(R); | |||||
} | |||||
template<typename T> inline | |||||
void cv::Affine3<T>::rotation(const Vec3& _rvec) | |||||
{ | |||||
double theta = norm(_rvec); | |||||
if (theta < DBL_EPSILON) | |||||
rotation(Mat3::eye()); | |||||
else | |||||
{ | |||||
double c = std::cos(theta); | |||||
double s = std::sin(theta); | |||||
double c1 = 1. - c; | |||||
double itheta = (theta != 0) ? 1./theta : 0.; | |||||
Point3_<T> r = _rvec*itheta; | |||||
Mat3 rrt( r.x*r.x, r.x*r.y, r.x*r.z, r.x*r.y, r.y*r.y, r.y*r.z, r.x*r.z, r.y*r.z, r.z*r.z ); | |||||
Mat3 r_x( 0, -r.z, r.y, r.z, 0, -r.x, -r.y, r.x, 0 ); | |||||
// R = cos(theta)*I + (1 - cos(theta))*r*rT + sin(theta)*[r_x] | |||||
// where [r_x] is [0 -rz ry; rz 0 -rx; -ry rx 0] | |||||
Mat3 R = c*Mat3::eye() + c1*rrt + s*r_x; | |||||
rotation(R); | |||||
} | |||||
} | |||||
//Combines rotation methods above. Supports 3x3, 1x3, 3x1 sizes of data matrix; | |||||
template<typename T> inline | |||||
void cv::Affine3<T>::rotation(const cv::Mat& data) | |||||
{ | |||||
CV_Assert(data.type() == cv::traits::Type<T>::value); | |||||
CV_Assert(data.channels() == 1); | |||||
if (data.cols == 3 && data.rows == 3) | |||||
{ | |||||
Mat3 R; | |||||
data.copyTo(R); | |||||
rotation(R); | |||||
} | |||||
else if ((data.cols == 3 && data.rows == 1) || (data.cols == 1 && data.rows == 3)) | |||||
{ | |||||
Vec3 _rvec; | |||||
data.reshape(1, 3).copyTo(_rvec); | |||||
rotation(_rvec); | |||||
} | |||||
else | |||||
CV_Error(Error::StsError, "Input matrix can only be 3x3, 1x3 or 3x1"); | |||||
} | |||||
template<typename T> inline | |||||
void cv::Affine3<T>::linear(const Mat3& L) | |||||
{ | |||||
matrix.val[0] = L.val[0]; matrix.val[1] = L.val[1]; matrix.val[ 2] = L.val[2]; | |||||
matrix.val[4] = L.val[3]; matrix.val[5] = L.val[4]; matrix.val[ 6] = L.val[5]; | |||||
matrix.val[8] = L.val[6]; matrix.val[9] = L.val[7]; matrix.val[10] = L.val[8]; | |||||
} | |||||
template<typename T> inline | |||||
void cv::Affine3<T>::translation(const Vec3& t) | |||||
{ | |||||
matrix.val[3] = t[0]; matrix.val[7] = t[1]; matrix.val[11] = t[2]; | |||||
} | |||||
template<typename T> inline | |||||
typename cv::Affine3<T>::Mat3 cv::Affine3<T>::rotation() const | |||||
{ | |||||
return linear(); | |||||
} | |||||
template<typename T> inline | |||||
typename cv::Affine3<T>::Mat3 cv::Affine3<T>::linear() const | |||||
{ | |||||
typename cv::Affine3<T>::Mat3 R; | |||||
R.val[0] = matrix.val[0]; R.val[1] = matrix.val[1]; R.val[2] = matrix.val[ 2]; | |||||
R.val[3] = matrix.val[4]; R.val[4] = matrix.val[5]; R.val[5] = matrix.val[ 6]; | |||||
R.val[6] = matrix.val[8]; R.val[7] = matrix.val[9]; R.val[8] = matrix.val[10]; | |||||
return R; | |||||
} | |||||
template<typename T> inline | |||||
typename cv::Affine3<T>::Vec3 cv::Affine3<T>::translation() const | |||||
{ | |||||
return Vec3(matrix.val[3], matrix.val[7], matrix.val[11]); | |||||
} | |||||
template<typename T> inline | |||||
typename cv::Affine3<T>::Vec3 cv::Affine3<T>::rvec() const | |||||
{ | |||||
cv::Vec3d w; | |||||
cv::Matx33d u, vt, R = rotation(); | |||||
cv::SVD::compute(R, w, u, vt, cv::SVD::FULL_UV + cv::SVD::MODIFY_A); | |||||
R = u * vt; | |||||
double rx = R.val[7] - R.val[5]; | |||||
double ry = R.val[2] - R.val[6]; | |||||
double rz = R.val[3] - R.val[1]; | |||||
double s = std::sqrt((rx*rx + ry*ry + rz*rz)*0.25); | |||||
double c = (R.val[0] + R.val[4] + R.val[8] - 1) * 0.5; | |||||
c = c > 1.0 ? 1.0 : c < -1.0 ? -1.0 : c; | |||||
double theta = acos(c); | |||||
if( s < 1e-5 ) | |||||
{ | |||||
if( c > 0 ) | |||||
rx = ry = rz = 0; | |||||
else | |||||
{ | |||||
double t; | |||||
t = (R.val[0] + 1) * 0.5; | |||||
rx = std::sqrt(std::max(t, 0.0)); | |||||
t = (R.val[4] + 1) * 0.5; | |||||
ry = std::sqrt(std::max(t, 0.0)) * (R.val[1] < 0 ? -1.0 : 1.0); | |||||
t = (R.val[8] + 1) * 0.5; | |||||
rz = std::sqrt(std::max(t, 0.0)) * (R.val[2] < 0 ? -1.0 : 1.0); | |||||
if( fabs(rx) < fabs(ry) && fabs(rx) < fabs(rz) && (R.val[5] > 0) != (ry*rz > 0) ) | |||||
rz = -rz; | |||||
theta /= std::sqrt(rx*rx + ry*ry + rz*rz); | |||||
rx *= theta; | |||||
ry *= theta; | |||||
rz *= theta; | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
double vth = 1/(2*s); | |||||
vth *= theta; | |||||
rx *= vth; ry *= vth; rz *= vth; | |||||
} | |||||
return cv::Vec3d(rx, ry, rz); | |||||
} | |||||
template<typename T> inline | |||||
cv::Affine3<T> cv::Affine3<T>::inv(int method) const | |||||
{ | |||||
return matrix.inv(method); | |||||
} | |||||
template<typename T> inline | |||||
cv::Affine3<T> cv::Affine3<T>::rotate(const Mat3& R) const | |||||
{ | |||||
Mat3 Lc = linear(); | |||||
Vec3 tc = translation(); | |||||
Mat4 result; | |||||
result.val[12] = result.val[13] = result.val[14] = 0; | |||||
result.val[15] = 1; | |||||
for(int j = 0; j < 3; ++j) | |||||
{ | |||||
for(int i = 0; i < 3; ++i) | |||||
{ | |||||
float_type value = 0; | |||||
for(int k = 0; k < 3; ++k) | |||||
value += R(j, k) * Lc(k, i); | |||||
result(j, i) = value; | |||||
} | |||||
result(j, 3) = R.row(j).dot(tc.t()); | |||||
} | |||||
return result; | |||||
} | |||||
template<typename T> inline | |||||
cv::Affine3<T> cv::Affine3<T>::rotate(const Vec3& _rvec) const | |||||
{ | |||||
return rotate(Affine3f(_rvec).rotation()); | |||||
} | |||||
template<typename T> inline | |||||
cv::Affine3<T> cv::Affine3<T>::translate(const Vec3& t) const | |||||
{ | |||||
Mat4 m = matrix; | |||||
m.val[ 3] += t[0]; | |||||
m.val[ 7] += t[1]; | |||||
m.val[11] += t[2]; | |||||
return m; | |||||
} | |||||
template<typename T> inline | |||||
cv::Affine3<T> cv::Affine3<T>::concatenate(const Affine3<T>& affine) const | |||||
{ | |||||
return (*this).rotate(affine.rotation()).translate(affine.translation()); | |||||
} | |||||
template<typename T> template <typename Y> inline | |||||
cv::Affine3<T>::operator Affine3<Y>() const | |||||
{ | |||||
return Affine3<Y>(matrix); | |||||
} | |||||
template<typename T> template <typename Y> inline | |||||
cv::Affine3<Y> cv::Affine3<T>::cast() const | |||||
{ | |||||
return Affine3<Y>(matrix); | |||||
} | |||||
template<typename T> inline | |||||
cv::Affine3<T> cv::operator*(const cv::Affine3<T>& affine1, const cv::Affine3<T>& affine2) | |||||
{ | |||||
return affine2.concatenate(affine1); | |||||
} | |||||
template<typename T, typename V> inline | |||||
V cv::operator*(const cv::Affine3<T>& affine, const V& v) | |||||
{ | |||||
const typename Affine3<T>::Mat4& m = affine.matrix; | |||||
V r; | |||||
r.x = m.val[0] * v.x + m.val[1] * v.y + m.val[ 2] * v.z + m.val[ 3]; | |||||
r.y = m.val[4] * v.x + m.val[5] * v.y + m.val[ 6] * v.z + m.val[ 7]; | |||||
r.z = m.val[8] * v.x + m.val[9] * v.y + m.val[10] * v.z + m.val[11]; | |||||
return r; | |||||
} | |||||
static inline | |||||
cv::Vec3f cv::operator*(const cv::Affine3f& affine, const cv::Vec3f& v) | |||||
{ | |||||
const cv::Matx44f& m = affine.matrix; | |||||
cv::Vec3f r; | |||||
r.val[0] = m.val[0] * v[0] + m.val[1] * v[1] + m.val[ 2] * v[2] + m.val[ 3]; | |||||
r.val[1] = m.val[4] * v[0] + m.val[5] * v[1] + m.val[ 6] * v[2] + m.val[ 7]; | |||||
r.val[2] = m.val[8] * v[0] + m.val[9] * v[1] + m.val[10] * v[2] + m.val[11]; | |||||
return r; | |||||
} | |||||
static inline | |||||
cv::Vec3d cv::operator*(const cv::Affine3d& affine, const cv::Vec3d& v) | |||||
{ | |||||
const cv::Matx44d& m = affine.matrix; | |||||
cv::Vec3d r; | |||||
r.val[0] = m.val[0] * v[0] + m.val[1] * v[1] + m.val[ 2] * v[2] + m.val[ 3]; | |||||
r.val[1] = m.val[4] * v[0] + m.val[5] * v[1] + m.val[ 6] * v[2] + m.val[ 7]; | |||||
r.val[2] = m.val[8] * v[0] + m.val[9] * v[1] + m.val[10] * v[2] + m.val[11]; | |||||
return r; | |||||
} | |||||
#if defined EIGEN_WORLD_VERSION && defined EIGEN_GEOMETRY_MODULE_H | |||||
template<typename T> inline | |||||
cv::Affine3<T>::Affine3(const Eigen::Transform<T, 3, Eigen::Affine, (Eigen::RowMajor)>& affine) | |||||
{ | |||||
cv::Mat(4, 4, cv::traits::Type<T>::value, affine.matrix().data()).copyTo(matrix); | |||||
} | |||||
template<typename T> inline | |||||
cv::Affine3<T>::Affine3(const Eigen::Transform<T, 3, Eigen::Affine>& affine) | |||||
{ | |||||
Eigen::Transform<T, 3, Eigen::Affine, (Eigen::RowMajor)> a = affine; | |||||
cv::Mat(4, 4, cv::traits::Type<T>::value, a.matrix().data()).copyTo(matrix); | |||||
} | |||||
template<typename T> inline | |||||
cv::Affine3<T>::operator Eigen::Transform<T, 3, Eigen::Affine, (Eigen::RowMajor)>() const | |||||
{ | |||||
Eigen::Transform<T, 3, Eigen::Affine, (Eigen::RowMajor)> r; | |||||
cv::Mat hdr(4, 4, cv::traits::Type<T>::value, r.matrix().data()); | |||||
cv::Mat(matrix, false).copyTo(hdr); | |||||
return r; | |||||
} | |||||
template<typename T> inline | |||||
cv::Affine3<T>::operator Eigen::Transform<T, 3, Eigen::Affine>() const | |||||
{ | |||||
return this->operator Eigen::Transform<T, 3, Eigen::Affine, (Eigen::RowMajor)>(); | |||||
} | |||||
#endif /* defined EIGEN_WORLD_VERSION && defined EIGEN_GEOMETRY_MODULE_H */ | |||||
//! @endcond | |||||
#endif /* __cplusplus */ | |||||
#endif /* OPENCV_CORE_AFFINE3_HPP */ |
@@ -0,0 +1,772 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Copyright (C) 2013, OpenCV Foundation, all rights reserved. | |||||
// Copyright (C) 2014, Itseez Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CORE_BASE_HPP | |||||
#define OPENCV_CORE_BASE_HPP | |||||
#ifndef __cplusplus | |||||
# error base.hpp header must be compiled as C++ | |||||
#endif | |||||
#include "opencv2/opencv_modules.hpp" | |||||
#include <climits> | |||||
#include <algorithm> | |||||
#include "opencv2/core/cvdef.h" | |||||
#include "opencv2/core/cvstd.hpp" | |||||
namespace cv | |||||
{ | |||||
//! @addtogroup core_utils | |||||
//! @{ | |||||
namespace Error { | |||||
//! error codes | |||||
enum Code { | |||||
StsOk= 0, //!< everything is ok | |||||
StsBackTrace= -1, //!< pseudo error for back trace | |||||
StsError= -2, //!< unknown /unspecified error | |||||
StsInternal= -3, //!< internal error (bad state) | |||||
StsNoMem= -4, //!< insufficient memory | |||||
StsBadArg= -5, //!< function arg/param is bad | |||||
StsBadFunc= -6, //!< unsupported function | |||||
StsNoConv= -7, //!< iteration didn't converge | |||||
StsAutoTrace= -8, //!< tracing | |||||
HeaderIsNull= -9, //!< image header is NULL | |||||
BadImageSize= -10, //!< image size is invalid | |||||
BadOffset= -11, //!< offset is invalid | |||||
BadDataPtr= -12, //!< | |||||
BadStep= -13, //!< image step is wrong, this may happen for a non-continuous matrix. | |||||
BadModelOrChSeq= -14, //!< | |||||
BadNumChannels= -15, //!< bad number of channels, for example, some functions accept only single channel matrices. | |||||
BadNumChannel1U= -16, //!< | |||||
BadDepth= -17, //!< input image depth is not supported by the function | |||||
BadAlphaChannel= -18, //!< | |||||
BadOrder= -19, //!< number of dimensions is out of range | |||||
BadOrigin= -20, //!< incorrect input origin | |||||
BadAlign= -21, //!< incorrect input align | |||||
BadCallBack= -22, //!< | |||||
BadTileSize= -23, //!< | |||||
BadCOI= -24, //!< input COI is not supported | |||||
BadROISize= -25, //!< incorrect input roi | |||||
MaskIsTiled= -26, //!< | |||||
StsNullPtr= -27, //!< null pointer | |||||
StsVecLengthErr= -28, //!< incorrect vector length | |||||
StsFilterStructContentErr= -29, //!< incorrect filter structure content | |||||
StsKernelStructContentErr= -30, //!< incorrect transform kernel content | |||||
StsFilterOffsetErr= -31, //!< incorrect filter offset value | |||||
StsBadSize= -201, //!< the input/output structure size is incorrect | |||||
StsDivByZero= -202, //!< division by zero | |||||
StsInplaceNotSupported= -203, //!< in-place operation is not supported | |||||
StsObjectNotFound= -204, //!< request can't be completed | |||||
StsUnmatchedFormats= -205, //!< formats of input/output arrays differ | |||||
StsBadFlag= -206, //!< flag is wrong or not supported | |||||
StsBadPoint= -207, //!< bad CvPoint | |||||
StsBadMask= -208, //!< bad format of mask (neither 8uC1 nor 8sC1) | |||||
StsUnmatchedSizes= -209, //!< sizes of input/output structures do not match | |||||
StsUnsupportedFormat= -210, //!< the data format/type is not supported by the function | |||||
StsOutOfRange= -211, //!< some of parameters are out of range | |||||
StsParseError= -212, //!< invalid syntax/structure of the parsed file | |||||
StsNotImplemented= -213, //!< the requested function/feature is not implemented | |||||
StsBadMemBlock= -214, //!< an allocated block has been corrupted | |||||
StsAssert= -215, //!< assertion failed | |||||
GpuNotSupported= -216, //!< no CUDA support | |||||
GpuApiCallError= -217, //!< GPU API call error | |||||
OpenGlNotSupported= -218, //!< no OpenGL support | |||||
OpenGlApiCallError= -219, //!< OpenGL API call error | |||||
OpenCLApiCallError= -220, //!< OpenCL API call error | |||||
OpenCLDoubleNotSupported= -221, | |||||
OpenCLInitError= -222, //!< OpenCL initialization error | |||||
OpenCLNoAMDBlasFft= -223 | |||||
}; | |||||
} //Error | |||||
//! @} core_utils | |||||
//! @addtogroup core_array | |||||
//! @{ | |||||
//! matrix decomposition types | |||||
enum DecompTypes { | |||||
/** Gaussian elimination with the optimal pivot element chosen. */ | |||||
DECOMP_LU = 0, | |||||
/** singular value decomposition (SVD) method; the system can be over-defined and/or the matrix | |||||
src1 can be singular */ | |||||
DECOMP_SVD = 1, | |||||
/** eigenvalue decomposition; the matrix src1 must be symmetrical */ | |||||
DECOMP_EIG = 2, | |||||
/** Cholesky \f$LL^T\f$ factorization; the matrix src1 must be symmetrical and positively | |||||
defined */ | |||||
DECOMP_CHOLESKY = 3, | |||||
/** QR factorization; the system can be over-defined and/or the matrix src1 can be singular */ | |||||
DECOMP_QR = 4, | |||||
/** while all the previous flags are mutually exclusive, this flag can be used together with | |||||
any of the previous; it means that the normal equations | |||||
\f$\texttt{src1}^T\cdot\texttt{src1}\cdot\texttt{dst}=\texttt{src1}^T\texttt{src2}\f$ are | |||||
solved instead of the original system | |||||
\f$\texttt{src1}\cdot\texttt{dst}=\texttt{src2}\f$ */ | |||||
DECOMP_NORMAL = 16 | |||||
}; | |||||
/** norm types | |||||
src1 and src2 denote input arrays. | |||||
*/ | |||||
enum NormTypes { | |||||
/** | |||||
\f[ | |||||
norm = \forkthree | |||||
{\|\texttt{src1}\|_{L_{\infty}} = \max _I | \texttt{src1} (I)|}{if \(\texttt{normType} = \texttt{NORM_INF}\) } | |||||
{\|\texttt{src1}-\texttt{src2}\|_{L_{\infty}} = \max _I | \texttt{src1} (I) - \texttt{src2} (I)|}{if \(\texttt{normType} = \texttt{NORM_INF}\) } | |||||
{\frac{\|\texttt{src1}-\texttt{src2}\|_{L_{\infty}} }{\|\texttt{src2}\|_{L_{\infty}} }}{if \(\texttt{normType} = \texttt{NORM_RELATIVE | NORM_INF}\) } | |||||
\f] | |||||
*/ | |||||
NORM_INF = 1, | |||||
/** | |||||
\f[ | |||||
norm = \forkthree | |||||
{\| \texttt{src1} \| _{L_1} = \sum _I | \texttt{src1} (I)|}{if \(\texttt{normType} = \texttt{NORM_L1}\)} | |||||
{ \| \texttt{src1} - \texttt{src2} \| _{L_1} = \sum _I | \texttt{src1} (I) - \texttt{src2} (I)|}{if \(\texttt{normType} = \texttt{NORM_L1}\) } | |||||
{ \frac{\|\texttt{src1}-\texttt{src2}\|_{L_1} }{\|\texttt{src2}\|_{L_1}} }{if \(\texttt{normType} = \texttt{NORM_RELATIVE | NORM_L1}\) } | |||||
\f]*/ | |||||
NORM_L1 = 2, | |||||
/** | |||||
\f[ | |||||
norm = \forkthree | |||||
{ \| \texttt{src1} \| _{L_2} = \sqrt{\sum_I \texttt{src1}(I)^2} }{if \(\texttt{normType} = \texttt{NORM_L2}\) } | |||||
{ \| \texttt{src1} - \texttt{src2} \| _{L_2} = \sqrt{\sum_I (\texttt{src1}(I) - \texttt{src2}(I))^2} }{if \(\texttt{normType} = \texttt{NORM_L2}\) } | |||||
{ \frac{\|\texttt{src1}-\texttt{src2}\|_{L_2} }{\|\texttt{src2}\|_{L_2}} }{if \(\texttt{normType} = \texttt{NORM_RELATIVE | NORM_L2}\) } | |||||
\f] | |||||
*/ | |||||
NORM_L2 = 4, | |||||
/** | |||||
\f[ | |||||
norm = \forkthree | |||||
{ \| \texttt{src1} \| _{L_2} ^{2} = \sum_I \texttt{src1}(I)^2} {if \(\texttt{normType} = \texttt{NORM_L2SQR}\)} | |||||
{ \| \texttt{src1} - \texttt{src2} \| _{L_2} ^{2} = \sum_I (\texttt{src1}(I) - \texttt{src2}(I))^2 }{if \(\texttt{normType} = \texttt{NORM_L2SQR}\) } | |||||
{ \left(\frac{\|\texttt{src1}-\texttt{src2}\|_{L_2} }{\|\texttt{src2}\|_{L_2}}\right)^2 }{if \(\texttt{normType} = \texttt{NORM_RELATIVE | NORM_L2}\) } | |||||
\f] | |||||
*/ | |||||
NORM_L2SQR = 5, | |||||
/** | |||||
In the case of one input array, calculates the Hamming distance of the array from zero, | |||||
In the case of two input arrays, calculates the Hamming distance between the arrays. | |||||
*/ | |||||
NORM_HAMMING = 6, | |||||
/** | |||||
Similar to NORM_HAMMING, but in the calculation, each two bits of the input sequence will | |||||
be added and treated as a single bit to be used in the same calculation as NORM_HAMMING. | |||||
*/ | |||||
NORM_HAMMING2 = 7, | |||||
NORM_TYPE_MASK = 7, //!< bit-mask which can be used to separate norm type from norm flags | |||||
NORM_RELATIVE = 8, //!< flag | |||||
NORM_MINMAX = 32 //!< flag | |||||
}; | |||||
//! comparison types | |||||
enum CmpTypes { CMP_EQ = 0, //!< src1 is equal to src2. | |||||
CMP_GT = 1, //!< src1 is greater than src2. | |||||
CMP_GE = 2, //!< src1 is greater than or equal to src2. | |||||
CMP_LT = 3, //!< src1 is less than src2. | |||||
CMP_LE = 4, //!< src1 is less than or equal to src2. | |||||
CMP_NE = 5 //!< src1 is unequal to src2. | |||||
}; | |||||
//! generalized matrix multiplication flags | |||||
enum GemmFlags { GEMM_1_T = 1, //!< transposes src1 | |||||
GEMM_2_T = 2, //!< transposes src2 | |||||
GEMM_3_T = 4 //!< transposes src3 | |||||
}; | |||||
enum DftFlags { | |||||
/** performs an inverse 1D or 2D transform instead of the default forward | |||||
transform. */ | |||||
DFT_INVERSE = 1, | |||||
/** scales the result: divide it by the number of array elements. Normally, it is | |||||
combined with DFT_INVERSE. */ | |||||
DFT_SCALE = 2, | |||||
/** performs a forward or inverse transform of every individual row of the input | |||||
matrix; this flag enables you to transform multiple vectors simultaneously and can be used to | |||||
decrease the overhead (which is sometimes several times larger than the processing itself) to | |||||
perform 3D and higher-dimensional transformations and so forth.*/ | |||||
DFT_ROWS = 4, | |||||
/** performs a forward transformation of 1D or 2D real array; the result, | |||||
though being a complex array, has complex-conjugate symmetry (*CCS*, see the function | |||||
description below for details), and such an array can be packed into a real array of the same | |||||
size as input, which is the fastest option and which is what the function does by default; | |||||
however, you may wish to get a full complex array (for simpler spectrum analysis, and so on) - | |||||
pass the flag to enable the function to produce a full-size complex output array. */ | |||||
DFT_COMPLEX_OUTPUT = 16, | |||||
/** performs an inverse transformation of a 1D or 2D complex array; the | |||||
result is normally a complex array of the same size, however, if the input array has | |||||
conjugate-complex symmetry (for example, it is a result of forward transformation with | |||||
DFT_COMPLEX_OUTPUT flag), the output is a real array; while the function itself does not | |||||
check whether the input is symmetrical or not, you can pass the flag and then the function | |||||
will assume the symmetry and produce the real output array (note that when the input is packed | |||||
into a real array and inverse transformation is executed, the function treats the input as a | |||||
packed complex-conjugate symmetrical array, and the output will also be a real array). */ | |||||
DFT_REAL_OUTPUT = 32, | |||||
/** specifies that input is complex input. If this flag is set, the input must have 2 channels. | |||||
On the other hand, for backwards compatibility reason, if input has 2 channels, input is | |||||
already considered complex. */ | |||||
DFT_COMPLEX_INPUT = 64, | |||||
/** performs an inverse 1D or 2D transform instead of the default forward transform. */ | |||||
DCT_INVERSE = DFT_INVERSE, | |||||
/** performs a forward or inverse transform of every individual row of the input | |||||
matrix. This flag enables you to transform multiple vectors simultaneously and can be used to | |||||
decrease the overhead (which is sometimes several times larger than the processing itself) to | |||||
perform 3D and higher-dimensional transforms and so forth.*/ | |||||
DCT_ROWS = DFT_ROWS | |||||
}; | |||||
//! Various border types, image boundaries are denoted with `|` | |||||
//! @see borderInterpolate, copyMakeBorder | |||||
enum BorderTypes { | |||||
BORDER_CONSTANT = 0, //!< `iiiiii|abcdefgh|iiiiiii` with some specified `i` | |||||
BORDER_REPLICATE = 1, //!< `aaaaaa|abcdefgh|hhhhhhh` | |||||
BORDER_REFLECT = 2, //!< `fedcba|abcdefgh|hgfedcb` | |||||
BORDER_WRAP = 3, //!< `cdefgh|abcdefgh|abcdefg` | |||||
BORDER_REFLECT_101 = 4, //!< `gfedcb|abcdefgh|gfedcba` | |||||
BORDER_TRANSPARENT = 5, //!< `uvwxyz|abcdefgh|ijklmno` | |||||
BORDER_REFLECT101 = BORDER_REFLECT_101, //!< same as BORDER_REFLECT_101 | |||||
BORDER_DEFAULT = BORDER_REFLECT_101, //!< same as BORDER_REFLECT_101 | |||||
BORDER_ISOLATED = 16 //!< do not look outside of ROI | |||||
}; | |||||
//! @} core_array | |||||
//! @addtogroup core_utils | |||||
//! @{ | |||||
//! @cond IGNORED | |||||
//////////////// static assert ///////////////// | |||||
#define CVAUX_CONCAT_EXP(a, b) a##b | |||||
#define CVAUX_CONCAT(a, b) CVAUX_CONCAT_EXP(a,b) | |||||
#if defined(__clang__) | |||||
# ifndef __has_extension | |||||
# define __has_extension __has_feature /* compatibility, for older versions of clang */ | |||||
# endif | |||||
# if __has_extension(cxx_static_assert) | |||||
# define CV_StaticAssert(condition, reason) static_assert((condition), reason " " #condition) | |||||
# elif __has_extension(c_static_assert) | |||||
# define CV_StaticAssert(condition, reason) _Static_assert((condition), reason " " #condition) | |||||
# endif | |||||
#elif defined(__GNUC__) | |||||
# if (defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L) | |||||
# define CV_StaticAssert(condition, reason) static_assert((condition), reason " " #condition) | |||||
# endif | |||||
#elif defined(_MSC_VER) | |||||
# if _MSC_VER >= 1600 /* MSVC 10 */ | |||||
# define CV_StaticAssert(condition, reason) static_assert((condition), reason " " #condition) | |||||
# endif | |||||
#endif | |||||
#ifndef CV_StaticAssert | |||||
# if !defined(__clang__) && defined(__GNUC__) && (__GNUC__*100 + __GNUC_MINOR__ > 302) | |||||
# define CV_StaticAssert(condition, reason) ({ extern int __attribute__((error("CV_StaticAssert: " reason " " #condition))) CV_StaticAssert(); ((condition) ? 0 : CV_StaticAssert()); }) | |||||
# else | |||||
template <bool x> struct CV_StaticAssert_failed; | |||||
template <> struct CV_StaticAssert_failed<true> { enum { val = 1 }; }; | |||||
template<int x> struct CV_StaticAssert_test {}; | |||||
# define CV_StaticAssert(condition, reason)\ | |||||
typedef cv::CV_StaticAssert_test< sizeof(cv::CV_StaticAssert_failed< static_cast<bool>(condition) >) > CVAUX_CONCAT(CV_StaticAssert_failed_at_, __LINE__) | |||||
# endif | |||||
#endif | |||||
// Suppress warning "-Wdeprecated-declarations" / C4996 | |||||
#if defined(_MSC_VER) | |||||
#define CV_DO_PRAGMA(x) __pragma(x) | |||||
#elif defined(__GNUC__) | |||||
#define CV_DO_PRAGMA(x) _Pragma (#x) | |||||
#else | |||||
#define CV_DO_PRAGMA(x) | |||||
#endif | |||||
#ifdef _MSC_VER | |||||
#define CV_SUPPRESS_DEPRECATED_START \ | |||||
CV_DO_PRAGMA(warning(push)) \ | |||||
CV_DO_PRAGMA(warning(disable: 4996)) | |||||
#define CV_SUPPRESS_DEPRECATED_END CV_DO_PRAGMA(warning(pop)) | |||||
#elif defined (__clang__) || ((__GNUC__) && (__GNUC__*100 + __GNUC_MINOR__ > 405)) | |||||
#define CV_SUPPRESS_DEPRECATED_START \ | |||||
CV_DO_PRAGMA(GCC diagnostic push) \ | |||||
CV_DO_PRAGMA(GCC diagnostic ignored "-Wdeprecated-declarations") | |||||
#define CV_SUPPRESS_DEPRECATED_END CV_DO_PRAGMA(GCC diagnostic pop) | |||||
#else | |||||
#define CV_SUPPRESS_DEPRECATED_START | |||||
#define CV_SUPPRESS_DEPRECATED_END | |||||
#endif | |||||
#define CV_UNUSED(name) (void)name | |||||
#if defined __GNUC__ && !defined __EXCEPTIONS | |||||
#define CV_TRY | |||||
#define CV_CATCH(A, B) for (A B; false; ) | |||||
#define CV_CATCH_ALL if (false) | |||||
#define CV_THROW(A) abort() | |||||
#define CV_RETHROW() abort() | |||||
#else | |||||
#define CV_TRY try | |||||
#define CV_CATCH(A, B) catch(const A & B) | |||||
#define CV_CATCH_ALL catch(...) | |||||
#define CV_THROW(A) throw A | |||||
#define CV_RETHROW() throw | |||||
#endif | |||||
//! @endcond | |||||
/*! @brief Signals an error and raises the exception. | |||||
By default the function prints information about the error to stderr, | |||||
then it either stops if setBreakOnError() had been called before or raises the exception. | |||||
It is possible to alternate error processing by using redirectError(). | |||||
@param _code - error code (Error::Code) | |||||
@param _err - error description | |||||
@param _func - function name. Available only when the compiler supports getting it | |||||
@param _file - source file name where the error has occurred | |||||
@param _line - line number in the source file where the error has occurred | |||||
@see CV_Error, CV_Error_, CV_Assert, CV_DbgAssert | |||||
*/ | |||||
CV_EXPORTS void error(int _code, const String& _err, const char* _func, const char* _file, int _line); | |||||
#ifdef __GNUC__ | |||||
# if defined __clang__ || defined __APPLE__ | |||||
# pragma GCC diagnostic push | |||||
# pragma GCC diagnostic ignored "-Winvalid-noreturn" | |||||
# endif | |||||
#endif | |||||
/** same as cv::error, but does not return */ | |||||
CV_INLINE CV_NORETURN void errorNoReturn(int _code, const String& _err, const char* _func, const char* _file, int _line) | |||||
{ | |||||
error(_code, _err, _func, _file, _line); | |||||
#ifdef __GNUC__ | |||||
# if !defined __clang__ && !defined __APPLE__ | |||||
// this suppresses this warning: "noreturn" function does return [enabled by default] | |||||
__builtin_trap(); | |||||
// or use infinite loop: for (;;) {} | |||||
# endif | |||||
#endif | |||||
} | |||||
#ifdef __GNUC__ | |||||
# if defined __clang__ || defined __APPLE__ | |||||
# pragma GCC diagnostic pop | |||||
# endif | |||||
#endif | |||||
#if defined __GNUC__ | |||||
#define CV_Func __func__ | |||||
#elif defined _MSC_VER | |||||
#define CV_Func __FUNCTION__ | |||||
#else | |||||
#define CV_Func "" | |||||
#endif | |||||
#ifdef CV_STATIC_ANALYSIS | |||||
// In practice, some macro are not processed correctly (noreturn is not detected). | |||||
// We need to use simplified definition for them. | |||||
#define CV_Error(...) do { abort(); } while (0) | |||||
#define CV_Error_( code, args ) do { cv::format args; abort(); } while (0) | |||||
#define CV_Assert_1( expr ) do { if (!(expr)) abort(); } while (0) | |||||
#else // CV_STATIC_ANALYSIS | |||||
/** @brief Call the error handler. | |||||
Currently, the error handler prints the error code and the error message to the standard | |||||
error stream `stderr`. In the Debug configuration, it then provokes memory access violation, so that | |||||
the execution stack and all the parameters can be analyzed by the debugger. In the Release | |||||
configuration, the exception is thrown. | |||||
@param code one of Error::Code | |||||
@param msg error message | |||||
*/ | |||||
#define CV_Error( code, msg ) cv::error( code, msg, CV_Func, __FILE__, __LINE__ ) | |||||
/** @brief Call the error handler. | |||||
This macro can be used to construct an error message on-fly to include some dynamic information, | |||||
for example: | |||||
@code | |||||
// note the extra parentheses around the formatted text message | |||||
CV_Error_( CV_StsOutOfRange, | |||||
("the value at (%d, %d)=%g is out of range", badPt.x, badPt.y, badValue)); | |||||
@endcode | |||||
@param code one of Error::Code | |||||
@param args printf-like formatted error message in parentheses | |||||
*/ | |||||
#define CV_Error_( code, args ) cv::error( code, cv::format args, CV_Func, __FILE__, __LINE__ ) | |||||
#define CV_Assert_1( expr ) if(!!(expr)) ; else cv::error( cv::Error::StsAssert, #expr, CV_Func, __FILE__, __LINE__ ) | |||||
//! @cond IGNORED | |||||
#define CV__ErrorNoReturn( code, msg ) cv::errorNoReturn( code, msg, CV_Func, __FILE__, __LINE__ ) | |||||
#define CV__ErrorNoReturn_( code, args ) cv::errorNoReturn( code, cv::format args, CV_Func, __FILE__, __LINE__ ) | |||||
#ifdef __OPENCV_BUILD | |||||
#undef CV_Error | |||||
#define CV_Error CV__ErrorNoReturn | |||||
#undef CV_Error_ | |||||
#define CV_Error_ CV__ErrorNoReturn_ | |||||
#undef CV_Assert_1 | |||||
#define CV_Assert_1( expr ) if(!!(expr)) ; else cv::errorNoReturn( cv::Error::StsAssert, #expr, CV_Func, __FILE__, __LINE__ ) | |||||
#else | |||||
// backward compatibility | |||||
#define CV_ErrorNoReturn CV__ErrorNoReturn | |||||
#define CV_ErrorNoReturn_ CV__ErrorNoReturn_ | |||||
#endif | |||||
//! @endcond | |||||
#endif // CV_STATIC_ANALYSIS | |||||
#define CV_Assert_2( expr1, expr2 ) CV_Assert_1(expr1); CV_Assert_1(expr2) | |||||
#define CV_Assert_3( expr1, expr2, expr3 ) CV_Assert_2(expr1, expr2); CV_Assert_1(expr3) | |||||
#define CV_Assert_4( expr1, expr2, expr3, expr4 ) CV_Assert_3(expr1, expr2, expr3); CV_Assert_1(expr4) | |||||
#define CV_Assert_5( expr1, expr2, expr3, expr4, expr5 ) CV_Assert_4(expr1, expr2, expr3, expr4); CV_Assert_1(expr5) | |||||
#define CV_Assert_6( expr1, expr2, expr3, expr4, expr5, expr6 ) CV_Assert_5(expr1, expr2, expr3, expr4, expr5); CV_Assert_1(expr6) | |||||
#define CV_Assert_7( expr1, expr2, expr3, expr4, expr5, expr6, expr7 ) CV_Assert_6(expr1, expr2, expr3, expr4, expr5, expr6 ); CV_Assert_1(expr7) | |||||
#define CV_Assert_8( expr1, expr2, expr3, expr4, expr5, expr6, expr7, expr8 ) CV_Assert_7(expr1, expr2, expr3, expr4, expr5, expr6, expr7 ); CV_Assert_1(expr8) | |||||
#define CV_Assert_9( expr1, expr2, expr3, expr4, expr5, expr6, expr7, expr8, expr9 ) CV_Assert_8(expr1, expr2, expr3, expr4, expr5, expr6, expr7, expr8 ); CV_Assert_1(expr9) | |||||
#define CV_Assert_10( expr1, expr2, expr3, expr4, expr5, expr6, expr7, expr8, expr9, expr10 ) CV_Assert_9(expr1, expr2, expr3, expr4, expr5, expr6, expr7, expr8, expr9 ); CV_Assert_1(expr10) | |||||
#define CV_VA_NUM_ARGS_HELPER(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N | |||||
#define CV_VA_NUM_ARGS(...) CV_VA_NUM_ARGS_HELPER(__VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) | |||||
/** @brief Checks a condition at runtime and throws exception if it fails | |||||
The macros CV_Assert (and CV_DbgAssert(expr)) evaluate the specified expression. If it is 0, the macros | |||||
raise an error (see cv::error). The macro CV_Assert checks the condition in both Debug and Release | |||||
configurations while CV_DbgAssert is only retained in the Debug configuration. | |||||
*/ | |||||
#define CV_Assert(...) do { CVAUX_CONCAT(CV_Assert_, CV_VA_NUM_ARGS(__VA_ARGS__)) (__VA_ARGS__); } while(0) | |||||
/** replaced with CV_Assert(expr) in Debug configuration */ | |||||
#ifdef _DEBUG | |||||
# define CV_DbgAssert(expr) CV_Assert(expr) | |||||
#else | |||||
# define CV_DbgAssert(expr) | |||||
#endif | |||||
/* | |||||
* Hamming distance functor - counts the bit differences between two strings - useful for the Brief descriptor | |||||
* bit count of A exclusive XOR'ed with B | |||||
*/ | |||||
struct CV_EXPORTS Hamming | |||||
{ | |||||
enum { normType = NORM_HAMMING }; | |||||
typedef unsigned char ValueType; | |||||
typedef int ResultType; | |||||
/** this will count the bits in a ^ b | |||||
*/ | |||||
ResultType operator()( const unsigned char* a, const unsigned char* b, int size ) const; | |||||
}; | |||||
typedef Hamming HammingLUT; | |||||
/////////////////////////////////// inline norms //////////////////////////////////// | |||||
template<typename _Tp> inline _Tp cv_abs(_Tp x) { return std::abs(x); } | |||||
inline int cv_abs(uchar x) { return x; } | |||||
inline int cv_abs(schar x) { return std::abs(x); } | |||||
inline int cv_abs(ushort x) { return x; } | |||||
inline int cv_abs(short x) { return std::abs(x); } | |||||
template<typename _Tp, typename _AccTp> static inline | |||||
_AccTp normL2Sqr(const _Tp* a, int n) | |||||
{ | |||||
_AccTp s = 0; | |||||
int i=0; | |||||
#if CV_ENABLE_UNROLLED | |||||
for( ; i <= n - 4; i += 4 ) | |||||
{ | |||||
_AccTp v0 = a[i], v1 = a[i+1], v2 = a[i+2], v3 = a[i+3]; | |||||
s += v0*v0 + v1*v1 + v2*v2 + v3*v3; | |||||
} | |||||
#endif | |||||
for( ; i < n; i++ ) | |||||
{ | |||||
_AccTp v = a[i]; | |||||
s += v*v; | |||||
} | |||||
return s; | |||||
} | |||||
template<typename _Tp, typename _AccTp> static inline | |||||
_AccTp normL1(const _Tp* a, int n) | |||||
{ | |||||
_AccTp s = 0; | |||||
int i = 0; | |||||
#if CV_ENABLE_UNROLLED | |||||
for(; i <= n - 4; i += 4 ) | |||||
{ | |||||
s += (_AccTp)cv_abs(a[i]) + (_AccTp)cv_abs(a[i+1]) + | |||||
(_AccTp)cv_abs(a[i+2]) + (_AccTp)cv_abs(a[i+3]); | |||||
} | |||||
#endif | |||||
for( ; i < n; i++ ) | |||||
s += cv_abs(a[i]); | |||||
return s; | |||||
} | |||||
template<typename _Tp, typename _AccTp> static inline | |||||
_AccTp normInf(const _Tp* a, int n) | |||||
{ | |||||
_AccTp s = 0; | |||||
for( int i = 0; i < n; i++ ) | |||||
s = std::max(s, (_AccTp)cv_abs(a[i])); | |||||
return s; | |||||
} | |||||
template<typename _Tp, typename _AccTp> static inline | |||||
_AccTp normL2Sqr(const _Tp* a, const _Tp* b, int n) | |||||
{ | |||||
_AccTp s = 0; | |||||
int i= 0; | |||||
#if CV_ENABLE_UNROLLED | |||||
for(; i <= n - 4; i += 4 ) | |||||
{ | |||||
_AccTp v0 = _AccTp(a[i] - b[i]), v1 = _AccTp(a[i+1] - b[i+1]), v2 = _AccTp(a[i+2] - b[i+2]), v3 = _AccTp(a[i+3] - b[i+3]); | |||||
s += v0*v0 + v1*v1 + v2*v2 + v3*v3; | |||||
} | |||||
#endif | |||||
for( ; i < n; i++ ) | |||||
{ | |||||
_AccTp v = _AccTp(a[i] - b[i]); | |||||
s += v*v; | |||||
} | |||||
return s; | |||||
} | |||||
static inline float normL2Sqr(const float* a, const float* b, int n) | |||||
{ | |||||
float s = 0.f; | |||||
for( int i = 0; i < n; i++ ) | |||||
{ | |||||
float v = a[i] - b[i]; | |||||
s += v*v; | |||||
} | |||||
return s; | |||||
} | |||||
template<typename _Tp, typename _AccTp> static inline | |||||
_AccTp normL1(const _Tp* a, const _Tp* b, int n) | |||||
{ | |||||
_AccTp s = 0; | |||||
int i= 0; | |||||
#if CV_ENABLE_UNROLLED | |||||
for(; i <= n - 4; i += 4 ) | |||||
{ | |||||
_AccTp v0 = _AccTp(a[i] - b[i]), v1 = _AccTp(a[i+1] - b[i+1]), v2 = _AccTp(a[i+2] - b[i+2]), v3 = _AccTp(a[i+3] - b[i+3]); | |||||
s += std::abs(v0) + std::abs(v1) + std::abs(v2) + std::abs(v3); | |||||
} | |||||
#endif | |||||
for( ; i < n; i++ ) | |||||
{ | |||||
_AccTp v = _AccTp(a[i] - b[i]); | |||||
s += std::abs(v); | |||||
} | |||||
return s; | |||||
} | |||||
inline float normL1(const float* a, const float* b, int n) | |||||
{ | |||||
float s = 0.f; | |||||
for( int i = 0; i < n; i++ ) | |||||
{ | |||||
s += std::abs(a[i] - b[i]); | |||||
} | |||||
return s; | |||||
} | |||||
inline int normL1(const uchar* a, const uchar* b, int n) | |||||
{ | |||||
int s = 0; | |||||
for( int i = 0; i < n; i++ ) | |||||
{ | |||||
s += std::abs(a[i] - b[i]); | |||||
} | |||||
return s; | |||||
} | |||||
template<typename _Tp, typename _AccTp> static inline | |||||
_AccTp normInf(const _Tp* a, const _Tp* b, int n) | |||||
{ | |||||
_AccTp s = 0; | |||||
for( int i = 0; i < n; i++ ) | |||||
{ | |||||
_AccTp v0 = a[i] - b[i]; | |||||
s = std::max(s, std::abs(v0)); | |||||
} | |||||
return s; | |||||
} | |||||
/** @brief Computes the cube root of an argument. | |||||
The function cubeRoot computes \f$\sqrt[3]{\texttt{val}}\f$. Negative arguments are handled correctly. | |||||
NaN and Inf are not handled. The accuracy approaches the maximum possible accuracy for | |||||
single-precision data. | |||||
@param val A function argument. | |||||
*/ | |||||
CV_EXPORTS_W float cubeRoot(float val); | |||||
/** @brief Calculates the angle of a 2D vector in degrees. | |||||
The function fastAtan2 calculates the full-range angle of an input 2D vector. The angle is measured | |||||
in degrees and varies from 0 to 360 degrees. The accuracy is about 0.3 degrees. | |||||
@param x x-coordinate of the vector. | |||||
@param y y-coordinate of the vector. | |||||
*/ | |||||
CV_EXPORTS_W float fastAtan2(float y, float x); | |||||
/** proxy for hal::LU */ | |||||
CV_EXPORTS int LU(float* A, size_t astep, int m, float* b, size_t bstep, int n); | |||||
/** proxy for hal::LU */ | |||||
CV_EXPORTS int LU(double* A, size_t astep, int m, double* b, size_t bstep, int n); | |||||
/** proxy for hal::Cholesky */ | |||||
CV_EXPORTS bool Cholesky(float* A, size_t astep, int m, float* b, size_t bstep, int n); | |||||
/** proxy for hal::Cholesky */ | |||||
CV_EXPORTS bool Cholesky(double* A, size_t astep, int m, double* b, size_t bstep, int n); | |||||
////////////////// forward declarations for important OpenCV types ////////////////// | |||||
//! @cond IGNORED | |||||
template<typename _Tp, int cn> class Vec; | |||||
template<typename _Tp, int m, int n> class Matx; | |||||
template<typename _Tp> class Complex; | |||||
template<typename _Tp> class Point_; | |||||
template<typename _Tp> class Point3_; | |||||
template<typename _Tp> class Size_; | |||||
template<typename _Tp> class Rect_; | |||||
template<typename _Tp> class Scalar_; | |||||
class CV_EXPORTS RotatedRect; | |||||
class CV_EXPORTS Range; | |||||
class CV_EXPORTS TermCriteria; | |||||
class CV_EXPORTS KeyPoint; | |||||
class CV_EXPORTS DMatch; | |||||
class CV_EXPORTS RNG; | |||||
class CV_EXPORTS Mat; | |||||
class CV_EXPORTS MatExpr; | |||||
class CV_EXPORTS UMat; | |||||
class CV_EXPORTS SparseMat; | |||||
typedef Mat MatND; | |||||
template<typename _Tp> class Mat_; | |||||
template<typename _Tp> class SparseMat_; | |||||
class CV_EXPORTS MatConstIterator; | |||||
class CV_EXPORTS SparseMatIterator; | |||||
class CV_EXPORTS SparseMatConstIterator; | |||||
template<typename _Tp> class MatIterator_; | |||||
template<typename _Tp> class MatConstIterator_; | |||||
template<typename _Tp> class SparseMatIterator_; | |||||
template<typename _Tp> class SparseMatConstIterator_; | |||||
namespace ogl | |||||
{ | |||||
class CV_EXPORTS Buffer; | |||||
class CV_EXPORTS Texture2D; | |||||
class CV_EXPORTS Arrays; | |||||
} | |||||
namespace cuda | |||||
{ | |||||
class CV_EXPORTS GpuMat; | |||||
class CV_EXPORTS HostMem; | |||||
class CV_EXPORTS Stream; | |||||
class CV_EXPORTS Event; | |||||
} | |||||
namespace cudev | |||||
{ | |||||
template <typename _Tp> class GpuMat_; | |||||
} | |||||
namespace ipp | |||||
{ | |||||
#if OPENCV_ABI_COMPATIBILITY > 300 | |||||
CV_EXPORTS unsigned long long getIppFeatures(); | |||||
#else | |||||
CV_EXPORTS int getIppFeatures(); | |||||
#endif | |||||
CV_EXPORTS void setIppStatus(int status, const char * const funcname = NULL, const char * const filename = NULL, | |||||
int line = 0); | |||||
CV_EXPORTS int getIppStatus(); | |||||
CV_EXPORTS String getIppErrorLocation(); | |||||
CV_EXPORTS_W bool useIPP(); | |||||
CV_EXPORTS_W void setUseIPP(bool flag); | |||||
CV_EXPORTS_W String getIppVersion(); | |||||
// IPP Not-Exact mode. This function may force use of IPP then both IPP and OpenCV provide proper results | |||||
// but have internal accuracy differences which have to much direct or indirect impact on accuracy tests. | |||||
CV_EXPORTS_W bool useIPP_NE(); | |||||
CV_EXPORTS_W void setUseIPP_NE(bool flag); | |||||
} // ipp | |||||
//! @endcond | |||||
//! @} core_utils | |||||
} // cv | |||||
#include "opencv2/core/neon_utils.hpp" | |||||
#include "opencv2/core/vsx_utils.hpp" | |||||
#include "opencv2/core/check.hpp" | |||||
#endif //OPENCV_CORE_BASE_HPP |
@@ -0,0 +1,40 @@ | |||||
// This file is part of OpenCV project. | |||||
// It is subject to the license terms in the LICENSE file found in the top-level directory | |||||
// of this distribution and at http://opencv.org/license.html. | |||||
// | |||||
// Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. | |||||
#ifndef OPENCV_CORE_BUFFER_POOL_HPP | |||||
#define OPENCV_CORE_BUFFER_POOL_HPP | |||||
#ifdef _MSC_VER | |||||
#pragma warning(push) | |||||
#pragma warning(disable: 4265) | |||||
#endif | |||||
namespace cv | |||||
{ | |||||
//! @addtogroup core | |||||
//! @{ | |||||
class BufferPoolController | |||||
{ | |||||
protected: | |||||
~BufferPoolController() { } | |||||
public: | |||||
virtual size_t getReservedSize() const = 0; | |||||
virtual size_t getMaxReservedSize() const = 0; | |||||
virtual void setMaxReservedSize(size_t size) = 0; | |||||
virtual void freeAllReservedBuffers() = 0; | |||||
}; | |||||
//! @} | |||||
} | |||||
#ifdef _MSC_VER | |||||
#pragma warning(pop) | |||||
#endif | |||||
#endif // OPENCV_CORE_BUFFER_POOL_HPP |
@@ -0,0 +1,135 @@ | |||||
// This file is part of OpenCV project. | |||||
// It is subject to the license terms in the LICENSE file found in the top-level directory | |||||
// of this distribution and at http://opencv.org/license.html. | |||||
#ifndef OPENCV_CORE_CHECK_HPP | |||||
#define OPENCV_CORE_CHECK_HPP | |||||
#include <opencv2/core/base.hpp> | |||||
namespace cv { | |||||
/** Returns string of cv::Mat depth value: CV_8U -> "CV_8U" or "<invalid depth>" */ | |||||
CV_EXPORTS const char* depthToString(int depth); | |||||
/** Returns string of cv::Mat depth value: CV_8UC3 -> "CV_8UC3" or "<invalid type>" */ | |||||
CV_EXPORTS const String typeToString(int type); | |||||
//! @cond IGNORED | |||||
namespace detail { | |||||
/** Returns string of cv::Mat depth value: CV_8U -> "CV_8U" or NULL */ | |||||
CV_EXPORTS const char* depthToString_(int depth); | |||||
/** Returns string of cv::Mat depth value: CV_8UC3 -> "CV_8UC3" or cv::String() */ | |||||
CV_EXPORTS const cv::String typeToString_(int type); | |||||
enum TestOp { | |||||
TEST_CUSTOM = 0, | |||||
TEST_EQ = 1, | |||||
TEST_NE = 2, | |||||
TEST_LE = 3, | |||||
TEST_LT = 4, | |||||
TEST_GE = 5, | |||||
TEST_GT = 6, | |||||
CV__LAST_TEST_OP | |||||
}; | |||||
struct CheckContext { | |||||
const char* func; | |||||
const char* file; | |||||
int line; | |||||
enum TestOp testOp; | |||||
const char* message; | |||||
const char* p1_str; | |||||
const char* p2_str; | |||||
}; | |||||
#ifndef CV__CHECK_FILENAME | |||||
# define CV__CHECK_FILENAME __FILE__ | |||||
#endif | |||||
#ifndef CV__CHECK_FUNCTION | |||||
# if defined _MSC_VER | |||||
# define CV__CHECK_FUNCTION __FUNCSIG__ | |||||
# elif defined __GNUC__ | |||||
# define CV__CHECK_FUNCTION __PRETTY_FUNCTION__ | |||||
# else | |||||
# define CV__CHECK_FUNCTION "<unknown>" | |||||
# endif | |||||
#endif | |||||
#define CV__CHECK_LOCATION_VARNAME(id) CVAUX_CONCAT(CVAUX_CONCAT(__cv_check_, id), __LINE__) | |||||
#define CV__DEFINE_CHECK_CONTEXT(id, message, testOp, p1_str, p2_str) \ | |||||
static const cv::detail::CheckContext CV__CHECK_LOCATION_VARNAME(id) = \ | |||||
{ CV__CHECK_FUNCTION, CV__CHECK_FILENAME, __LINE__, testOp, message, p1_str, p2_str } | |||||
CV_EXPORTS void CV_NORETURN check_failed_auto(const int v1, const int v2, const CheckContext& ctx); | |||||
CV_EXPORTS void CV_NORETURN check_failed_auto(const float v1, const float v2, const CheckContext& ctx); | |||||
CV_EXPORTS void CV_NORETURN check_failed_auto(const double v1, const double v2, const CheckContext& ctx); | |||||
CV_EXPORTS void CV_NORETURN check_failed_MatDepth(const int v1, const int v2, const CheckContext& ctx); | |||||
CV_EXPORTS void CV_NORETURN check_failed_MatType(const int v1, const int v2, const CheckContext& ctx); | |||||
CV_EXPORTS void CV_NORETURN check_failed_MatChannels(const int v1, const int v2, const CheckContext& ctx); | |||||
CV_EXPORTS void CV_NORETURN check_failed_auto(const int v, const CheckContext& ctx); | |||||
CV_EXPORTS void CV_NORETURN check_failed_auto(const float v, const CheckContext& ctx); | |||||
CV_EXPORTS void CV_NORETURN check_failed_auto(const double v, const CheckContext& ctx); | |||||
CV_EXPORTS void CV_NORETURN check_failed_MatDepth(const int v, const CheckContext& ctx); | |||||
CV_EXPORTS void CV_NORETURN check_failed_MatType(const int v, const CheckContext& ctx); | |||||
CV_EXPORTS void CV_NORETURN check_failed_MatChannels(const int v, const CheckContext& ctx); | |||||
#define CV__TEST_EQ(v1, v2) ((v1) == (v2)) | |||||
#define CV__TEST_NE(v1, v2) ((v1) != (v2)) | |||||
#define CV__TEST_LE(v1, v2) ((v1) <= (v2)) | |||||
#define CV__TEST_LT(v1, v2) ((v1) < (v2)) | |||||
#define CV__TEST_GE(v1, v2) ((v1) >= (v2)) | |||||
#define CV__TEST_GT(v1, v2) ((v1) > (v2)) | |||||
#define CV__CHECK(id, op, type, v1, v2, v1_str, v2_str, msg_str) do { \ | |||||
if(CV__TEST_##op((v1), (v2))) ; else { \ | |||||
CV__DEFINE_CHECK_CONTEXT(id, msg_str, cv::detail::TEST_ ## op, v1_str, v2_str); \ | |||||
cv::detail::check_failed_ ## type((v1), (v2), CV__CHECK_LOCATION_VARNAME(id)); \ | |||||
} \ | |||||
} while (0) | |||||
#define CV__CHECK_CUSTOM_TEST(id, type, v, test_expr, v_str, test_expr_str, msg_str) do { \ | |||||
if(!!(test_expr)) ; else { \ | |||||
CV__DEFINE_CHECK_CONTEXT(id, msg_str, cv::detail::TEST_CUSTOM, v_str, test_expr_str); \ | |||||
cv::detail::check_failed_ ## type((v), CV__CHECK_LOCATION_VARNAME(id)); \ | |||||
} \ | |||||
} while (0) | |||||
} // namespace | |||||
//! @endcond | |||||
/// Supported values of these types: int, float, double | |||||
#define CV_CheckEQ(v1, v2, msg) CV__CHECK(_, EQ, auto, v1, v2, #v1, #v2, msg) | |||||
#define CV_CheckNE(v1, v2, msg) CV__CHECK(_, NE, auto, v1, v2, #v1, #v2, msg) | |||||
#define CV_CheckLE(v1, v2, msg) CV__CHECK(_, LE, auto, v1, v2, #v1, #v2, msg) | |||||
#define CV_CheckLT(v1, v2, msg) CV__CHECK(_, LT, auto, v1, v2, #v1, #v2, msg) | |||||
#define CV_CheckGE(v1, v2, msg) CV__CHECK(_, GE, auto, v1, v2, #v1, #v2, msg) | |||||
#define CV_CheckGT(v1, v2, msg) CV__CHECK(_, GT, auto, v1, v2, #v1, #v2, msg) | |||||
/// Check with additional "decoding" of type values in error message | |||||
#define CV_CheckTypeEQ(t1, t2, msg) CV__CHECK(_, EQ, MatType, t1, t2, #t1, #t2, msg) | |||||
/// Check with additional "decoding" of depth values in error message | |||||
#define CV_CheckDepthEQ(d1, d2, msg) CV__CHECK(_, EQ, MatDepth, d1, d2, #d1, #d2, msg) | |||||
#define CV_CheckChannelsEQ(c1, c2, msg) CV__CHECK(_, EQ, MatChannels, c1, c2, #c1, #c2, msg) | |||||
/// Example: type == CV_8UC1 || type == CV_8UC3 | |||||
#define CV_CheckType(t, test_expr, msg) CV__CHECK_CUSTOM_TEST(_, MatType, t, (test_expr), #t, #test_expr, msg) | |||||
/// Example: depth == CV_32F || depth == CV_64F | |||||
#define CV_CheckDepth(t, test_expr, msg) CV__CHECK_CUSTOM_TEST(_, MatDepth, t, (test_expr), #t, #test_expr, msg) | |||||
/// Some complex conditions: CV_Check(src2, src2.empty() || (src2.type() == src1.type() && src2.size() == src1.size()), "src2 should have same size/type as src1") | |||||
// TODO define pretty-printers: #define CV_Check(v, test_expr, msg) CV__CHECK_CUSTOM_TEST(_, auto, v, (test_expr), #v, #test_expr, msg) | |||||
} // namespace | |||||
#endif // OPENCV_CORE_CHECK_HPP |
@@ -0,0 +1,48 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Copyright (C) 2013, OpenCV Foundation, all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifdef __OPENCV_BUILD | |||||
#error this is a compatibility header which should not be used inside the OpenCV library | |||||
#endif | |||||
#include "opencv2/core.hpp" |
@@ -0,0 +1,631 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Copyright (C) 2013, OpenCV Foundation, all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CORE_CUDAINL_HPP | |||||
#define OPENCV_CORE_CUDAINL_HPP | |||||
#include "opencv2/core/cuda.hpp" | |||||
//! @cond IGNORED | |||||
namespace cv { namespace cuda { | |||||
//=================================================================================== | |||||
// GpuMat | |||||
//=================================================================================== | |||||
inline | |||||
GpuMat::GpuMat(Allocator* allocator_) | |||||
: flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), allocator(allocator_) | |||||
{} | |||||
inline | |||||
GpuMat::GpuMat(int rows_, int cols_, int type_, Allocator* allocator_) | |||||
: flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), allocator(allocator_) | |||||
{ | |||||
if (rows_ > 0 && cols_ > 0) | |||||
create(rows_, cols_, type_); | |||||
} | |||||
inline | |||||
GpuMat::GpuMat(Size size_, int type_, Allocator* allocator_) | |||||
: flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), allocator(allocator_) | |||||
{ | |||||
if (size_.height > 0 && size_.width > 0) | |||||
create(size_.height, size_.width, type_); | |||||
} | |||||
inline | |||||
GpuMat::GpuMat(int rows_, int cols_, int type_, Scalar s_, Allocator* allocator_) | |||||
: flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), allocator(allocator_) | |||||
{ | |||||
if (rows_ > 0 && cols_ > 0) | |||||
{ | |||||
create(rows_, cols_, type_); | |||||
setTo(s_); | |||||
} | |||||
} | |||||
inline | |||||
GpuMat::GpuMat(Size size_, int type_, Scalar s_, Allocator* allocator_) | |||||
: flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), allocator(allocator_) | |||||
{ | |||||
if (size_.height > 0 && size_.width > 0) | |||||
{ | |||||
create(size_.height, size_.width, type_); | |||||
setTo(s_); | |||||
} | |||||
} | |||||
inline | |||||
GpuMat::GpuMat(const GpuMat& m) | |||||
: flags(m.flags), rows(m.rows), cols(m.cols), step(m.step), data(m.data), refcount(m.refcount), datastart(m.datastart), dataend(m.dataend), allocator(m.allocator) | |||||
{ | |||||
if (refcount) | |||||
CV_XADD(refcount, 1); | |||||
} | |||||
inline | |||||
GpuMat::GpuMat(InputArray arr, Allocator* allocator_) : | |||||
flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), allocator(allocator_) | |||||
{ | |||||
upload(arr); | |||||
} | |||||
inline | |||||
GpuMat::~GpuMat() | |||||
{ | |||||
release(); | |||||
} | |||||
inline | |||||
GpuMat& GpuMat::operator =(const GpuMat& m) | |||||
{ | |||||
if (this != &m) | |||||
{ | |||||
GpuMat temp(m); | |||||
swap(temp); | |||||
} | |||||
return *this; | |||||
} | |||||
inline | |||||
void GpuMat::create(Size size_, int type_) | |||||
{ | |||||
create(size_.height, size_.width, type_); | |||||
} | |||||
inline | |||||
void GpuMat::swap(GpuMat& b) | |||||
{ | |||||
std::swap(flags, b.flags); | |||||
std::swap(rows, b.rows); | |||||
std::swap(cols, b.cols); | |||||
std::swap(step, b.step); | |||||
std::swap(data, b.data); | |||||
std::swap(datastart, b.datastart); | |||||
std::swap(dataend, b.dataend); | |||||
std::swap(refcount, b.refcount); | |||||
std::swap(allocator, b.allocator); | |||||
} | |||||
inline | |||||
GpuMat GpuMat::clone() const | |||||
{ | |||||
GpuMat m; | |||||
copyTo(m); | |||||
return m; | |||||
} | |||||
inline | |||||
void GpuMat::copyTo(OutputArray dst, InputArray mask) const | |||||
{ | |||||
copyTo(dst, mask, Stream::Null()); | |||||
} | |||||
inline | |||||
GpuMat& GpuMat::setTo(Scalar s) | |||||
{ | |||||
return setTo(s, Stream::Null()); | |||||
} | |||||
inline | |||||
GpuMat& GpuMat::setTo(Scalar s, InputArray mask) | |||||
{ | |||||
return setTo(s, mask, Stream::Null()); | |||||
} | |||||
inline | |||||
void GpuMat::convertTo(OutputArray dst, int rtype) const | |||||
{ | |||||
convertTo(dst, rtype, Stream::Null()); | |||||
} | |||||
inline | |||||
void GpuMat::convertTo(OutputArray dst, int rtype, double alpha, double beta) const | |||||
{ | |||||
convertTo(dst, rtype, alpha, beta, Stream::Null()); | |||||
} | |||||
inline | |||||
void GpuMat::convertTo(OutputArray dst, int rtype, double alpha, Stream& stream) const | |||||
{ | |||||
convertTo(dst, rtype, alpha, 0.0, stream); | |||||
} | |||||
inline | |||||
void GpuMat::assignTo(GpuMat& m, int _type) const | |||||
{ | |||||
if (_type < 0) | |||||
m = *this; | |||||
else | |||||
convertTo(m, _type); | |||||
} | |||||
inline | |||||
uchar* GpuMat::ptr(int y) | |||||
{ | |||||
CV_DbgAssert( (unsigned)y < (unsigned)rows ); | |||||
return data + step * y; | |||||
} | |||||
inline | |||||
const uchar* GpuMat::ptr(int y) const | |||||
{ | |||||
CV_DbgAssert( (unsigned)y < (unsigned)rows ); | |||||
return data + step * y; | |||||
} | |||||
template<typename _Tp> inline | |||||
_Tp* GpuMat::ptr(int y) | |||||
{ | |||||
return (_Tp*)ptr(y); | |||||
} | |||||
template<typename _Tp> inline | |||||
const _Tp* GpuMat::ptr(int y) const | |||||
{ | |||||
return (const _Tp*)ptr(y); | |||||
} | |||||
template <class T> inline | |||||
GpuMat::operator PtrStepSz<T>() const | |||||
{ | |||||
return PtrStepSz<T>(rows, cols, (T*)data, step); | |||||
} | |||||
template <class T> inline | |||||
GpuMat::operator PtrStep<T>() const | |||||
{ | |||||
return PtrStep<T>((T*)data, step); | |||||
} | |||||
inline | |||||
GpuMat GpuMat::row(int y) const | |||||
{ | |||||
return GpuMat(*this, Range(y, y+1), Range::all()); | |||||
} | |||||
inline | |||||
GpuMat GpuMat::col(int x) const | |||||
{ | |||||
return GpuMat(*this, Range::all(), Range(x, x+1)); | |||||
} | |||||
inline | |||||
GpuMat GpuMat::rowRange(int startrow, int endrow) const | |||||
{ | |||||
return GpuMat(*this, Range(startrow, endrow), Range::all()); | |||||
} | |||||
inline | |||||
GpuMat GpuMat::rowRange(Range r) const | |||||
{ | |||||
return GpuMat(*this, r, Range::all()); | |||||
} | |||||
inline | |||||
GpuMat GpuMat::colRange(int startcol, int endcol) const | |||||
{ | |||||
return GpuMat(*this, Range::all(), Range(startcol, endcol)); | |||||
} | |||||
inline | |||||
GpuMat GpuMat::colRange(Range r) const | |||||
{ | |||||
return GpuMat(*this, Range::all(), r); | |||||
} | |||||
inline | |||||
GpuMat GpuMat::operator ()(Range rowRange_, Range colRange_) const | |||||
{ | |||||
return GpuMat(*this, rowRange_, colRange_); | |||||
} | |||||
inline | |||||
GpuMat GpuMat::operator ()(Rect roi) const | |||||
{ | |||||
return GpuMat(*this, roi); | |||||
} | |||||
inline | |||||
bool GpuMat::isContinuous() const | |||||
{ | |||||
return (flags & Mat::CONTINUOUS_FLAG) != 0; | |||||
} | |||||
inline | |||||
size_t GpuMat::elemSize() const | |||||
{ | |||||
return CV_ELEM_SIZE(flags); | |||||
} | |||||
inline | |||||
size_t GpuMat::elemSize1() const | |||||
{ | |||||
return CV_ELEM_SIZE1(flags); | |||||
} | |||||
inline | |||||
int GpuMat::type() const | |||||
{ | |||||
return CV_MAT_TYPE(flags); | |||||
} | |||||
inline | |||||
int GpuMat::depth() const | |||||
{ | |||||
return CV_MAT_DEPTH(flags); | |||||
} | |||||
inline | |||||
int GpuMat::channels() const | |||||
{ | |||||
return CV_MAT_CN(flags); | |||||
} | |||||
inline | |||||
size_t GpuMat::step1() const | |||||
{ | |||||
return step / elemSize1(); | |||||
} | |||||
inline | |||||
Size GpuMat::size() const | |||||
{ | |||||
return Size(cols, rows); | |||||
} | |||||
inline | |||||
bool GpuMat::empty() const | |||||
{ | |||||
return data == 0; | |||||
} | |||||
static inline | |||||
GpuMat createContinuous(int rows, int cols, int type) | |||||
{ | |||||
GpuMat m; | |||||
createContinuous(rows, cols, type, m); | |||||
return m; | |||||
} | |||||
static inline | |||||
void createContinuous(Size size, int type, OutputArray arr) | |||||
{ | |||||
createContinuous(size.height, size.width, type, arr); | |||||
} | |||||
static inline | |||||
GpuMat createContinuous(Size size, int type) | |||||
{ | |||||
GpuMat m; | |||||
createContinuous(size, type, m); | |||||
return m; | |||||
} | |||||
static inline | |||||
void ensureSizeIsEnough(Size size, int type, OutputArray arr) | |||||
{ | |||||
ensureSizeIsEnough(size.height, size.width, type, arr); | |||||
} | |||||
static inline | |||||
void swap(GpuMat& a, GpuMat& b) | |||||
{ | |||||
a.swap(b); | |||||
} | |||||
//=================================================================================== | |||||
// HostMem | |||||
//=================================================================================== | |||||
inline | |||||
HostMem::HostMem(AllocType alloc_type_) | |||||
: flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), alloc_type(alloc_type_) | |||||
{ | |||||
} | |||||
inline | |||||
HostMem::HostMem(const HostMem& m) | |||||
: flags(m.flags), rows(m.rows), cols(m.cols), step(m.step), data(m.data), refcount(m.refcount), datastart(m.datastart), dataend(m.dataend), alloc_type(m.alloc_type) | |||||
{ | |||||
if( refcount ) | |||||
CV_XADD(refcount, 1); | |||||
} | |||||
inline | |||||
HostMem::HostMem(int rows_, int cols_, int type_, AllocType alloc_type_) | |||||
: flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), alloc_type(alloc_type_) | |||||
{ | |||||
if (rows_ > 0 && cols_ > 0) | |||||
create(rows_, cols_, type_); | |||||
} | |||||
inline | |||||
HostMem::HostMem(Size size_, int type_, AllocType alloc_type_) | |||||
: flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), alloc_type(alloc_type_) | |||||
{ | |||||
if (size_.height > 0 && size_.width > 0) | |||||
create(size_.height, size_.width, type_); | |||||
} | |||||
inline | |||||
HostMem::HostMem(InputArray arr, AllocType alloc_type_) | |||||
: flags(0), rows(0), cols(0), step(0), data(0), refcount(0), datastart(0), dataend(0), alloc_type(alloc_type_) | |||||
{ | |||||
arr.getMat().copyTo(*this); | |||||
} | |||||
inline | |||||
HostMem::~HostMem() | |||||
{ | |||||
release(); | |||||
} | |||||
inline | |||||
HostMem& HostMem::operator =(const HostMem& m) | |||||
{ | |||||
if (this != &m) | |||||
{ | |||||
HostMem temp(m); | |||||
swap(temp); | |||||
} | |||||
return *this; | |||||
} | |||||
inline | |||||
void HostMem::swap(HostMem& b) | |||||
{ | |||||
std::swap(flags, b.flags); | |||||
std::swap(rows, b.rows); | |||||
std::swap(cols, b.cols); | |||||
std::swap(step, b.step); | |||||
std::swap(data, b.data); | |||||
std::swap(datastart, b.datastart); | |||||
std::swap(dataend, b.dataend); | |||||
std::swap(refcount, b.refcount); | |||||
std::swap(alloc_type, b.alloc_type); | |||||
} | |||||
inline | |||||
HostMem HostMem::clone() const | |||||
{ | |||||
HostMem m(size(), type(), alloc_type); | |||||
createMatHeader().copyTo(m); | |||||
return m; | |||||
} | |||||
inline | |||||
void HostMem::create(Size size_, int type_) | |||||
{ | |||||
create(size_.height, size_.width, type_); | |||||
} | |||||
inline | |||||
Mat HostMem::createMatHeader() const | |||||
{ | |||||
return Mat(size(), type(), data, step); | |||||
} | |||||
inline | |||||
bool HostMem::isContinuous() const | |||||
{ | |||||
return (flags & Mat::CONTINUOUS_FLAG) != 0; | |||||
} | |||||
inline | |||||
size_t HostMem::elemSize() const | |||||
{ | |||||
return CV_ELEM_SIZE(flags); | |||||
} | |||||
inline | |||||
size_t HostMem::elemSize1() const | |||||
{ | |||||
return CV_ELEM_SIZE1(flags); | |||||
} | |||||
inline | |||||
int HostMem::type() const | |||||
{ | |||||
return CV_MAT_TYPE(flags); | |||||
} | |||||
inline | |||||
int HostMem::depth() const | |||||
{ | |||||
return CV_MAT_DEPTH(flags); | |||||
} | |||||
inline | |||||
int HostMem::channels() const | |||||
{ | |||||
return CV_MAT_CN(flags); | |||||
} | |||||
inline | |||||
size_t HostMem::step1() const | |||||
{ | |||||
return step / elemSize1(); | |||||
} | |||||
inline | |||||
Size HostMem::size() const | |||||
{ | |||||
return Size(cols, rows); | |||||
} | |||||
inline | |||||
bool HostMem::empty() const | |||||
{ | |||||
return data == 0; | |||||
} | |||||
static inline | |||||
void swap(HostMem& a, HostMem& b) | |||||
{ | |||||
a.swap(b); | |||||
} | |||||
//=================================================================================== | |||||
// Stream | |||||
//=================================================================================== | |||||
inline | |||||
Stream::Stream(const Ptr<Impl>& impl) | |||||
: impl_(impl) | |||||
{ | |||||
} | |||||
//=================================================================================== | |||||
// Event | |||||
//=================================================================================== | |||||
inline | |||||
Event::Event(const Ptr<Impl>& impl) | |||||
: impl_(impl) | |||||
{ | |||||
} | |||||
//=================================================================================== | |||||
// Initialization & Info | |||||
//=================================================================================== | |||||
inline | |||||
bool TargetArchs::has(int major, int minor) | |||||
{ | |||||
return hasPtx(major, minor) || hasBin(major, minor); | |||||
} | |||||
inline | |||||
bool TargetArchs::hasEqualOrGreater(int major, int minor) | |||||
{ | |||||
return hasEqualOrGreaterPtx(major, minor) || hasEqualOrGreaterBin(major, minor); | |||||
} | |||||
inline | |||||
DeviceInfo::DeviceInfo() | |||||
{ | |||||
device_id_ = getDevice(); | |||||
} | |||||
inline | |||||
DeviceInfo::DeviceInfo(int device_id) | |||||
{ | |||||
CV_Assert( device_id >= 0 && device_id < getCudaEnabledDeviceCount() ); | |||||
device_id_ = device_id; | |||||
} | |||||
inline | |||||
int DeviceInfo::deviceID() const | |||||
{ | |||||
return device_id_; | |||||
} | |||||
inline | |||||
size_t DeviceInfo::freeMemory() const | |||||
{ | |||||
size_t _totalMemory = 0, _freeMemory = 0; | |||||
queryMemory(_totalMemory, _freeMemory); | |||||
return _freeMemory; | |||||
} | |||||
inline | |||||
size_t DeviceInfo::totalMemory() const | |||||
{ | |||||
size_t _totalMemory = 0, _freeMemory = 0; | |||||
queryMemory(_totalMemory, _freeMemory); | |||||
return _totalMemory; | |||||
} | |||||
inline | |||||
bool DeviceInfo::supports(FeatureSet feature_set) const | |||||
{ | |||||
int version = majorVersion() * 10 + minorVersion(); | |||||
return version >= feature_set; | |||||
} | |||||
}} // namespace cv { namespace cuda { | |||||
//=================================================================================== | |||||
// Mat | |||||
//=================================================================================== | |||||
namespace cv { | |||||
inline | |||||
Mat::Mat(const cuda::GpuMat& m) | |||||
: flags(0), dims(0), rows(0), cols(0), data(0), datastart(0), dataend(0), datalimit(0), allocator(0), u(0), size(&rows) | |||||
{ | |||||
m.download(*this); | |||||
} | |||||
} | |||||
//! @endcond | |||||
#endif // OPENCV_CORE_CUDAINL_HPP |
@@ -0,0 +1,211 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CUDA_DEVICE_BLOCK_HPP | |||||
#define OPENCV_CUDA_DEVICE_BLOCK_HPP | |||||
/** @file | |||||
* @deprecated Use @ref cudev instead. | |||||
*/ | |||||
//! @cond IGNORED | |||||
namespace cv { namespace cuda { namespace device | |||||
{ | |||||
struct Block | |||||
{ | |||||
static __device__ __forceinline__ unsigned int id() | |||||
{ | |||||
return blockIdx.x; | |||||
} | |||||
static __device__ __forceinline__ unsigned int stride() | |||||
{ | |||||
return blockDim.x * blockDim.y * blockDim.z; | |||||
} | |||||
static __device__ __forceinline__ void sync() | |||||
{ | |||||
__syncthreads(); | |||||
} | |||||
static __device__ __forceinline__ int flattenedThreadId() | |||||
{ | |||||
return threadIdx.z * blockDim.x * blockDim.y + threadIdx.y * blockDim.x + threadIdx.x; | |||||
} | |||||
template<typename It, typename T> | |||||
static __device__ __forceinline__ void fill(It beg, It end, const T& value) | |||||
{ | |||||
int STRIDE = stride(); | |||||
It t = beg + flattenedThreadId(); | |||||
for(; t < end; t += STRIDE) | |||||
*t = value; | |||||
} | |||||
template<typename OutIt, typename T> | |||||
static __device__ __forceinline__ void yota(OutIt beg, OutIt end, T value) | |||||
{ | |||||
int STRIDE = stride(); | |||||
int tid = flattenedThreadId(); | |||||
value += tid; | |||||
for(OutIt t = beg + tid; t < end; t += STRIDE, value += STRIDE) | |||||
*t = value; | |||||
} | |||||
template<typename InIt, typename OutIt> | |||||
static __device__ __forceinline__ void copy(InIt beg, InIt end, OutIt out) | |||||
{ | |||||
int STRIDE = stride(); | |||||
InIt t = beg + flattenedThreadId(); | |||||
OutIt o = out + (t - beg); | |||||
for(; t < end; t += STRIDE, o += STRIDE) | |||||
*o = *t; | |||||
} | |||||
template<typename InIt, typename OutIt, class UnOp> | |||||
static __device__ __forceinline__ void transform(InIt beg, InIt end, OutIt out, UnOp op) | |||||
{ | |||||
int STRIDE = stride(); | |||||
InIt t = beg + flattenedThreadId(); | |||||
OutIt o = out + (t - beg); | |||||
for(; t < end; t += STRIDE, o += STRIDE) | |||||
*o = op(*t); | |||||
} | |||||
template<typename InIt1, typename InIt2, typename OutIt, class BinOp> | |||||
static __device__ __forceinline__ void transform(InIt1 beg1, InIt1 end1, InIt2 beg2, OutIt out, BinOp op) | |||||
{ | |||||
int STRIDE = stride(); | |||||
InIt1 t1 = beg1 + flattenedThreadId(); | |||||
InIt2 t2 = beg2 + flattenedThreadId(); | |||||
OutIt o = out + (t1 - beg1); | |||||
for(; t1 < end1; t1 += STRIDE, t2 += STRIDE, o += STRIDE) | |||||
*o = op(*t1, *t2); | |||||
} | |||||
template<int CTA_SIZE, typename T, class BinOp> | |||||
static __device__ __forceinline__ void reduce(volatile T* buffer, BinOp op) | |||||
{ | |||||
int tid = flattenedThreadId(); | |||||
T val = buffer[tid]; | |||||
if (CTA_SIZE >= 1024) { if (tid < 512) buffer[tid] = val = op(val, buffer[tid + 512]); __syncthreads(); } | |||||
if (CTA_SIZE >= 512) { if (tid < 256) buffer[tid] = val = op(val, buffer[tid + 256]); __syncthreads(); } | |||||
if (CTA_SIZE >= 256) { if (tid < 128) buffer[tid] = val = op(val, buffer[tid + 128]); __syncthreads(); } | |||||
if (CTA_SIZE >= 128) { if (tid < 64) buffer[tid] = val = op(val, buffer[tid + 64]); __syncthreads(); } | |||||
if (tid < 32) | |||||
{ | |||||
if (CTA_SIZE >= 64) { buffer[tid] = val = op(val, buffer[tid + 32]); } | |||||
if (CTA_SIZE >= 32) { buffer[tid] = val = op(val, buffer[tid + 16]); } | |||||
if (CTA_SIZE >= 16) { buffer[tid] = val = op(val, buffer[tid + 8]); } | |||||
if (CTA_SIZE >= 8) { buffer[tid] = val = op(val, buffer[tid + 4]); } | |||||
if (CTA_SIZE >= 4) { buffer[tid] = val = op(val, buffer[tid + 2]); } | |||||
if (CTA_SIZE >= 2) { buffer[tid] = val = op(val, buffer[tid + 1]); } | |||||
} | |||||
} | |||||
template<int CTA_SIZE, typename T, class BinOp> | |||||
static __device__ __forceinline__ T reduce(volatile T* buffer, T init, BinOp op) | |||||
{ | |||||
int tid = flattenedThreadId(); | |||||
T val = buffer[tid] = init; | |||||
__syncthreads(); | |||||
if (CTA_SIZE >= 1024) { if (tid < 512) buffer[tid] = val = op(val, buffer[tid + 512]); __syncthreads(); } | |||||
if (CTA_SIZE >= 512) { if (tid < 256) buffer[tid] = val = op(val, buffer[tid + 256]); __syncthreads(); } | |||||
if (CTA_SIZE >= 256) { if (tid < 128) buffer[tid] = val = op(val, buffer[tid + 128]); __syncthreads(); } | |||||
if (CTA_SIZE >= 128) { if (tid < 64) buffer[tid] = val = op(val, buffer[tid + 64]); __syncthreads(); } | |||||
if (tid < 32) | |||||
{ | |||||
if (CTA_SIZE >= 64) { buffer[tid] = val = op(val, buffer[tid + 32]); } | |||||
if (CTA_SIZE >= 32) { buffer[tid] = val = op(val, buffer[tid + 16]); } | |||||
if (CTA_SIZE >= 16) { buffer[tid] = val = op(val, buffer[tid + 8]); } | |||||
if (CTA_SIZE >= 8) { buffer[tid] = val = op(val, buffer[tid + 4]); } | |||||
if (CTA_SIZE >= 4) { buffer[tid] = val = op(val, buffer[tid + 2]); } | |||||
if (CTA_SIZE >= 2) { buffer[tid] = val = op(val, buffer[tid + 1]); } | |||||
} | |||||
__syncthreads(); | |||||
return buffer[0]; | |||||
} | |||||
template <typename T, class BinOp> | |||||
static __device__ __forceinline__ void reduce_n(T* data, unsigned int n, BinOp op) | |||||
{ | |||||
int ftid = flattenedThreadId(); | |||||
int sft = stride(); | |||||
if (sft < n) | |||||
{ | |||||
for (unsigned int i = sft + ftid; i < n; i += sft) | |||||
data[ftid] = op(data[ftid], data[i]); | |||||
__syncthreads(); | |||||
n = sft; | |||||
} | |||||
while (n > 1) | |||||
{ | |||||
unsigned int half = n/2; | |||||
if (ftid < half) | |||||
data[ftid] = op(data[ftid], data[n - ftid - 1]); | |||||
__syncthreads(); | |||||
n = n - half; | |||||
} | |||||
} | |||||
}; | |||||
}}} | |||||
//! @endcond | |||||
#endif /* OPENCV_CUDA_DEVICE_BLOCK_HPP */ |
@@ -0,0 +1,722 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CUDA_BORDER_INTERPOLATE_HPP | |||||
#define OPENCV_CUDA_BORDER_INTERPOLATE_HPP | |||||
#include "saturate_cast.hpp" | |||||
#include "vec_traits.hpp" | |||||
#include "vec_math.hpp" | |||||
/** @file | |||||
* @deprecated Use @ref cudev instead. | |||||
*/ | |||||
//! @cond IGNORED | |||||
namespace cv { namespace cuda { namespace device | |||||
{ | |||||
////////////////////////////////////////////////////////////// | |||||
// BrdConstant | |||||
template <typename D> struct BrdRowConstant | |||||
{ | |||||
typedef D result_type; | |||||
explicit __host__ __device__ __forceinline__ BrdRowConstant(int width_, const D& val_ = VecTraits<D>::all(0)) : width(width_), val(val_) {} | |||||
template <typename T> __device__ __forceinline__ D at_low(int x, const T* data) const | |||||
{ | |||||
return x >= 0 ? saturate_cast<D>(data[x]) : val; | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_high(int x, const T* data) const | |||||
{ | |||||
return x < width ? saturate_cast<D>(data[x]) : val; | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at(int x, const T* data) const | |||||
{ | |||||
return (x >= 0 && x < width) ? saturate_cast<D>(data[x]) : val; | |||||
} | |||||
int width; | |||||
D val; | |||||
}; | |||||
template <typename D> struct BrdColConstant | |||||
{ | |||||
typedef D result_type; | |||||
explicit __host__ __device__ __forceinline__ BrdColConstant(int height_, const D& val_ = VecTraits<D>::all(0)) : height(height_), val(val_) {} | |||||
template <typename T> __device__ __forceinline__ D at_low(int y, const T* data, size_t step) const | |||||
{ | |||||
return y >= 0 ? saturate_cast<D>(*(const T*)((const char*)data + y * step)) : val; | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_high(int y, const T* data, size_t step) const | |||||
{ | |||||
return y < height ? saturate_cast<D>(*(const T*)((const char*)data + y * step)) : val; | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at(int y, const T* data, size_t step) const | |||||
{ | |||||
return (y >= 0 && y < height) ? saturate_cast<D>(*(const T*)((const char*)data + y * step)) : val; | |||||
} | |||||
int height; | |||||
D val; | |||||
}; | |||||
template <typename D> struct BrdConstant | |||||
{ | |||||
typedef D result_type; | |||||
__host__ __device__ __forceinline__ BrdConstant(int height_, int width_, const D& val_ = VecTraits<D>::all(0)) : height(height_), width(width_), val(val_) | |||||
{ | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at(int y, int x, const T* data, size_t step) const | |||||
{ | |||||
return (x >= 0 && x < width && y >= 0 && y < height) ? saturate_cast<D>(((const T*)((const uchar*)data + y * step))[x]) : val; | |||||
} | |||||
template <typename Ptr2D> __device__ __forceinline__ D at(typename Ptr2D::index_type y, typename Ptr2D::index_type x, const Ptr2D& src) const | |||||
{ | |||||
return (x >= 0 && x < width && y >= 0 && y < height) ? saturate_cast<D>(src(y, x)) : val; | |||||
} | |||||
int height; | |||||
int width; | |||||
D val; | |||||
}; | |||||
////////////////////////////////////////////////////////////// | |||||
// BrdReplicate | |||||
template <typename D> struct BrdRowReplicate | |||||
{ | |||||
typedef D result_type; | |||||
explicit __host__ __device__ __forceinline__ BrdRowReplicate(int width) : last_col(width - 1) {} | |||||
template <typename U> __host__ __device__ __forceinline__ BrdRowReplicate(int width, U) : last_col(width - 1) {} | |||||
__device__ __forceinline__ int idx_col_low(int x) const | |||||
{ | |||||
return ::max(x, 0); | |||||
} | |||||
__device__ __forceinline__ int idx_col_high(int x) const | |||||
{ | |||||
return ::min(x, last_col); | |||||
} | |||||
__device__ __forceinline__ int idx_col(int x) const | |||||
{ | |||||
return idx_col_low(idx_col_high(x)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_low(int x, const T* data) const | |||||
{ | |||||
return saturate_cast<D>(data[idx_col_low(x)]); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_high(int x, const T* data) const | |||||
{ | |||||
return saturate_cast<D>(data[idx_col_high(x)]); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at(int x, const T* data) const | |||||
{ | |||||
return saturate_cast<D>(data[idx_col(x)]); | |||||
} | |||||
int last_col; | |||||
}; | |||||
template <typename D> struct BrdColReplicate | |||||
{ | |||||
typedef D result_type; | |||||
explicit __host__ __device__ __forceinline__ BrdColReplicate(int height) : last_row(height - 1) {} | |||||
template <typename U> __host__ __device__ __forceinline__ BrdColReplicate(int height, U) : last_row(height - 1) {} | |||||
__device__ __forceinline__ int idx_row_low(int y) const | |||||
{ | |||||
return ::max(y, 0); | |||||
} | |||||
__device__ __forceinline__ int idx_row_high(int y) const | |||||
{ | |||||
return ::min(y, last_row); | |||||
} | |||||
__device__ __forceinline__ int idx_row(int y) const | |||||
{ | |||||
return idx_row_low(idx_row_high(y)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_low(int y, const T* data, size_t step) const | |||||
{ | |||||
return saturate_cast<D>(*(const T*)((const char*)data + idx_row_low(y) * step)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_high(int y, const T* data, size_t step) const | |||||
{ | |||||
return saturate_cast<D>(*(const T*)((const char*)data + idx_row_high(y) * step)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at(int y, const T* data, size_t step) const | |||||
{ | |||||
return saturate_cast<D>(*(const T*)((const char*)data + idx_row(y) * step)); | |||||
} | |||||
int last_row; | |||||
}; | |||||
template <typename D> struct BrdReplicate | |||||
{ | |||||
typedef D result_type; | |||||
__host__ __device__ __forceinline__ BrdReplicate(int height, int width) : last_row(height - 1), last_col(width - 1) {} | |||||
template <typename U> __host__ __device__ __forceinline__ BrdReplicate(int height, int width, U) : last_row(height - 1), last_col(width - 1) {} | |||||
__device__ __forceinline__ int idx_row_low(int y) const | |||||
{ | |||||
return ::max(y, 0); | |||||
} | |||||
__device__ __forceinline__ int idx_row_high(int y) const | |||||
{ | |||||
return ::min(y, last_row); | |||||
} | |||||
__device__ __forceinline__ int idx_row(int y) const | |||||
{ | |||||
return idx_row_low(idx_row_high(y)); | |||||
} | |||||
__device__ __forceinline__ int idx_col_low(int x) const | |||||
{ | |||||
return ::max(x, 0); | |||||
} | |||||
__device__ __forceinline__ int idx_col_high(int x) const | |||||
{ | |||||
return ::min(x, last_col); | |||||
} | |||||
__device__ __forceinline__ int idx_col(int x) const | |||||
{ | |||||
return idx_col_low(idx_col_high(x)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at(int y, int x, const T* data, size_t step) const | |||||
{ | |||||
return saturate_cast<D>(((const T*)((const char*)data + idx_row(y) * step))[idx_col(x)]); | |||||
} | |||||
template <typename Ptr2D> __device__ __forceinline__ D at(typename Ptr2D::index_type y, typename Ptr2D::index_type x, const Ptr2D& src) const | |||||
{ | |||||
return saturate_cast<D>(src(idx_row(y), idx_col(x))); | |||||
} | |||||
int last_row; | |||||
int last_col; | |||||
}; | |||||
////////////////////////////////////////////////////////////// | |||||
// BrdReflect101 | |||||
template <typename D> struct BrdRowReflect101 | |||||
{ | |||||
typedef D result_type; | |||||
explicit __host__ __device__ __forceinline__ BrdRowReflect101(int width) : last_col(width - 1) {} | |||||
template <typename U> __host__ __device__ __forceinline__ BrdRowReflect101(int width, U) : last_col(width - 1) {} | |||||
__device__ __forceinline__ int idx_col_low(int x) const | |||||
{ | |||||
return ::abs(x) % (last_col + 1); | |||||
} | |||||
__device__ __forceinline__ int idx_col_high(int x) const | |||||
{ | |||||
return ::abs(last_col - ::abs(last_col - x)) % (last_col + 1); | |||||
} | |||||
__device__ __forceinline__ int idx_col(int x) const | |||||
{ | |||||
return idx_col_low(idx_col_high(x)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_low(int x, const T* data) const | |||||
{ | |||||
return saturate_cast<D>(data[idx_col_low(x)]); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_high(int x, const T* data) const | |||||
{ | |||||
return saturate_cast<D>(data[idx_col_high(x)]); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at(int x, const T* data) const | |||||
{ | |||||
return saturate_cast<D>(data[idx_col(x)]); | |||||
} | |||||
int last_col; | |||||
}; | |||||
template <typename D> struct BrdColReflect101 | |||||
{ | |||||
typedef D result_type; | |||||
explicit __host__ __device__ __forceinline__ BrdColReflect101(int height) : last_row(height - 1) {} | |||||
template <typename U> __host__ __device__ __forceinline__ BrdColReflect101(int height, U) : last_row(height - 1) {} | |||||
__device__ __forceinline__ int idx_row_low(int y) const | |||||
{ | |||||
return ::abs(y) % (last_row + 1); | |||||
} | |||||
__device__ __forceinline__ int idx_row_high(int y) const | |||||
{ | |||||
return ::abs(last_row - ::abs(last_row - y)) % (last_row + 1); | |||||
} | |||||
__device__ __forceinline__ int idx_row(int y) const | |||||
{ | |||||
return idx_row_low(idx_row_high(y)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_low(int y, const T* data, size_t step) const | |||||
{ | |||||
return saturate_cast<D>(*(const D*)((const char*)data + idx_row_low(y) * step)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_high(int y, const T* data, size_t step) const | |||||
{ | |||||
return saturate_cast<D>(*(const D*)((const char*)data + idx_row_high(y) * step)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at(int y, const T* data, size_t step) const | |||||
{ | |||||
return saturate_cast<D>(*(const D*)((const char*)data + idx_row(y) * step)); | |||||
} | |||||
int last_row; | |||||
}; | |||||
template <typename D> struct BrdReflect101 | |||||
{ | |||||
typedef D result_type; | |||||
__host__ __device__ __forceinline__ BrdReflect101(int height, int width) : last_row(height - 1), last_col(width - 1) {} | |||||
template <typename U> __host__ __device__ __forceinline__ BrdReflect101(int height, int width, U) : last_row(height - 1), last_col(width - 1) {} | |||||
__device__ __forceinline__ int idx_row_low(int y) const | |||||
{ | |||||
return ::abs(y) % (last_row + 1); | |||||
} | |||||
__device__ __forceinline__ int idx_row_high(int y) const | |||||
{ | |||||
return ::abs(last_row - ::abs(last_row - y)) % (last_row + 1); | |||||
} | |||||
__device__ __forceinline__ int idx_row(int y) const | |||||
{ | |||||
return idx_row_low(idx_row_high(y)); | |||||
} | |||||
__device__ __forceinline__ int idx_col_low(int x) const | |||||
{ | |||||
return ::abs(x) % (last_col + 1); | |||||
} | |||||
__device__ __forceinline__ int idx_col_high(int x) const | |||||
{ | |||||
return ::abs(last_col - ::abs(last_col - x)) % (last_col + 1); | |||||
} | |||||
__device__ __forceinline__ int idx_col(int x) const | |||||
{ | |||||
return idx_col_low(idx_col_high(x)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at(int y, int x, const T* data, size_t step) const | |||||
{ | |||||
return saturate_cast<D>(((const T*)((const char*)data + idx_row(y) * step))[idx_col(x)]); | |||||
} | |||||
template <typename Ptr2D> __device__ __forceinline__ D at(typename Ptr2D::index_type y, typename Ptr2D::index_type x, const Ptr2D& src) const | |||||
{ | |||||
return saturate_cast<D>(src(idx_row(y), idx_col(x))); | |||||
} | |||||
int last_row; | |||||
int last_col; | |||||
}; | |||||
////////////////////////////////////////////////////////////// | |||||
// BrdReflect | |||||
template <typename D> struct BrdRowReflect | |||||
{ | |||||
typedef D result_type; | |||||
explicit __host__ __device__ __forceinline__ BrdRowReflect(int width) : last_col(width - 1) {} | |||||
template <typename U> __host__ __device__ __forceinline__ BrdRowReflect(int width, U) : last_col(width - 1) {} | |||||
__device__ __forceinline__ int idx_col_low(int x) const | |||||
{ | |||||
return (::abs(x) - (x < 0)) % (last_col + 1); | |||||
} | |||||
__device__ __forceinline__ int idx_col_high(int x) const | |||||
{ | |||||
return ::abs(last_col - ::abs(last_col - x) + (x > last_col)) % (last_col + 1); | |||||
} | |||||
__device__ __forceinline__ int idx_col(int x) const | |||||
{ | |||||
return idx_col_high(::abs(x) - (x < 0)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_low(int x, const T* data) const | |||||
{ | |||||
return saturate_cast<D>(data[idx_col_low(x)]); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_high(int x, const T* data) const | |||||
{ | |||||
return saturate_cast<D>(data[idx_col_high(x)]); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at(int x, const T* data) const | |||||
{ | |||||
return saturate_cast<D>(data[idx_col(x)]); | |||||
} | |||||
int last_col; | |||||
}; | |||||
template <typename D> struct BrdColReflect | |||||
{ | |||||
typedef D result_type; | |||||
explicit __host__ __device__ __forceinline__ BrdColReflect(int height) : last_row(height - 1) {} | |||||
template <typename U> __host__ __device__ __forceinline__ BrdColReflect(int height, U) : last_row(height - 1) {} | |||||
__device__ __forceinline__ int idx_row_low(int y) const | |||||
{ | |||||
return (::abs(y) - (y < 0)) % (last_row + 1); | |||||
} | |||||
__device__ __forceinline__ int idx_row_high(int y) const | |||||
{ | |||||
return ::abs(last_row - ::abs(last_row - y) + (y > last_row)) % (last_row + 1); | |||||
} | |||||
__device__ __forceinline__ int idx_row(int y) const | |||||
{ | |||||
return idx_row_high(::abs(y) - (y < 0)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_low(int y, const T* data, size_t step) const | |||||
{ | |||||
return saturate_cast<D>(*(const D*)((const char*)data + idx_row_low(y) * step)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_high(int y, const T* data, size_t step) const | |||||
{ | |||||
return saturate_cast<D>(*(const D*)((const char*)data + idx_row_high(y) * step)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at(int y, const T* data, size_t step) const | |||||
{ | |||||
return saturate_cast<D>(*(const D*)((const char*)data + idx_row(y) * step)); | |||||
} | |||||
int last_row; | |||||
}; | |||||
template <typename D> struct BrdReflect | |||||
{ | |||||
typedef D result_type; | |||||
__host__ __device__ __forceinline__ BrdReflect(int height, int width) : last_row(height - 1), last_col(width - 1) {} | |||||
template <typename U> __host__ __device__ __forceinline__ BrdReflect(int height, int width, U) : last_row(height - 1), last_col(width - 1) {} | |||||
__device__ __forceinline__ int idx_row_low(int y) const | |||||
{ | |||||
return (::abs(y) - (y < 0)) % (last_row + 1); | |||||
} | |||||
__device__ __forceinline__ int idx_row_high(int y) const | |||||
{ | |||||
return /*::abs*/(last_row - ::abs(last_row - y) + (y > last_row)) /*% (last_row + 1)*/; | |||||
} | |||||
__device__ __forceinline__ int idx_row(int y) const | |||||
{ | |||||
return idx_row_low(idx_row_high(y)); | |||||
} | |||||
__device__ __forceinline__ int idx_col_low(int x) const | |||||
{ | |||||
return (::abs(x) - (x < 0)) % (last_col + 1); | |||||
} | |||||
__device__ __forceinline__ int idx_col_high(int x) const | |||||
{ | |||||
return (last_col - ::abs(last_col - x) + (x > last_col)); | |||||
} | |||||
__device__ __forceinline__ int idx_col(int x) const | |||||
{ | |||||
return idx_col_low(idx_col_high(x)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at(int y, int x, const T* data, size_t step) const | |||||
{ | |||||
return saturate_cast<D>(((const T*)((const char*)data + idx_row(y) * step))[idx_col(x)]); | |||||
} | |||||
template <typename Ptr2D> __device__ __forceinline__ D at(typename Ptr2D::index_type y, typename Ptr2D::index_type x, const Ptr2D& src) const | |||||
{ | |||||
return saturate_cast<D>(src(idx_row(y), idx_col(x))); | |||||
} | |||||
int last_row; | |||||
int last_col; | |||||
}; | |||||
////////////////////////////////////////////////////////////// | |||||
// BrdWrap | |||||
template <typename D> struct BrdRowWrap | |||||
{ | |||||
typedef D result_type; | |||||
explicit __host__ __device__ __forceinline__ BrdRowWrap(int width_) : width(width_) {} | |||||
template <typename U> __host__ __device__ __forceinline__ BrdRowWrap(int width_, U) : width(width_) {} | |||||
__device__ __forceinline__ int idx_col_low(int x) const | |||||
{ | |||||
return (x >= 0) * x + (x < 0) * (x - ((x - width + 1) / width) * width); | |||||
} | |||||
__device__ __forceinline__ int idx_col_high(int x) const | |||||
{ | |||||
return (x < width) * x + (x >= width) * (x % width); | |||||
} | |||||
__device__ __forceinline__ int idx_col(int x) const | |||||
{ | |||||
return idx_col_high(idx_col_low(x)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_low(int x, const T* data) const | |||||
{ | |||||
return saturate_cast<D>(data[idx_col_low(x)]); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_high(int x, const T* data) const | |||||
{ | |||||
return saturate_cast<D>(data[idx_col_high(x)]); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at(int x, const T* data) const | |||||
{ | |||||
return saturate_cast<D>(data[idx_col(x)]); | |||||
} | |||||
int width; | |||||
}; | |||||
template <typename D> struct BrdColWrap | |||||
{ | |||||
typedef D result_type; | |||||
explicit __host__ __device__ __forceinline__ BrdColWrap(int height_) : height(height_) {} | |||||
template <typename U> __host__ __device__ __forceinline__ BrdColWrap(int height_, U) : height(height_) {} | |||||
__device__ __forceinline__ int idx_row_low(int y) const | |||||
{ | |||||
return (y >= 0) * y + (y < 0) * (y - ((y - height + 1) / height) * height); | |||||
} | |||||
__device__ __forceinline__ int idx_row_high(int y) const | |||||
{ | |||||
return (y < height) * y + (y >= height) * (y % height); | |||||
} | |||||
__device__ __forceinline__ int idx_row(int y) const | |||||
{ | |||||
return idx_row_high(idx_row_low(y)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_low(int y, const T* data, size_t step) const | |||||
{ | |||||
return saturate_cast<D>(*(const D*)((const char*)data + idx_row_low(y) * step)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at_high(int y, const T* data, size_t step) const | |||||
{ | |||||
return saturate_cast<D>(*(const D*)((const char*)data + idx_row_high(y) * step)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at(int y, const T* data, size_t step) const | |||||
{ | |||||
return saturate_cast<D>(*(const D*)((const char*)data + idx_row(y) * step)); | |||||
} | |||||
int height; | |||||
}; | |||||
template <typename D> struct BrdWrap | |||||
{ | |||||
typedef D result_type; | |||||
__host__ __device__ __forceinline__ BrdWrap(int height_, int width_) : | |||||
height(height_), width(width_) | |||||
{ | |||||
} | |||||
template <typename U> | |||||
__host__ __device__ __forceinline__ BrdWrap(int height_, int width_, U) : | |||||
height(height_), width(width_) | |||||
{ | |||||
} | |||||
__device__ __forceinline__ int idx_row_low(int y) const | |||||
{ | |||||
return (y >= 0) ? y : (y - ((y - height + 1) / height) * height); | |||||
} | |||||
__device__ __forceinline__ int idx_row_high(int y) const | |||||
{ | |||||
return (y < height) ? y : (y % height); | |||||
} | |||||
__device__ __forceinline__ int idx_row(int y) const | |||||
{ | |||||
return idx_row_high(idx_row_low(y)); | |||||
} | |||||
__device__ __forceinline__ int idx_col_low(int x) const | |||||
{ | |||||
return (x >= 0) ? x : (x - ((x - width + 1) / width) * width); | |||||
} | |||||
__device__ __forceinline__ int idx_col_high(int x) const | |||||
{ | |||||
return (x < width) ? x : (x % width); | |||||
} | |||||
__device__ __forceinline__ int idx_col(int x) const | |||||
{ | |||||
return idx_col_high(idx_col_low(x)); | |||||
} | |||||
template <typename T> __device__ __forceinline__ D at(int y, int x, const T* data, size_t step) const | |||||
{ | |||||
return saturate_cast<D>(((const T*)((const char*)data + idx_row(y) * step))[idx_col(x)]); | |||||
} | |||||
template <typename Ptr2D> __device__ __forceinline__ D at(typename Ptr2D::index_type y, typename Ptr2D::index_type x, const Ptr2D& src) const | |||||
{ | |||||
return saturate_cast<D>(src(idx_row(y), idx_col(x))); | |||||
} | |||||
int height; | |||||
int width; | |||||
}; | |||||
////////////////////////////////////////////////////////////// | |||||
// BorderReader | |||||
template <typename Ptr2D, typename B> struct BorderReader | |||||
{ | |||||
typedef typename B::result_type elem_type; | |||||
typedef typename Ptr2D::index_type index_type; | |||||
__host__ __device__ __forceinline__ BorderReader(const Ptr2D& ptr_, const B& b_) : ptr(ptr_), b(b_) {} | |||||
__device__ __forceinline__ elem_type operator ()(index_type y, index_type x) const | |||||
{ | |||||
return b.at(y, x, ptr); | |||||
} | |||||
Ptr2D ptr; | |||||
B b; | |||||
}; | |||||
// under win32 there is some bug with templated types that passed as kernel parameters | |||||
// with this specialization all works fine | |||||
template <typename Ptr2D, typename D> struct BorderReader< Ptr2D, BrdConstant<D> > | |||||
{ | |||||
typedef typename BrdConstant<D>::result_type elem_type; | |||||
typedef typename Ptr2D::index_type index_type; | |||||
__host__ __device__ __forceinline__ BorderReader(const Ptr2D& src_, const BrdConstant<D>& b) : | |||||
src(src_), height(b.height), width(b.width), val(b.val) | |||||
{ | |||||
} | |||||
__device__ __forceinline__ D operator ()(index_type y, index_type x) const | |||||
{ | |||||
return (x >= 0 && x < width && y >= 0 && y < height) ? saturate_cast<D>(src(y, x)) : val; | |||||
} | |||||
Ptr2D src; | |||||
int height; | |||||
int width; | |||||
D val; | |||||
}; | |||||
}}} // namespace cv { namespace cuda { namespace cudev | |||||
//! @endcond | |||||
#endif // OPENCV_CUDA_BORDER_INTERPOLATE_HPP |
@@ -0,0 +1,309 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CUDA_COLOR_HPP | |||||
#define OPENCV_CUDA_COLOR_HPP | |||||
#include "detail/color_detail.hpp" | |||||
/** @file | |||||
* @deprecated Use @ref cudev instead. | |||||
*/ | |||||
//! @cond IGNORED | |||||
namespace cv { namespace cuda { namespace device | |||||
{ | |||||
// All OPENCV_CUDA_IMPLEMENT_*_TRAITS(ColorSpace1_to_ColorSpace2, ...) macros implements | |||||
// template <typename T> class ColorSpace1_to_ColorSpace2_traits | |||||
// { | |||||
// typedef ... functor_type; | |||||
// static __host__ __device__ functor_type create_functor(); | |||||
// }; | |||||
OPENCV_CUDA_IMPLEMENT_RGB2RGB_TRAITS(bgr_to_rgb, 3, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2RGB_TRAITS(bgr_to_bgra, 3, 4, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2RGB_TRAITS(bgr_to_rgba, 3, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2RGB_TRAITS(bgra_to_bgr, 4, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2RGB_TRAITS(bgra_to_rgb, 4, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2RGB_TRAITS(bgra_to_rgba, 4, 4, 2) | |||||
#undef OPENCV_CUDA_IMPLEMENT_RGB2RGB_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(bgr_to_bgr555, 3, 0, 5) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(bgr_to_bgr565, 3, 0, 6) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(rgb_to_bgr555, 3, 2, 5) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(rgb_to_bgr565, 3, 2, 6) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(bgra_to_bgr555, 4, 0, 5) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(bgra_to_bgr565, 4, 0, 6) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(rgba_to_bgr555, 4, 2, 5) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS(rgba_to_bgr565, 4, 2, 6) | |||||
#undef OPENCV_CUDA_IMPLEMENT_RGB2RGB5x5_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(bgr555_to_rgb, 3, 2, 5) | |||||
OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(bgr565_to_rgb, 3, 2, 6) | |||||
OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(bgr555_to_bgr, 3, 0, 5) | |||||
OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(bgr565_to_bgr, 3, 0, 6) | |||||
OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(bgr555_to_rgba, 4, 2, 5) | |||||
OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(bgr565_to_rgba, 4, 2, 6) | |||||
OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(bgr555_to_bgra, 4, 0, 5) | |||||
OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS(bgr565_to_bgra, 4, 0, 6) | |||||
#undef OPENCV_CUDA_IMPLEMENT_RGB5x52RGB_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_GRAY2RGB_TRAITS(gray_to_bgr, 3) | |||||
OPENCV_CUDA_IMPLEMENT_GRAY2RGB_TRAITS(gray_to_bgra, 4) | |||||
#undef OPENCV_CUDA_IMPLEMENT_GRAY2RGB_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_GRAY2RGB5x5_TRAITS(gray_to_bgr555, 5) | |||||
OPENCV_CUDA_IMPLEMENT_GRAY2RGB5x5_TRAITS(gray_to_bgr565, 6) | |||||
#undef OPENCV_CUDA_IMPLEMENT_GRAY2RGB5x5_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_RGB5x52GRAY_TRAITS(bgr555_to_gray, 5) | |||||
OPENCV_CUDA_IMPLEMENT_RGB5x52GRAY_TRAITS(bgr565_to_gray, 6) | |||||
#undef OPENCV_CUDA_IMPLEMENT_RGB5x52GRAY_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_RGB2GRAY_TRAITS(rgb_to_gray, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2GRAY_TRAITS(bgr_to_gray, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2GRAY_TRAITS(rgba_to_gray, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2GRAY_TRAITS(bgra_to_gray, 4, 0) | |||||
#undef OPENCV_CUDA_IMPLEMENT_RGB2GRAY_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(rgb_to_yuv, 3, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(rgba_to_yuv, 4, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(rgb_to_yuv4, 3, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(rgba_to_yuv4, 4, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(bgr_to_yuv, 3, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(bgra_to_yuv, 4, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(bgr_to_yuv4, 3, 4, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS(bgra_to_yuv4, 4, 4, 0) | |||||
#undef OPENCV_CUDA_IMPLEMENT_RGB2YUV_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(yuv_to_rgb, 3, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(yuv_to_rgba, 3, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(yuv4_to_rgb, 4, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(yuv4_to_rgba, 4, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(yuv_to_bgr, 3, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(yuv_to_bgra, 3, 4, 0) | |||||
OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(yuv4_to_bgr, 4, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS(yuv4_to_bgra, 4, 4, 0) | |||||
#undef OPENCV_CUDA_IMPLEMENT_YUV2RGB_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(rgb_to_YCrCb, 3, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(rgba_to_YCrCb, 4, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(rgb_to_YCrCb4, 3, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(rgba_to_YCrCb4, 4, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(bgr_to_YCrCb, 3, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(bgra_to_YCrCb, 4, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(bgr_to_YCrCb4, 3, 4, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS(bgra_to_YCrCb4, 4, 4, 0) | |||||
#undef OPENCV_CUDA_IMPLEMENT_RGB2YCrCb_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb_to_rgb, 3, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb_to_rgba, 3, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb4_to_rgb, 4, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb4_to_rgba, 4, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb_to_bgr, 3, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb_to_bgra, 3, 4, 0) | |||||
OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb4_to_bgr, 4, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS(YCrCb4_to_bgra, 4, 4, 0) | |||||
#undef OPENCV_CUDA_IMPLEMENT_YCrCb2RGB_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(rgb_to_xyz, 3, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(rgba_to_xyz, 4, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(rgb_to_xyz4, 3, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(rgba_to_xyz4, 4, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(bgr_to_xyz, 3, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(bgra_to_xyz, 4, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(bgr_to_xyz4, 3, 4, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS(bgra_to_xyz4, 4, 4, 0) | |||||
#undef OPENCV_CUDA_IMPLEMENT_RGB2XYZ_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(xyz_to_rgb, 3, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(xyz4_to_rgb, 4, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(xyz_to_rgba, 3, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(xyz4_to_rgba, 4, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(xyz_to_bgr, 3, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(xyz4_to_bgr, 4, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(xyz_to_bgra, 3, 4, 0) | |||||
OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS(xyz4_to_bgra, 4, 4, 0) | |||||
#undef OPENCV_CUDA_IMPLEMENT_XYZ2RGB_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(rgb_to_hsv, 3, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(rgba_to_hsv, 4, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(rgb_to_hsv4, 3, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(rgba_to_hsv4, 4, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(bgr_to_hsv, 3, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(bgra_to_hsv, 4, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(bgr_to_hsv4, 3, 4, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS(bgra_to_hsv4, 4, 4, 0) | |||||
#undef OPENCV_CUDA_IMPLEMENT_RGB2HSV_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(hsv_to_rgb, 3, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(hsv_to_rgba, 3, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(hsv4_to_rgb, 4, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(hsv4_to_rgba, 4, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(hsv_to_bgr, 3, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(hsv_to_bgra, 3, 4, 0) | |||||
OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(hsv4_to_bgr, 4, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS(hsv4_to_bgra, 4, 4, 0) | |||||
#undef OPENCV_CUDA_IMPLEMENT_HSV2RGB_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(rgb_to_hls, 3, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(rgba_to_hls, 4, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(rgb_to_hls4, 3, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(rgba_to_hls4, 4, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(bgr_to_hls, 3, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(bgra_to_hls, 4, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(bgr_to_hls4, 3, 4, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS(bgra_to_hls4, 4, 4, 0) | |||||
#undef OPENCV_CUDA_IMPLEMENT_RGB2HLS_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(hls_to_rgb, 3, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(hls_to_rgba, 3, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(hls4_to_rgb, 4, 3, 2) | |||||
OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(hls4_to_rgba, 4, 4, 2) | |||||
OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(hls_to_bgr, 3, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(hls_to_bgra, 3, 4, 0) | |||||
OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(hls4_to_bgr, 4, 3, 0) | |||||
OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS(hls4_to_bgra, 4, 4, 0) | |||||
#undef OPENCV_CUDA_IMPLEMENT_HLS2RGB_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(rgb_to_lab, 3, 3, true, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(rgba_to_lab, 4, 3, true, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(rgb_to_lab4, 3, 4, true, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(rgba_to_lab4, 4, 4, true, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(bgr_to_lab, 3, 3, true, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(bgra_to_lab, 4, 3, true, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(bgr_to_lab4, 3, 4, true, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(bgra_to_lab4, 4, 4, true, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(lrgb_to_lab, 3, 3, false, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(lrgba_to_lab, 4, 3, false, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(lrgb_to_lab4, 3, 4, false, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(lrgba_to_lab4, 4, 4, false, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(lbgr_to_lab, 3, 3, false, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(lbgra_to_lab, 4, 3, false, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(lbgr_to_lab4, 3, 4, false, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS(lbgra_to_lab4, 4, 4, false, 0) | |||||
#undef OPENCV_CUDA_IMPLEMENT_RGB2Lab_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab_to_rgb, 3, 3, true, 2) | |||||
OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_rgb, 4, 3, true, 2) | |||||
OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab_to_rgba, 3, 4, true, 2) | |||||
OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_rgba, 4, 4, true, 2) | |||||
OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab_to_bgr, 3, 3, true, 0) | |||||
OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_bgr, 4, 3, true, 0) | |||||
OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab_to_bgra, 3, 4, true, 0) | |||||
OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_bgra, 4, 4, true, 0) | |||||
OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab_to_lrgb, 3, 3, false, 2) | |||||
OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_lrgb, 4, 3, false, 2) | |||||
OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab_to_lrgba, 3, 4, false, 2) | |||||
OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_lrgba, 4, 4, false, 2) | |||||
OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab_to_lbgr, 3, 3, false, 0) | |||||
OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_lbgr, 4, 3, false, 0) | |||||
OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab_to_lbgra, 3, 4, false, 0) | |||||
OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS(lab4_to_lbgra, 4, 4, false, 0) | |||||
#undef OPENCV_CUDA_IMPLEMENT_Lab2RGB_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(rgb_to_luv, 3, 3, true, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(rgba_to_luv, 4, 3, true, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(rgb_to_luv4, 3, 4, true, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(rgba_to_luv4, 4, 4, true, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(bgr_to_luv, 3, 3, true, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(bgra_to_luv, 4, 3, true, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(bgr_to_luv4, 3, 4, true, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(bgra_to_luv4, 4, 4, true, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(lrgb_to_luv, 3, 3, false, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(lrgba_to_luv, 4, 3, false, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(lrgb_to_luv4, 3, 4, false, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(lrgba_to_luv4, 4, 4, false, 2) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(lbgr_to_luv, 3, 3, false, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(lbgra_to_luv, 4, 3, false, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(lbgr_to_luv4, 3, 4, false, 0) | |||||
OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS(lbgra_to_luv4, 4, 4, false, 0) | |||||
#undef OPENCV_CUDA_IMPLEMENT_RGB2Luv_TRAITS | |||||
OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv_to_rgb, 3, 3, true, 2) | |||||
OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_rgb, 4, 3, true, 2) | |||||
OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv_to_rgba, 3, 4, true, 2) | |||||
OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_rgba, 4, 4, true, 2) | |||||
OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv_to_bgr, 3, 3, true, 0) | |||||
OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_bgr, 4, 3, true, 0) | |||||
OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv_to_bgra, 3, 4, true, 0) | |||||
OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_bgra, 4, 4, true, 0) | |||||
OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv_to_lrgb, 3, 3, false, 2) | |||||
OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_lrgb, 4, 3, false, 2) | |||||
OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv_to_lrgba, 3, 4, false, 2) | |||||
OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_lrgba, 4, 4, false, 2) | |||||
OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv_to_lbgr, 3, 3, false, 0) | |||||
OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_lbgr, 4, 3, false, 0) | |||||
OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv_to_lbgra, 3, 4, false, 0) | |||||
OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS(luv4_to_lbgra, 4, 4, false, 0) | |||||
#undef OPENCV_CUDA_IMPLEMENT_Luv2RGB_TRAITS | |||||
}}} // namespace cv { namespace cuda { namespace cudev | |||||
//! @endcond | |||||
#endif // OPENCV_CUDA_COLOR_HPP |
@@ -0,0 +1,109 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CUDA_COMMON_HPP | |||||
#define OPENCV_CUDA_COMMON_HPP | |||||
#include <cuda_runtime.h> | |||||
#include "opencv2/core/cuda_types.hpp" | |||||
#include "opencv2/core/cvdef.h" | |||||
#include "opencv2/core/base.hpp" | |||||
/** @file | |||||
* @deprecated Use @ref cudev instead. | |||||
*/ | |||||
//! @cond IGNORED | |||||
#ifndef CV_PI_F | |||||
#ifndef CV_PI | |||||
#define CV_PI_F 3.14159265f | |||||
#else | |||||
#define CV_PI_F ((float)CV_PI) | |||||
#endif | |||||
#endif | |||||
namespace cv { namespace cuda { | |||||
static inline void checkCudaError(cudaError_t err, const char* file, const int line, const char* func) | |||||
{ | |||||
if (cudaSuccess != err) | |||||
cv::error(cv::Error::GpuApiCallError, cudaGetErrorString(err), func, file, line); | |||||
} | |||||
}} | |||||
#ifndef cudaSafeCall | |||||
#define cudaSafeCall(expr) cv::cuda::checkCudaError(expr, __FILE__, __LINE__, CV_Func) | |||||
#endif | |||||
namespace cv { namespace cuda | |||||
{ | |||||
template <typename T> static inline bool isAligned(const T* ptr, size_t size) | |||||
{ | |||||
return reinterpret_cast<size_t>(ptr) % size == 0; | |||||
} | |||||
static inline bool isAligned(size_t step, size_t size) | |||||
{ | |||||
return step % size == 0; | |||||
} | |||||
}} | |||||
namespace cv { namespace cuda | |||||
{ | |||||
namespace device | |||||
{ | |||||
__host__ __device__ __forceinline__ int divUp(int total, int grain) | |||||
{ | |||||
return (total + grain - 1) / grain; | |||||
} | |||||
template<class T> inline void bindTexture(const textureReference* tex, const PtrStepSz<T>& img) | |||||
{ | |||||
cudaChannelFormatDesc desc = cudaCreateChannelDesc<T>(); | |||||
cudaSafeCall( cudaBindTexture2D(0, tex, img.ptr(), &desc, img.cols, img.rows, img.step) ); | |||||
} | |||||
} | |||||
}} | |||||
//! @endcond | |||||
#endif // OPENCV_CUDA_COMMON_HPP |
@@ -0,0 +1,113 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CUDA_DATAMOV_UTILS_HPP | |||||
#define OPENCV_CUDA_DATAMOV_UTILS_HPP | |||||
#include "common.hpp" | |||||
/** @file | |||||
* @deprecated Use @ref cudev instead. | |||||
*/ | |||||
//! @cond IGNORED | |||||
namespace cv { namespace cuda { namespace device | |||||
{ | |||||
#if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 200 | |||||
// for Fermi memory space is detected automatically | |||||
template <typename T> struct ForceGlob | |||||
{ | |||||
__device__ __forceinline__ static void Load(const T* ptr, int offset, T& val) { val = ptr[offset]; } | |||||
}; | |||||
#else // __CUDA_ARCH__ >= 200 | |||||
#if defined(_WIN64) || defined(__LP64__) | |||||
// 64-bit register modifier for inlined asm | |||||
#define OPENCV_CUDA_ASM_PTR "l" | |||||
#else | |||||
// 32-bit register modifier for inlined asm | |||||
#define OPENCV_CUDA_ASM_PTR "r" | |||||
#endif | |||||
template<class T> struct ForceGlob; | |||||
#define OPENCV_CUDA_DEFINE_FORCE_GLOB(base_type, ptx_type, reg_mod) \ | |||||
template <> struct ForceGlob<base_type> \ | |||||
{ \ | |||||
__device__ __forceinline__ static void Load(const base_type* ptr, int offset, base_type& val) \ | |||||
{ \ | |||||
asm("ld.global."#ptx_type" %0, [%1];" : "="#reg_mod(val) : OPENCV_CUDA_ASM_PTR(ptr + offset)); \ | |||||
} \ | |||||
}; | |||||
#define OPENCV_CUDA_DEFINE_FORCE_GLOB_B(base_type, ptx_type) \ | |||||
template <> struct ForceGlob<base_type> \ | |||||
{ \ | |||||
__device__ __forceinline__ static void Load(const base_type* ptr, int offset, base_type& val) \ | |||||
{ \ | |||||
asm("ld.global."#ptx_type" %0, [%1];" : "=r"(*reinterpret_cast<uint*>(&val)) : OPENCV_CUDA_ASM_PTR(ptr + offset)); \ | |||||
} \ | |||||
}; | |||||
OPENCV_CUDA_DEFINE_FORCE_GLOB_B(uchar, u8) | |||||
OPENCV_CUDA_DEFINE_FORCE_GLOB_B(schar, s8) | |||||
OPENCV_CUDA_DEFINE_FORCE_GLOB_B(char, b8) | |||||
OPENCV_CUDA_DEFINE_FORCE_GLOB (ushort, u16, h) | |||||
OPENCV_CUDA_DEFINE_FORCE_GLOB (short, s16, h) | |||||
OPENCV_CUDA_DEFINE_FORCE_GLOB (uint, u32, r) | |||||
OPENCV_CUDA_DEFINE_FORCE_GLOB (int, s32, r) | |||||
OPENCV_CUDA_DEFINE_FORCE_GLOB (float, f32, f) | |||||
OPENCV_CUDA_DEFINE_FORCE_GLOB (double, f64, d) | |||||
#undef OPENCV_CUDA_DEFINE_FORCE_GLOB | |||||
#undef OPENCV_CUDA_DEFINE_FORCE_GLOB_B | |||||
#undef OPENCV_CUDA_ASM_PTR | |||||
#endif // __CUDA_ARCH__ >= 200 | |||||
}}} // namespace cv { namespace cuda { namespace cudev | |||||
//! @endcond | |||||
#endif // OPENCV_CUDA_DATAMOV_UTILS_HPP |
@@ -0,0 +1,365 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CUDA_REDUCE_DETAIL_HPP | |||||
#define OPENCV_CUDA_REDUCE_DETAIL_HPP | |||||
#include <thrust/tuple.h> | |||||
#include "../warp.hpp" | |||||
#include "../warp_shuffle.hpp" | |||||
//! @cond IGNORED | |||||
namespace cv { namespace cuda { namespace device | |||||
{ | |||||
namespace reduce_detail | |||||
{ | |||||
template <typename T> struct GetType; | |||||
template <typename T> struct GetType<T*> | |||||
{ | |||||
typedef T type; | |||||
}; | |||||
template <typename T> struct GetType<volatile T*> | |||||
{ | |||||
typedef T type; | |||||
}; | |||||
template <typename T> struct GetType<T&> | |||||
{ | |||||
typedef T type; | |||||
}; | |||||
template <unsigned int I, unsigned int N> | |||||
struct For | |||||
{ | |||||
template <class PointerTuple, class ValTuple> | |||||
static __device__ void loadToSmem(const PointerTuple& smem, const ValTuple& val, unsigned int tid) | |||||
{ | |||||
thrust::get<I>(smem)[tid] = thrust::get<I>(val); | |||||
For<I + 1, N>::loadToSmem(smem, val, tid); | |||||
} | |||||
template <class PointerTuple, class ValTuple> | |||||
static __device__ void loadFromSmem(const PointerTuple& smem, const ValTuple& val, unsigned int tid) | |||||
{ | |||||
thrust::get<I>(val) = thrust::get<I>(smem)[tid]; | |||||
For<I + 1, N>::loadFromSmem(smem, val, tid); | |||||
} | |||||
template <class PointerTuple, class ValTuple, class OpTuple> | |||||
static __device__ void merge(const PointerTuple& smem, const ValTuple& val, unsigned int tid, unsigned int delta, const OpTuple& op) | |||||
{ | |||||
typename GetType<typename thrust::tuple_element<I, PointerTuple>::type>::type reg = thrust::get<I>(smem)[tid + delta]; | |||||
thrust::get<I>(smem)[tid] = thrust::get<I>(val) = thrust::get<I>(op)(thrust::get<I>(val), reg); | |||||
For<I + 1, N>::merge(smem, val, tid, delta, op); | |||||
} | |||||
template <class ValTuple, class OpTuple> | |||||
static __device__ void mergeShfl(const ValTuple& val, unsigned int delta, unsigned int width, const OpTuple& op) | |||||
{ | |||||
typename GetType<typename thrust::tuple_element<I, ValTuple>::type>::type reg = shfl_down(thrust::get<I>(val), delta, width); | |||||
thrust::get<I>(val) = thrust::get<I>(op)(thrust::get<I>(val), reg); | |||||
For<I + 1, N>::mergeShfl(val, delta, width, op); | |||||
} | |||||
}; | |||||
template <unsigned int N> | |||||
struct For<N, N> | |||||
{ | |||||
template <class PointerTuple, class ValTuple> | |||||
static __device__ void loadToSmem(const PointerTuple&, const ValTuple&, unsigned int) | |||||
{ | |||||
} | |||||
template <class PointerTuple, class ValTuple> | |||||
static __device__ void loadFromSmem(const PointerTuple&, const ValTuple&, unsigned int) | |||||
{ | |||||
} | |||||
template <class PointerTuple, class ValTuple, class OpTuple> | |||||
static __device__ void merge(const PointerTuple&, const ValTuple&, unsigned int, unsigned int, const OpTuple&) | |||||
{ | |||||
} | |||||
template <class ValTuple, class OpTuple> | |||||
static __device__ void mergeShfl(const ValTuple&, unsigned int, unsigned int, const OpTuple&) | |||||
{ | |||||
} | |||||
}; | |||||
template <typename T> | |||||
__device__ __forceinline__ void loadToSmem(volatile T* smem, T& val, unsigned int tid) | |||||
{ | |||||
smem[tid] = val; | |||||
} | |||||
template <typename T> | |||||
__device__ __forceinline__ void loadFromSmem(volatile T* smem, T& val, unsigned int tid) | |||||
{ | |||||
val = smem[tid]; | |||||
} | |||||
template <typename P0, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, | |||||
typename R0, typename R1, typename R2, typename R3, typename R4, typename R5, typename R6, typename R7, typename R8, typename R9> | |||||
__device__ __forceinline__ void loadToSmem(const thrust::tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9>& smem, | |||||
const thrust::tuple<R0, R1, R2, R3, R4, R5, R6, R7, R8, R9>& val, | |||||
unsigned int tid) | |||||
{ | |||||
For<0, thrust::tuple_size<thrust::tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9> >::value>::loadToSmem(smem, val, tid); | |||||
} | |||||
template <typename P0, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, | |||||
typename R0, typename R1, typename R2, typename R3, typename R4, typename R5, typename R6, typename R7, typename R8, typename R9> | |||||
__device__ __forceinline__ void loadFromSmem(const thrust::tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9>& smem, | |||||
const thrust::tuple<R0, R1, R2, R3, R4, R5, R6, R7, R8, R9>& val, | |||||
unsigned int tid) | |||||
{ | |||||
For<0, thrust::tuple_size<thrust::tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9> >::value>::loadFromSmem(smem, val, tid); | |||||
} | |||||
template <typename T, class Op> | |||||
__device__ __forceinline__ void merge(volatile T* smem, T& val, unsigned int tid, unsigned int delta, const Op& op) | |||||
{ | |||||
T reg = smem[tid + delta]; | |||||
smem[tid] = val = op(val, reg); | |||||
} | |||||
template <typename T, class Op> | |||||
__device__ __forceinline__ void mergeShfl(T& val, unsigned int delta, unsigned int width, const Op& op) | |||||
{ | |||||
T reg = shfl_down(val, delta, width); | |||||
val = op(val, reg); | |||||
} | |||||
template <typename P0, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8, typename P9, | |||||
typename R0, typename R1, typename R2, typename R3, typename R4, typename R5, typename R6, typename R7, typename R8, typename R9, | |||||
class Op0, class Op1, class Op2, class Op3, class Op4, class Op5, class Op6, class Op7, class Op8, class Op9> | |||||
__device__ __forceinline__ void merge(const thrust::tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9>& smem, | |||||
const thrust::tuple<R0, R1, R2, R3, R4, R5, R6, R7, R8, R9>& val, | |||||
unsigned int tid, | |||||
unsigned int delta, | |||||
const thrust::tuple<Op0, Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8, Op9>& op) | |||||
{ | |||||
For<0, thrust::tuple_size<thrust::tuple<P0, P1, P2, P3, P4, P5, P6, P7, P8, P9> >::value>::merge(smem, val, tid, delta, op); | |||||
} | |||||
template <typename R0, typename R1, typename R2, typename R3, typename R4, typename R5, typename R6, typename R7, typename R8, typename R9, | |||||
class Op0, class Op1, class Op2, class Op3, class Op4, class Op5, class Op6, class Op7, class Op8, class Op9> | |||||
__device__ __forceinline__ void mergeShfl(const thrust::tuple<R0, R1, R2, R3, R4, R5, R6, R7, R8, R9>& val, | |||||
unsigned int delta, | |||||
unsigned int width, | |||||
const thrust::tuple<Op0, Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8, Op9>& op) | |||||
{ | |||||
For<0, thrust::tuple_size<thrust::tuple<R0, R1, R2, R3, R4, R5, R6, R7, R8, R9> >::value>::mergeShfl(val, delta, width, op); | |||||
} | |||||
template <unsigned int N> struct Generic | |||||
{ | |||||
template <typename Pointer, typename Reference, class Op> | |||||
static __device__ void reduce(Pointer smem, Reference val, unsigned int tid, Op op) | |||||
{ | |||||
loadToSmem(smem, val, tid); | |||||
if (N >= 32) | |||||
__syncthreads(); | |||||
if (N >= 2048) | |||||
{ | |||||
if (tid < 1024) | |||||
merge(smem, val, tid, 1024, op); | |||||
__syncthreads(); | |||||
} | |||||
if (N >= 1024) | |||||
{ | |||||
if (tid < 512) | |||||
merge(smem, val, tid, 512, op); | |||||
__syncthreads(); | |||||
} | |||||
if (N >= 512) | |||||
{ | |||||
if (tid < 256) | |||||
merge(smem, val, tid, 256, op); | |||||
__syncthreads(); | |||||
} | |||||
if (N >= 256) | |||||
{ | |||||
if (tid < 128) | |||||
merge(smem, val, tid, 128, op); | |||||
__syncthreads(); | |||||
} | |||||
if (N >= 128) | |||||
{ | |||||
if (tid < 64) | |||||
merge(smem, val, tid, 64, op); | |||||
__syncthreads(); | |||||
} | |||||
if (N >= 64) | |||||
{ | |||||
if (tid < 32) | |||||
merge(smem, val, tid, 32, op); | |||||
} | |||||
if (tid < 16) | |||||
{ | |||||
merge(smem, val, tid, 16, op); | |||||
merge(smem, val, tid, 8, op); | |||||
merge(smem, val, tid, 4, op); | |||||
merge(smem, val, tid, 2, op); | |||||
merge(smem, val, tid, 1, op); | |||||
} | |||||
} | |||||
}; | |||||
template <unsigned int I, typename Pointer, typename Reference, class Op> | |||||
struct Unroll | |||||
{ | |||||
static __device__ void loopShfl(Reference val, Op op, unsigned int N) | |||||
{ | |||||
mergeShfl(val, I, N, op); | |||||
Unroll<I / 2, Pointer, Reference, Op>::loopShfl(val, op, N); | |||||
} | |||||
static __device__ void loop(Pointer smem, Reference val, unsigned int tid, Op op) | |||||
{ | |||||
merge(smem, val, tid, I, op); | |||||
Unroll<I / 2, Pointer, Reference, Op>::loop(smem, val, tid, op); | |||||
} | |||||
}; | |||||
template <typename Pointer, typename Reference, class Op> | |||||
struct Unroll<0, Pointer, Reference, Op> | |||||
{ | |||||
static __device__ void loopShfl(Reference, Op, unsigned int) | |||||
{ | |||||
} | |||||
static __device__ void loop(Pointer, Reference, unsigned int, Op) | |||||
{ | |||||
} | |||||
}; | |||||
template <unsigned int N> struct WarpOptimized | |||||
{ | |||||
template <typename Pointer, typename Reference, class Op> | |||||
static __device__ void reduce(Pointer smem, Reference val, unsigned int tid, Op op) | |||||
{ | |||||
#if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 300 | |||||
(void) smem; | |||||
(void) tid; | |||||
Unroll<N / 2, Pointer, Reference, Op>::loopShfl(val, op, N); | |||||
#else | |||||
loadToSmem(smem, val, tid); | |||||
if (tid < N / 2) | |||||
Unroll<N / 2, Pointer, Reference, Op>::loop(smem, val, tid, op); | |||||
#endif | |||||
} | |||||
}; | |||||
template <unsigned int N> struct GenericOptimized32 | |||||
{ | |||||
enum { M = N / 32 }; | |||||
template <typename Pointer, typename Reference, class Op> | |||||
static __device__ void reduce(Pointer smem, Reference val, unsigned int tid, Op op) | |||||
{ | |||||
const unsigned int laneId = Warp::laneId(); | |||||
#if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 300 | |||||
Unroll<16, Pointer, Reference, Op>::loopShfl(val, op, warpSize); | |||||
if (laneId == 0) | |||||
loadToSmem(smem, val, tid / 32); | |||||
#else | |||||
loadToSmem(smem, val, tid); | |||||
if (laneId < 16) | |||||
Unroll<16, Pointer, Reference, Op>::loop(smem, val, tid, op); | |||||
__syncthreads(); | |||||
if (laneId == 0) | |||||
loadToSmem(smem, val, tid / 32); | |||||
#endif | |||||
__syncthreads(); | |||||
loadFromSmem(smem, val, tid); | |||||
if (tid < 32) | |||||
{ | |||||
#if defined __CUDA_ARCH__ && __CUDA_ARCH__ >= 300 | |||||
Unroll<M / 2, Pointer, Reference, Op>::loopShfl(val, op, M); | |||||
#else | |||||
Unroll<M / 2, Pointer, Reference, Op>::loop(smem, val, tid, op); | |||||
#endif | |||||
} | |||||
} | |||||
}; | |||||
template <bool val, class T1, class T2> struct StaticIf; | |||||
template <class T1, class T2> struct StaticIf<true, T1, T2> | |||||
{ | |||||
typedef T1 type; | |||||
}; | |||||
template <class T1, class T2> struct StaticIf<false, T1, T2> | |||||
{ | |||||
typedef T2 type; | |||||
}; | |||||
template <unsigned int N> struct IsPowerOf2 | |||||
{ | |||||
enum { value = ((N != 0) && !(N & (N - 1))) }; | |||||
}; | |||||
template <unsigned int N> struct Dispatcher | |||||
{ | |||||
typedef typename StaticIf< | |||||
(N <= 32) && IsPowerOf2<N>::value, | |||||
WarpOptimized<N>, | |||||
typename StaticIf< | |||||
(N <= 1024) && IsPowerOf2<N>::value, | |||||
GenericOptimized32<N>, | |||||
Generic<N> | |||||
>::type | |||||
>::type reductor; | |||||
}; | |||||
} | |||||
}}} | |||||
//! @endcond | |||||
#endif // OPENCV_CUDA_REDUCE_DETAIL_HPP |
@@ -0,0 +1,502 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CUDA_PRED_VAL_REDUCE_DETAIL_HPP | |||||
#define OPENCV_CUDA_PRED_VAL_REDUCE_DETAIL_HPP | |||||
#include <thrust/tuple.h> | |||||
#include "../warp.hpp" | |||||
#include "../warp_shuffle.hpp" | |||||
//! @cond IGNORED | |||||
namespace cv { namespace cuda { namespace device | |||||
{ | |||||
namespace reduce_key_val_detail | |||||
{ | |||||
template <typename T> struct GetType; | |||||
template <typename T> struct GetType<T*> | |||||
{ | |||||
typedef T type; | |||||
}; | |||||
template <typename T> struct GetType<volatile T*> | |||||
{ | |||||
typedef T type; | |||||
}; | |||||
template <typename T> struct GetType<T&> | |||||
{ | |||||
typedef T type; | |||||
}; | |||||
template <unsigned int I, unsigned int N> | |||||
struct For | |||||
{ | |||||
template <class PointerTuple, class ReferenceTuple> | |||||
static __device__ void loadToSmem(const PointerTuple& smem, const ReferenceTuple& data, unsigned int tid) | |||||
{ | |||||
thrust::get<I>(smem)[tid] = thrust::get<I>(data); | |||||
For<I + 1, N>::loadToSmem(smem, data, tid); | |||||
} | |||||
template <class PointerTuple, class ReferenceTuple> | |||||
static __device__ void loadFromSmem(const PointerTuple& smem, const ReferenceTuple& data, unsigned int tid) | |||||
{ | |||||
thrust::get<I>(data) = thrust::get<I>(smem)[tid]; | |||||
For<I + 1, N>::loadFromSmem(smem, data, tid); | |||||
} | |||||
template <class ReferenceTuple> | |||||
static __device__ void copyShfl(const ReferenceTuple& val, unsigned int delta, int width) | |||||
{ | |||||
thrust::get<I>(val) = shfl_down(thrust::get<I>(val), delta, width); | |||||
For<I + 1, N>::copyShfl(val, delta, width); | |||||
} | |||||
template <class PointerTuple, class ReferenceTuple> | |||||
static __device__ void copy(const PointerTuple& svals, const ReferenceTuple& val, unsigned int tid, unsigned int delta) | |||||
{ | |||||
thrust::get<I>(svals)[tid] = thrust::get<I>(val) = thrust::get<I>(svals)[tid + delta]; | |||||
For<I + 1, N>::copy(svals, val, tid, delta); | |||||
} | |||||
template <class KeyReferenceTuple, class ValReferenceTuple, class CmpTuple> | |||||
static __device__ void mergeShfl(const KeyReferenceTuple& key, const ValReferenceTuple& val, const CmpTuple& cmp, unsigned int delta, int width) | |||||
{ | |||||
typename GetType<typename thrust::tuple_element<I, KeyReferenceTuple>::type>::type reg = shfl_down(thrust::get<I>(key), delta, width); | |||||
if (thrust::get<I>(cmp)(reg, thrust::get<I>(key))) | |||||
{ | |||||
thrust::get<I>(key) = reg; | |||||
thrust::get<I>(val) = shfl_down(thrust::get<I>(val), delta, width); | |||||
} | |||||
For<I + 1, N>::mergeShfl(key, val, cmp, delta, width); | |||||
} | |||||
template <class KeyPointerTuple, class KeyReferenceTuple, class ValPointerTuple, class ValReferenceTuple, class CmpTuple> | |||||
static __device__ void merge(const KeyPointerTuple& skeys, const KeyReferenceTuple& key, | |||||
const ValPointerTuple& svals, const ValReferenceTuple& val, | |||||
const CmpTuple& cmp, | |||||
unsigned int tid, unsigned int delta) | |||||
{ | |||||
typename GetType<typename thrust::tuple_element<I, KeyPointerTuple>::type>::type reg = thrust::get<I>(skeys)[tid + delta]; | |||||
if (thrust::get<I>(cmp)(reg, thrust::get<I>(key))) | |||||
{ | |||||
thrust::get<I>(skeys)[tid] = thrust::get<I>(key) = reg; | |||||
thrust::get<I>(svals)[tid] = thrust::get<I>(val) = thrust::get<I>(svals)[tid + delta]; | |||||
} | |||||
For<I + 1, N>::merge(skeys, key, svals, val, cmp, tid, delta); | |||||
} | |||||
}; | |||||
template <unsigned int N> | |||||
struct For<N, N> | |||||
{ | |||||
template <class PointerTuple, class ReferenceTuple> | |||||
static __device__ void loadToSmem(const PointerTuple&, const ReferenceTuple&, unsigned int) | |||||
{ | |||||
} | |||||
template <class PointerTuple, class ReferenceTuple> | |||||
static __device__ void loadFromSmem(const PointerTuple&, const ReferenceTuple&, unsigned int) | |||||
{ | |||||
} | |||||
template <class ReferenceTuple> | |||||
static __device__ void copyShfl(const ReferenceTuple&, unsigned int, int) | |||||
{ | |||||
} | |||||
template <class PointerTuple, class ReferenceTuple> | |||||
static __device__ void copy(const PointerTuple&, const ReferenceTuple&, unsigned int, unsigned int) | |||||
{ | |||||
} | |||||
template <class KeyReferenceTuple, class ValReferenceTuple, class CmpTuple> | |||||
static __device__ void mergeShfl(const KeyReferenceTuple&, const ValReferenceTuple&, const CmpTuple&, unsigned int, int) | |||||
{ | |||||
} | |||||
template <class KeyPointerTuple, class KeyReferenceTuple, class ValPointerTuple, class ValReferenceTuple, class CmpTuple> | |||||
static __device__ void merge(const KeyPointerTuple&, const KeyReferenceTuple&, | |||||
const ValPointerTuple&, const ValReferenceTuple&, | |||||
const CmpTuple&, | |||||
unsigned int, unsigned int) | |||||
{ | |||||
} | |||||
}; | |||||
////////////////////////////////////////////////////// | |||||
// loadToSmem | |||||
template <typename T> | |||||
__device__ __forceinline__ void loadToSmem(volatile T* smem, T& data, unsigned int tid) | |||||
{ | |||||
smem[tid] = data; | |||||
} | |||||
template <typename T> | |||||
__device__ __forceinline__ void loadFromSmem(volatile T* smem, T& data, unsigned int tid) | |||||
{ | |||||
data = smem[tid]; | |||||
} | |||||
template <typename VP0, typename VP1, typename VP2, typename VP3, typename VP4, typename VP5, typename VP6, typename VP7, typename VP8, typename VP9, | |||||
typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9> | |||||
__device__ __forceinline__ void loadToSmem(const thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>& smem, | |||||
const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& data, | |||||
unsigned int tid) | |||||
{ | |||||
For<0, thrust::tuple_size<thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9> >::value>::loadToSmem(smem, data, tid); | |||||
} | |||||
template <typename VP0, typename VP1, typename VP2, typename VP3, typename VP4, typename VP5, typename VP6, typename VP7, typename VP8, typename VP9, | |||||
typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9> | |||||
__device__ __forceinline__ void loadFromSmem(const thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>& smem, | |||||
const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& data, | |||||
unsigned int tid) | |||||
{ | |||||
For<0, thrust::tuple_size<thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9> >::value>::loadFromSmem(smem, data, tid); | |||||
} | |||||
////////////////////////////////////////////////////// | |||||
// copyVals | |||||
template <typename V> | |||||
__device__ __forceinline__ void copyValsShfl(V& val, unsigned int delta, int width) | |||||
{ | |||||
val = shfl_down(val, delta, width); | |||||
} | |||||
template <typename V> | |||||
__device__ __forceinline__ void copyVals(volatile V* svals, V& val, unsigned int tid, unsigned int delta) | |||||
{ | |||||
svals[tid] = val = svals[tid + delta]; | |||||
} | |||||
template <typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9> | |||||
__device__ __forceinline__ void copyValsShfl(const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val, | |||||
unsigned int delta, | |||||
int width) | |||||
{ | |||||
For<0, thrust::tuple_size<thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9> >::value>::copyShfl(val, delta, width); | |||||
} | |||||
template <typename VP0, typename VP1, typename VP2, typename VP3, typename VP4, typename VP5, typename VP6, typename VP7, typename VP8, typename VP9, | |||||
typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9> | |||||
__device__ __forceinline__ void copyVals(const thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>& svals, | |||||
const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val, | |||||
unsigned int tid, unsigned int delta) | |||||
{ | |||||
For<0, thrust::tuple_size<thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9> >::value>::copy(svals, val, tid, delta); | |||||
} | |||||
////////////////////////////////////////////////////// | |||||
// merge | |||||
template <typename K, typename V, class Cmp> | |||||
__device__ __forceinline__ void mergeShfl(K& key, V& val, const Cmp& cmp, unsigned int delta, int width) | |||||
{ | |||||
K reg = shfl_down(key, delta, width); | |||||
if (cmp(reg, key)) | |||||
{ | |||||
key = reg; | |||||
copyValsShfl(val, delta, width); | |||||
} | |||||
} | |||||
template <typename K, typename V, class Cmp> | |||||
__device__ __forceinline__ void merge(volatile K* skeys, K& key, volatile V* svals, V& val, const Cmp& cmp, unsigned int tid, unsigned int delta) | |||||
{ | |||||
K reg = skeys[tid + delta]; | |||||
if (cmp(reg, key)) | |||||
{ | |||||
skeys[tid] = key = reg; | |||||
copyVals(svals, val, tid, delta); | |||||
} | |||||
} | |||||
template <typename K, | |||||
typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9, | |||||
class Cmp> | |||||
__device__ __forceinline__ void mergeShfl(K& key, | |||||
const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val, | |||||
const Cmp& cmp, | |||||
unsigned int delta, int width) | |||||
{ | |||||
K reg = shfl_down(key, delta, width); | |||||
if (cmp(reg, key)) | |||||
{ | |||||
key = reg; | |||||
copyValsShfl(val, delta, width); | |||||
} | |||||
} | |||||
template <typename K, | |||||
typename VP0, typename VP1, typename VP2, typename VP3, typename VP4, typename VP5, typename VP6, typename VP7, typename VP8, typename VP9, | |||||
typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9, | |||||
class Cmp> | |||||
__device__ __forceinline__ void merge(volatile K* skeys, K& key, | |||||
const thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>& svals, | |||||
const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val, | |||||
const Cmp& cmp, unsigned int tid, unsigned int delta) | |||||
{ | |||||
K reg = skeys[tid + delta]; | |||||
if (cmp(reg, key)) | |||||
{ | |||||
skeys[tid] = key = reg; | |||||
copyVals(svals, val, tid, delta); | |||||
} | |||||
} | |||||
template <typename KR0, typename KR1, typename KR2, typename KR3, typename KR4, typename KR5, typename KR6, typename KR7, typename KR8, typename KR9, | |||||
typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9, | |||||
class Cmp0, class Cmp1, class Cmp2, class Cmp3, class Cmp4, class Cmp5, class Cmp6, class Cmp7, class Cmp8, class Cmp9> | |||||
__device__ __forceinline__ void mergeShfl(const thrust::tuple<KR0, KR1, KR2, KR3, KR4, KR5, KR6, KR7, KR8, KR9>& key, | |||||
const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val, | |||||
const thrust::tuple<Cmp0, Cmp1, Cmp2, Cmp3, Cmp4, Cmp5, Cmp6, Cmp7, Cmp8, Cmp9>& cmp, | |||||
unsigned int delta, int width) | |||||
{ | |||||
For<0, thrust::tuple_size<thrust::tuple<KR0, KR1, KR2, KR3, KR4, KR5, KR6, KR7, KR8, KR9> >::value>::mergeShfl(key, val, cmp, delta, width); | |||||
} | |||||
template <typename KP0, typename KP1, typename KP2, typename KP3, typename KP4, typename KP5, typename KP6, typename KP7, typename KP8, typename KP9, | |||||
typename KR0, typename KR1, typename KR2, typename KR3, typename KR4, typename KR5, typename KR6, typename KR7, typename KR8, typename KR9, | |||||
typename VP0, typename VP1, typename VP2, typename VP3, typename VP4, typename VP5, typename VP6, typename VP7, typename VP8, typename VP9, | |||||
typename VR0, typename VR1, typename VR2, typename VR3, typename VR4, typename VR5, typename VR6, typename VR7, typename VR8, typename VR9, | |||||
class Cmp0, class Cmp1, class Cmp2, class Cmp3, class Cmp4, class Cmp5, class Cmp6, class Cmp7, class Cmp8, class Cmp9> | |||||
__device__ __forceinline__ void merge(const thrust::tuple<KP0, KP1, KP2, KP3, KP4, KP5, KP6, KP7, KP8, KP9>& skeys, | |||||
const thrust::tuple<KR0, KR1, KR2, KR3, KR4, KR5, KR6, KR7, KR8, KR9>& key, | |||||
const thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9>& svals, | |||||
const thrust::tuple<VR0, VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8, VR9>& val, | |||||
const thrust::tuple<Cmp0, Cmp1, Cmp2, Cmp3, Cmp4, Cmp5, Cmp6, Cmp7, Cmp8, Cmp9>& cmp, | |||||
unsigned int tid, unsigned int delta) | |||||
{ | |||||
For<0, thrust::tuple_size<thrust::tuple<VP0, VP1, VP2, VP3, VP4, VP5, VP6, VP7, VP8, VP9> >::value>::merge(skeys, key, svals, val, cmp, tid, delta); | |||||
} | |||||
////////////////////////////////////////////////////// | |||||
// Generic | |||||
template <unsigned int N> struct Generic | |||||
{ | |||||
template <class KP, class KR, class VP, class VR, class Cmp> | |||||
static __device__ void reduce(KP skeys, KR key, VP svals, VR val, unsigned int tid, Cmp cmp) | |||||
{ | |||||
loadToSmem(skeys, key, tid); | |||||
loadValsToSmem(svals, val, tid); | |||||
if (N >= 32) | |||||
__syncthreads(); | |||||
if (N >= 2048) | |||||
{ | |||||
if (tid < 1024) | |||||
merge(skeys, key, svals, val, cmp, tid, 1024); | |||||
__syncthreads(); | |||||
} | |||||
if (N >= 1024) | |||||
{ | |||||
if (tid < 512) | |||||
merge(skeys, key, svals, val, cmp, tid, 512); | |||||
__syncthreads(); | |||||
} | |||||
if (N >= 512) | |||||
{ | |||||
if (tid < 256) | |||||
merge(skeys, key, svals, val, cmp, tid, 256); | |||||
__syncthreads(); | |||||
} | |||||
if (N >= 256) | |||||
{ | |||||
if (tid < 128) | |||||
merge(skeys, key, svals, val, cmp, tid, 128); | |||||
__syncthreads(); | |||||
} | |||||
if (N >= 128) | |||||
{ | |||||
if (tid < 64) | |||||
merge(skeys, key, svals, val, cmp, tid, 64); | |||||
__syncthreads(); | |||||
} | |||||
if (N >= 64) | |||||
{ | |||||
if (tid < 32) | |||||
merge(skeys, key, svals, val, cmp, tid, 32); | |||||
} | |||||
if (tid < 16) | |||||
{ | |||||
merge(skeys, key, svals, val, cmp, tid, 16); | |||||
merge(skeys, key, svals, val, cmp, tid, 8); | |||||
merge(skeys, key, svals, val, cmp, tid, 4); | |||||
merge(skeys, key, svals, val, cmp, tid, 2); | |||||
merge(skeys, key, svals, val, cmp, tid, 1); | |||||
} | |||||
} | |||||
}; | |||||
template <unsigned int I, class KP, class KR, class VP, class VR, class Cmp> | |||||
struct Unroll | |||||
{ | |||||
static __device__ void loopShfl(KR key, VR val, Cmp cmp, unsigned int N) | |||||
{ | |||||
mergeShfl(key, val, cmp, I, N); | |||||
Unroll<I / 2, KP, KR, VP, VR, Cmp>::loopShfl(key, val, cmp, N); | |||||
} | |||||
static __device__ void loop(KP skeys, KR key, VP svals, VR val, unsigned int tid, Cmp cmp) | |||||
{ | |||||
merge(skeys, key, svals, val, cmp, tid, I); | |||||
Unroll<I / 2, KP, KR, VP, VR, Cmp>::loop(skeys, key, svals, val, tid, cmp); | |||||
} | |||||
}; | |||||
template <class KP, class KR, class VP, class VR, class Cmp> | |||||
struct Unroll<0, KP, KR, VP, VR, Cmp> | |||||
{ | |||||
static __device__ void loopShfl(KR, VR, Cmp, unsigned int) | |||||
{ | |||||
} | |||||
static __device__ void loop(KP, KR, VP, VR, unsigned int, Cmp) | |||||
{ | |||||
} | |||||
}; | |||||
template <unsigned int N> struct WarpOptimized | |||||
{ | |||||
template <class KP, class KR, class VP, class VR, class Cmp> | |||||
static __device__ void reduce(KP skeys, KR key, VP svals, VR val, unsigned int tid, Cmp cmp) | |||||
{ | |||||
#if 0 // __CUDA_ARCH__ >= 300 | |||||
(void) skeys; | |||||
(void) svals; | |||||
(void) tid; | |||||
Unroll<N / 2, KP, KR, VP, VR, Cmp>::loopShfl(key, val, cmp, N); | |||||
#else | |||||
loadToSmem(skeys, key, tid); | |||||
loadToSmem(svals, val, tid); | |||||
if (tid < N / 2) | |||||
Unroll<N / 2, KP, KR, VP, VR, Cmp>::loop(skeys, key, svals, val, tid, cmp); | |||||
#endif | |||||
} | |||||
}; | |||||
template <unsigned int N> struct GenericOptimized32 | |||||
{ | |||||
enum { M = N / 32 }; | |||||
template <class KP, class KR, class VP, class VR, class Cmp> | |||||
static __device__ void reduce(KP skeys, KR key, VP svals, VR val, unsigned int tid, Cmp cmp) | |||||
{ | |||||
const unsigned int laneId = Warp::laneId(); | |||||
#if 0 // __CUDA_ARCH__ >= 300 | |||||
Unroll<16, KP, KR, VP, VR, Cmp>::loopShfl(key, val, cmp, warpSize); | |||||
if (laneId == 0) | |||||
{ | |||||
loadToSmem(skeys, key, tid / 32); | |||||
loadToSmem(svals, val, tid / 32); | |||||
} | |||||
#else | |||||
loadToSmem(skeys, key, tid); | |||||
loadToSmem(svals, val, tid); | |||||
if (laneId < 16) | |||||
Unroll<16, KP, KR, VP, VR, Cmp>::loop(skeys, key, svals, val, tid, cmp); | |||||
__syncthreads(); | |||||
if (laneId == 0) | |||||
{ | |||||
loadToSmem(skeys, key, tid / 32); | |||||
loadToSmem(svals, val, tid / 32); | |||||
} | |||||
#endif | |||||
__syncthreads(); | |||||
loadFromSmem(skeys, key, tid); | |||||
if (tid < 32) | |||||
{ | |||||
#if 0 // __CUDA_ARCH__ >= 300 | |||||
loadFromSmem(svals, val, tid); | |||||
Unroll<M / 2, KP, KR, VP, VR, Cmp>::loopShfl(key, val, cmp, M); | |||||
#else | |||||
Unroll<M / 2, KP, KR, VP, VR, Cmp>::loop(skeys, key, svals, val, tid, cmp); | |||||
#endif | |||||
} | |||||
} | |||||
}; | |||||
template <bool val, class T1, class T2> struct StaticIf; | |||||
template <class T1, class T2> struct StaticIf<true, T1, T2> | |||||
{ | |||||
typedef T1 type; | |||||
}; | |||||
template <class T1, class T2> struct StaticIf<false, T1, T2> | |||||
{ | |||||
typedef T2 type; | |||||
}; | |||||
template <unsigned int N> struct IsPowerOf2 | |||||
{ | |||||
enum { value = ((N != 0) && !(N & (N - 1))) }; | |||||
}; | |||||
template <unsigned int N> struct Dispatcher | |||||
{ | |||||
typedef typename StaticIf< | |||||
(N <= 32) && IsPowerOf2<N>::value, | |||||
WarpOptimized<N>, | |||||
typename StaticIf< | |||||
(N <= 1024) && IsPowerOf2<N>::value, | |||||
GenericOptimized32<N>, | |||||
Generic<N> | |||||
>::type | |||||
>::type reductor; | |||||
}; | |||||
} | |||||
}}} | |||||
//! @endcond | |||||
#endif // OPENCV_CUDA_PRED_VAL_REDUCE_DETAIL_HPP |
@@ -0,0 +1,399 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CUDA_TRANSFORM_DETAIL_HPP | |||||
#define OPENCV_CUDA_TRANSFORM_DETAIL_HPP | |||||
#include "../common.hpp" | |||||
#include "../vec_traits.hpp" | |||||
#include "../functional.hpp" | |||||
//! @cond IGNORED | |||||
namespace cv { namespace cuda { namespace device | |||||
{ | |||||
namespace transform_detail | |||||
{ | |||||
//! Read Write Traits | |||||
template <typename T, typename D, int shift> struct UnaryReadWriteTraits | |||||
{ | |||||
typedef typename TypeVec<T, shift>::vec_type read_type; | |||||
typedef typename TypeVec<D, shift>::vec_type write_type; | |||||
}; | |||||
template <typename T1, typename T2, typename D, int shift> struct BinaryReadWriteTraits | |||||
{ | |||||
typedef typename TypeVec<T1, shift>::vec_type read_type1; | |||||
typedef typename TypeVec<T2, shift>::vec_type read_type2; | |||||
typedef typename TypeVec<D, shift>::vec_type write_type; | |||||
}; | |||||
//! Transform kernels | |||||
template <int shift> struct OpUnroller; | |||||
template <> struct OpUnroller<1> | |||||
{ | |||||
template <typename T, typename D, typename UnOp, typename Mask> | |||||
static __device__ __forceinline__ void unroll(const T& src, D& dst, const Mask& mask, UnOp& op, int x_shifted, int y) | |||||
{ | |||||
if (mask(y, x_shifted)) | |||||
dst.x = op(src.x); | |||||
} | |||||
template <typename T1, typename T2, typename D, typename BinOp, typename Mask> | |||||
static __device__ __forceinline__ void unroll(const T1& src1, const T2& src2, D& dst, const Mask& mask, BinOp& op, int x_shifted, int y) | |||||
{ | |||||
if (mask(y, x_shifted)) | |||||
dst.x = op(src1.x, src2.x); | |||||
} | |||||
}; | |||||
template <> struct OpUnroller<2> | |||||
{ | |||||
template <typename T, typename D, typename UnOp, typename Mask> | |||||
static __device__ __forceinline__ void unroll(const T& src, D& dst, const Mask& mask, UnOp& op, int x_shifted, int y) | |||||
{ | |||||
if (mask(y, x_shifted)) | |||||
dst.x = op(src.x); | |||||
if (mask(y, x_shifted + 1)) | |||||
dst.y = op(src.y); | |||||
} | |||||
template <typename T1, typename T2, typename D, typename BinOp, typename Mask> | |||||
static __device__ __forceinline__ void unroll(const T1& src1, const T2& src2, D& dst, const Mask& mask, BinOp& op, int x_shifted, int y) | |||||
{ | |||||
if (mask(y, x_shifted)) | |||||
dst.x = op(src1.x, src2.x); | |||||
if (mask(y, x_shifted + 1)) | |||||
dst.y = op(src1.y, src2.y); | |||||
} | |||||
}; | |||||
template <> struct OpUnroller<3> | |||||
{ | |||||
template <typename T, typename D, typename UnOp, typename Mask> | |||||
static __device__ __forceinline__ void unroll(const T& src, D& dst, const Mask& mask, const UnOp& op, int x_shifted, int y) | |||||
{ | |||||
if (mask(y, x_shifted)) | |||||
dst.x = op(src.x); | |||||
if (mask(y, x_shifted + 1)) | |||||
dst.y = op(src.y); | |||||
if (mask(y, x_shifted + 2)) | |||||
dst.z = op(src.z); | |||||
} | |||||
template <typename T1, typename T2, typename D, typename BinOp, typename Mask> | |||||
static __device__ __forceinline__ void unroll(const T1& src1, const T2& src2, D& dst, const Mask& mask, const BinOp& op, int x_shifted, int y) | |||||
{ | |||||
if (mask(y, x_shifted)) | |||||
dst.x = op(src1.x, src2.x); | |||||
if (mask(y, x_shifted + 1)) | |||||
dst.y = op(src1.y, src2.y); | |||||
if (mask(y, x_shifted + 2)) | |||||
dst.z = op(src1.z, src2.z); | |||||
} | |||||
}; | |||||
template <> struct OpUnroller<4> | |||||
{ | |||||
template <typename T, typename D, typename UnOp, typename Mask> | |||||
static __device__ __forceinline__ void unroll(const T& src, D& dst, const Mask& mask, const UnOp& op, int x_shifted, int y) | |||||
{ | |||||
if (mask(y, x_shifted)) | |||||
dst.x = op(src.x); | |||||
if (mask(y, x_shifted + 1)) | |||||
dst.y = op(src.y); | |||||
if (mask(y, x_shifted + 2)) | |||||
dst.z = op(src.z); | |||||
if (mask(y, x_shifted + 3)) | |||||
dst.w = op(src.w); | |||||
} | |||||
template <typename T1, typename T2, typename D, typename BinOp, typename Mask> | |||||
static __device__ __forceinline__ void unroll(const T1& src1, const T2& src2, D& dst, const Mask& mask, const BinOp& op, int x_shifted, int y) | |||||
{ | |||||
if (mask(y, x_shifted)) | |||||
dst.x = op(src1.x, src2.x); | |||||
if (mask(y, x_shifted + 1)) | |||||
dst.y = op(src1.y, src2.y); | |||||
if (mask(y, x_shifted + 2)) | |||||
dst.z = op(src1.z, src2.z); | |||||
if (mask(y, x_shifted + 3)) | |||||
dst.w = op(src1.w, src2.w); | |||||
} | |||||
}; | |||||
template <> struct OpUnroller<8> | |||||
{ | |||||
template <typename T, typename D, typename UnOp, typename Mask> | |||||
static __device__ __forceinline__ void unroll(const T& src, D& dst, const Mask& mask, const UnOp& op, int x_shifted, int y) | |||||
{ | |||||
if (mask(y, x_shifted)) | |||||
dst.a0 = op(src.a0); | |||||
if (mask(y, x_shifted + 1)) | |||||
dst.a1 = op(src.a1); | |||||
if (mask(y, x_shifted + 2)) | |||||
dst.a2 = op(src.a2); | |||||
if (mask(y, x_shifted + 3)) | |||||
dst.a3 = op(src.a3); | |||||
if (mask(y, x_shifted + 4)) | |||||
dst.a4 = op(src.a4); | |||||
if (mask(y, x_shifted + 5)) | |||||
dst.a5 = op(src.a5); | |||||
if (mask(y, x_shifted + 6)) | |||||
dst.a6 = op(src.a6); | |||||
if (mask(y, x_shifted + 7)) | |||||
dst.a7 = op(src.a7); | |||||
} | |||||
template <typename T1, typename T2, typename D, typename BinOp, typename Mask> | |||||
static __device__ __forceinline__ void unroll(const T1& src1, const T2& src2, D& dst, const Mask& mask, const BinOp& op, int x_shifted, int y) | |||||
{ | |||||
if (mask(y, x_shifted)) | |||||
dst.a0 = op(src1.a0, src2.a0); | |||||
if (mask(y, x_shifted + 1)) | |||||
dst.a1 = op(src1.a1, src2.a1); | |||||
if (mask(y, x_shifted + 2)) | |||||
dst.a2 = op(src1.a2, src2.a2); | |||||
if (mask(y, x_shifted + 3)) | |||||
dst.a3 = op(src1.a3, src2.a3); | |||||
if (mask(y, x_shifted + 4)) | |||||
dst.a4 = op(src1.a4, src2.a4); | |||||
if (mask(y, x_shifted + 5)) | |||||
dst.a5 = op(src1.a5, src2.a5); | |||||
if (mask(y, x_shifted + 6)) | |||||
dst.a6 = op(src1.a6, src2.a6); | |||||
if (mask(y, x_shifted + 7)) | |||||
dst.a7 = op(src1.a7, src2.a7); | |||||
} | |||||
}; | |||||
template <typename T, typename D, typename UnOp, typename Mask> | |||||
static __global__ void transformSmart(const PtrStepSz<T> src_, PtrStep<D> dst_, const Mask mask, const UnOp op) | |||||
{ | |||||
typedef TransformFunctorTraits<UnOp> ft; | |||||
typedef typename UnaryReadWriteTraits<T, D, ft::smart_shift>::read_type read_type; | |||||
typedef typename UnaryReadWriteTraits<T, D, ft::smart_shift>::write_type write_type; | |||||
const int x = threadIdx.x + blockIdx.x * blockDim.x; | |||||
const int y = threadIdx.y + blockIdx.y * blockDim.y; | |||||
const int x_shifted = x * ft::smart_shift; | |||||
if (y < src_.rows) | |||||
{ | |||||
const T* src = src_.ptr(y); | |||||
D* dst = dst_.ptr(y); | |||||
if (x_shifted + ft::smart_shift - 1 < src_.cols) | |||||
{ | |||||
const read_type src_n_el = ((const read_type*)src)[x]; | |||||
write_type dst_n_el = ((const write_type*)dst)[x]; | |||||
OpUnroller<ft::smart_shift>::unroll(src_n_el, dst_n_el, mask, op, x_shifted, y); | |||||
((write_type*)dst)[x] = dst_n_el; | |||||
} | |||||
else | |||||
{ | |||||
for (int real_x = x_shifted; real_x < src_.cols; ++real_x) | |||||
{ | |||||
if (mask(y, real_x)) | |||||
dst[real_x] = op(src[real_x]); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
template <typename T, typename D, typename UnOp, typename Mask> | |||||
__global__ static void transformSimple(const PtrStepSz<T> src, PtrStep<D> dst, const Mask mask, const UnOp op) | |||||
{ | |||||
const int x = blockDim.x * blockIdx.x + threadIdx.x; | |||||
const int y = blockDim.y * blockIdx.y + threadIdx.y; | |||||
if (x < src.cols && y < src.rows && mask(y, x)) | |||||
{ | |||||
dst.ptr(y)[x] = op(src.ptr(y)[x]); | |||||
} | |||||
} | |||||
template <typename T1, typename T2, typename D, typename BinOp, typename Mask> | |||||
static __global__ void transformSmart(const PtrStepSz<T1> src1_, const PtrStep<T2> src2_, PtrStep<D> dst_, | |||||
const Mask mask, const BinOp op) | |||||
{ | |||||
typedef TransformFunctorTraits<BinOp> ft; | |||||
typedef typename BinaryReadWriteTraits<T1, T2, D, ft::smart_shift>::read_type1 read_type1; | |||||
typedef typename BinaryReadWriteTraits<T1, T2, D, ft::smart_shift>::read_type2 read_type2; | |||||
typedef typename BinaryReadWriteTraits<T1, T2, D, ft::smart_shift>::write_type write_type; | |||||
const int x = threadIdx.x + blockIdx.x * blockDim.x; | |||||
const int y = threadIdx.y + blockIdx.y * blockDim.y; | |||||
const int x_shifted = x * ft::smart_shift; | |||||
if (y < src1_.rows) | |||||
{ | |||||
const T1* src1 = src1_.ptr(y); | |||||
const T2* src2 = src2_.ptr(y); | |||||
D* dst = dst_.ptr(y); | |||||
if (x_shifted + ft::smart_shift - 1 < src1_.cols) | |||||
{ | |||||
const read_type1 src1_n_el = ((const read_type1*)src1)[x]; | |||||
const read_type2 src2_n_el = ((const read_type2*)src2)[x]; | |||||
write_type dst_n_el = ((const write_type*)dst)[x]; | |||||
OpUnroller<ft::smart_shift>::unroll(src1_n_el, src2_n_el, dst_n_el, mask, op, x_shifted, y); | |||||
((write_type*)dst)[x] = dst_n_el; | |||||
} | |||||
else | |||||
{ | |||||
for (int real_x = x_shifted; real_x < src1_.cols; ++real_x) | |||||
{ | |||||
if (mask(y, real_x)) | |||||
dst[real_x] = op(src1[real_x], src2[real_x]); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
template <typename T1, typename T2, typename D, typename BinOp, typename Mask> | |||||
static __global__ void transformSimple(const PtrStepSz<T1> src1, const PtrStep<T2> src2, PtrStep<D> dst, | |||||
const Mask mask, const BinOp op) | |||||
{ | |||||
const int x = blockDim.x * blockIdx.x + threadIdx.x; | |||||
const int y = blockDim.y * blockIdx.y + threadIdx.y; | |||||
if (x < src1.cols && y < src1.rows && mask(y, x)) | |||||
{ | |||||
const T1 src1_data = src1.ptr(y)[x]; | |||||
const T2 src2_data = src2.ptr(y)[x]; | |||||
dst.ptr(y)[x] = op(src1_data, src2_data); | |||||
} | |||||
} | |||||
template <bool UseSmart> struct TransformDispatcher; | |||||
template<> struct TransformDispatcher<false> | |||||
{ | |||||
template <typename T, typename D, typename UnOp, typename Mask> | |||||
static void call(PtrStepSz<T> src, PtrStepSz<D> dst, UnOp op, Mask mask, cudaStream_t stream) | |||||
{ | |||||
typedef TransformFunctorTraits<UnOp> ft; | |||||
const dim3 threads(ft::simple_block_dim_x, ft::simple_block_dim_y, 1); | |||||
const dim3 grid(divUp(src.cols, threads.x), divUp(src.rows, threads.y), 1); | |||||
transformSimple<T, D><<<grid, threads, 0, stream>>>(src, dst, mask, op); | |||||
cudaSafeCall( cudaGetLastError() ); | |||||
if (stream == 0) | |||||
cudaSafeCall( cudaDeviceSynchronize() ); | |||||
} | |||||
template <typename T1, typename T2, typename D, typename BinOp, typename Mask> | |||||
static void call(PtrStepSz<T1> src1, PtrStepSz<T2> src2, PtrStepSz<D> dst, BinOp op, Mask mask, cudaStream_t stream) | |||||
{ | |||||
typedef TransformFunctorTraits<BinOp> ft; | |||||
const dim3 threads(ft::simple_block_dim_x, ft::simple_block_dim_y, 1); | |||||
const dim3 grid(divUp(src1.cols, threads.x), divUp(src1.rows, threads.y), 1); | |||||
transformSimple<T1, T2, D><<<grid, threads, 0, stream>>>(src1, src2, dst, mask, op); | |||||
cudaSafeCall( cudaGetLastError() ); | |||||
if (stream == 0) | |||||
cudaSafeCall( cudaDeviceSynchronize() ); | |||||
} | |||||
}; | |||||
template<> struct TransformDispatcher<true> | |||||
{ | |||||
template <typename T, typename D, typename UnOp, typename Mask> | |||||
static void call(PtrStepSz<T> src, PtrStepSz<D> dst, UnOp op, Mask mask, cudaStream_t stream) | |||||
{ | |||||
typedef TransformFunctorTraits<UnOp> ft; | |||||
CV_StaticAssert(ft::smart_shift != 1, ""); | |||||
if (!isAligned(src.data, ft::smart_shift * sizeof(T)) || !isAligned(src.step, ft::smart_shift * sizeof(T)) || | |||||
!isAligned(dst.data, ft::smart_shift * sizeof(D)) || !isAligned(dst.step, ft::smart_shift * sizeof(D))) | |||||
{ | |||||
TransformDispatcher<false>::call(src, dst, op, mask, stream); | |||||
return; | |||||
} | |||||
const dim3 threads(ft::smart_block_dim_x, ft::smart_block_dim_y, 1); | |||||
const dim3 grid(divUp(src.cols, threads.x * ft::smart_shift), divUp(src.rows, threads.y), 1); | |||||
transformSmart<T, D><<<grid, threads, 0, stream>>>(src, dst, mask, op); | |||||
cudaSafeCall( cudaGetLastError() ); | |||||
if (stream == 0) | |||||
cudaSafeCall( cudaDeviceSynchronize() ); | |||||
} | |||||
template <typename T1, typename T2, typename D, typename BinOp, typename Mask> | |||||
static void call(PtrStepSz<T1> src1, PtrStepSz<T2> src2, PtrStepSz<D> dst, BinOp op, Mask mask, cudaStream_t stream) | |||||
{ | |||||
typedef TransformFunctorTraits<BinOp> ft; | |||||
CV_StaticAssert(ft::smart_shift != 1, ""); | |||||
if (!isAligned(src1.data, ft::smart_shift * sizeof(T1)) || !isAligned(src1.step, ft::smart_shift * sizeof(T1)) || | |||||
!isAligned(src2.data, ft::smart_shift * sizeof(T2)) || !isAligned(src2.step, ft::smart_shift * sizeof(T2)) || | |||||
!isAligned(dst.data, ft::smart_shift * sizeof(D)) || !isAligned(dst.step, ft::smart_shift * sizeof(D))) | |||||
{ | |||||
TransformDispatcher<false>::call(src1, src2, dst, op, mask, stream); | |||||
return; | |||||
} | |||||
const dim3 threads(ft::smart_block_dim_x, ft::smart_block_dim_y, 1); | |||||
const dim3 grid(divUp(src1.cols, threads.x * ft::smart_shift), divUp(src1.rows, threads.y), 1); | |||||
transformSmart<T1, T2, D><<<grid, threads, 0, stream>>>(src1, src2, dst, mask, op); | |||||
cudaSafeCall( cudaGetLastError() ); | |||||
if (stream == 0) | |||||
cudaSafeCall( cudaDeviceSynchronize() ); | |||||
} | |||||
}; | |||||
} // namespace transform_detail | |||||
}}} // namespace cv { namespace cuda { namespace cudev | |||||
//! @endcond | |||||
#endif // OPENCV_CUDA_TRANSFORM_DETAIL_HPP |
@@ -0,0 +1,191 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CUDA_TYPE_TRAITS_DETAIL_HPP | |||||
#define OPENCV_CUDA_TYPE_TRAITS_DETAIL_HPP | |||||
#include "../common.hpp" | |||||
#include "../vec_traits.hpp" | |||||
//! @cond IGNORED | |||||
namespace cv { namespace cuda { namespace device | |||||
{ | |||||
namespace type_traits_detail | |||||
{ | |||||
template <bool, typename T1, typename T2> struct Select { typedef T1 type; }; | |||||
template <typename T1, typename T2> struct Select<false, T1, T2> { typedef T2 type; }; | |||||
template <typename T> struct IsSignedIntergral { enum {value = 0}; }; | |||||
template <> struct IsSignedIntergral<schar> { enum {value = 1}; }; | |||||
template <> struct IsSignedIntergral<char1> { enum {value = 1}; }; | |||||
template <> struct IsSignedIntergral<short> { enum {value = 1}; }; | |||||
template <> struct IsSignedIntergral<short1> { enum {value = 1}; }; | |||||
template <> struct IsSignedIntergral<int> { enum {value = 1}; }; | |||||
template <> struct IsSignedIntergral<int1> { enum {value = 1}; }; | |||||
template <typename T> struct IsUnsignedIntegral { enum {value = 0}; }; | |||||
template <> struct IsUnsignedIntegral<uchar> { enum {value = 1}; }; | |||||
template <> struct IsUnsignedIntegral<uchar1> { enum {value = 1}; }; | |||||
template <> struct IsUnsignedIntegral<ushort> { enum {value = 1}; }; | |||||
template <> struct IsUnsignedIntegral<ushort1> { enum {value = 1}; }; | |||||
template <> struct IsUnsignedIntegral<uint> { enum {value = 1}; }; | |||||
template <> struct IsUnsignedIntegral<uint1> { enum {value = 1}; }; | |||||
template <typename T> struct IsIntegral { enum {value = IsSignedIntergral<T>::value || IsUnsignedIntegral<T>::value}; }; | |||||
template <> struct IsIntegral<char> { enum {value = 1}; }; | |||||
template <> struct IsIntegral<bool> { enum {value = 1}; }; | |||||
template <typename T> struct IsFloat { enum {value = 0}; }; | |||||
template <> struct IsFloat<float> { enum {value = 1}; }; | |||||
template <> struct IsFloat<double> { enum {value = 1}; }; | |||||
template <typename T> struct IsVec { enum {value = 0}; }; | |||||
template <> struct IsVec<uchar1> { enum {value = 1}; }; | |||||
template <> struct IsVec<uchar2> { enum {value = 1}; }; | |||||
template <> struct IsVec<uchar3> { enum {value = 1}; }; | |||||
template <> struct IsVec<uchar4> { enum {value = 1}; }; | |||||
template <> struct IsVec<uchar8> { enum {value = 1}; }; | |||||
template <> struct IsVec<char1> { enum {value = 1}; }; | |||||
template <> struct IsVec<char2> { enum {value = 1}; }; | |||||
template <> struct IsVec<char3> { enum {value = 1}; }; | |||||
template <> struct IsVec<char4> { enum {value = 1}; }; | |||||
template <> struct IsVec<char8> { enum {value = 1}; }; | |||||
template <> struct IsVec<ushort1> { enum {value = 1}; }; | |||||
template <> struct IsVec<ushort2> { enum {value = 1}; }; | |||||
template <> struct IsVec<ushort3> { enum {value = 1}; }; | |||||
template <> struct IsVec<ushort4> { enum {value = 1}; }; | |||||
template <> struct IsVec<ushort8> { enum {value = 1}; }; | |||||
template <> struct IsVec<short1> { enum {value = 1}; }; | |||||
template <> struct IsVec<short2> { enum {value = 1}; }; | |||||
template <> struct IsVec<short3> { enum {value = 1}; }; | |||||
template <> struct IsVec<short4> { enum {value = 1}; }; | |||||
template <> struct IsVec<short8> { enum {value = 1}; }; | |||||
template <> struct IsVec<uint1> { enum {value = 1}; }; | |||||
template <> struct IsVec<uint2> { enum {value = 1}; }; | |||||
template <> struct IsVec<uint3> { enum {value = 1}; }; | |||||
template <> struct IsVec<uint4> { enum {value = 1}; }; | |||||
template <> struct IsVec<uint8> { enum {value = 1}; }; | |||||
template <> struct IsVec<int1> { enum {value = 1}; }; | |||||
template <> struct IsVec<int2> { enum {value = 1}; }; | |||||
template <> struct IsVec<int3> { enum {value = 1}; }; | |||||
template <> struct IsVec<int4> { enum {value = 1}; }; | |||||
template <> struct IsVec<int8> { enum {value = 1}; }; | |||||
template <> struct IsVec<float1> { enum {value = 1}; }; | |||||
template <> struct IsVec<float2> { enum {value = 1}; }; | |||||
template <> struct IsVec<float3> { enum {value = 1}; }; | |||||
template <> struct IsVec<float4> { enum {value = 1}; }; | |||||
template <> struct IsVec<float8> { enum {value = 1}; }; | |||||
template <> struct IsVec<double1> { enum {value = 1}; }; | |||||
template <> struct IsVec<double2> { enum {value = 1}; }; | |||||
template <> struct IsVec<double3> { enum {value = 1}; }; | |||||
template <> struct IsVec<double4> { enum {value = 1}; }; | |||||
template <> struct IsVec<double8> { enum {value = 1}; }; | |||||
template <class U> struct AddParameterType { typedef const U& type; }; | |||||
template <class U> struct AddParameterType<U&> { typedef U& type; }; | |||||
template <> struct AddParameterType<void> { typedef void type; }; | |||||
template <class U> struct ReferenceTraits | |||||
{ | |||||
enum { value = false }; | |||||
typedef U type; | |||||
}; | |||||
template <class U> struct ReferenceTraits<U&> | |||||
{ | |||||
enum { value = true }; | |||||
typedef U type; | |||||
}; | |||||
template <class U> struct PointerTraits | |||||
{ | |||||
enum { value = false }; | |||||
typedef void type; | |||||
}; | |||||
template <class U> struct PointerTraits<U*> | |||||
{ | |||||
enum { value = true }; | |||||
typedef U type; | |||||
}; | |||||
template <class U> struct PointerTraits<U*&> | |||||
{ | |||||
enum { value = true }; | |||||
typedef U type; | |||||
}; | |||||
template <class U> struct UnConst | |||||
{ | |||||
typedef U type; | |||||
enum { value = 0 }; | |||||
}; | |||||
template <class U> struct UnConst<const U> | |||||
{ | |||||
typedef U type; | |||||
enum { value = 1 }; | |||||
}; | |||||
template <class U> struct UnConst<const U&> | |||||
{ | |||||
typedef U& type; | |||||
enum { value = 1 }; | |||||
}; | |||||
template <class U> struct UnVolatile | |||||
{ | |||||
typedef U type; | |||||
enum { value = 0 }; | |||||
}; | |||||
template <class U> struct UnVolatile<volatile U> | |||||
{ | |||||
typedef U type; | |||||
enum { value = 1 }; | |||||
}; | |||||
template <class U> struct UnVolatile<volatile U&> | |||||
{ | |||||
typedef U& type; | |||||
enum { value = 1 }; | |||||
}; | |||||
} // namespace type_traits_detail | |||||
}}} // namespace cv { namespace cuda { namespace cudev | |||||
//! @endcond | |||||
#endif // OPENCV_CUDA_TYPE_TRAITS_DETAIL_HPP |
@@ -0,0 +1,121 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CUDA_VEC_DISTANCE_DETAIL_HPP | |||||
#define OPENCV_CUDA_VEC_DISTANCE_DETAIL_HPP | |||||
#include "../datamov_utils.hpp" | |||||
//! @cond IGNORED | |||||
namespace cv { namespace cuda { namespace device | |||||
{ | |||||
namespace vec_distance_detail | |||||
{ | |||||
template <int THREAD_DIM, int N> struct UnrollVecDiffCached | |||||
{ | |||||
template <typename Dist, typename T1, typename T2> | |||||
static __device__ void calcCheck(const T1* vecCached, const T2* vecGlob, int len, Dist& dist, int ind) | |||||
{ | |||||
if (ind < len) | |||||
{ | |||||
T1 val1 = *vecCached++; | |||||
T2 val2; | |||||
ForceGlob<T2>::Load(vecGlob, ind, val2); | |||||
dist.reduceIter(val1, val2); | |||||
UnrollVecDiffCached<THREAD_DIM, N - 1>::calcCheck(vecCached, vecGlob, len, dist, ind + THREAD_DIM); | |||||
} | |||||
} | |||||
template <typename Dist, typename T1, typename T2> | |||||
static __device__ void calcWithoutCheck(const T1* vecCached, const T2* vecGlob, Dist& dist) | |||||
{ | |||||
T1 val1 = *vecCached++; | |||||
T2 val2; | |||||
ForceGlob<T2>::Load(vecGlob, 0, val2); | |||||
vecGlob += THREAD_DIM; | |||||
dist.reduceIter(val1, val2); | |||||
UnrollVecDiffCached<THREAD_DIM, N - 1>::calcWithoutCheck(vecCached, vecGlob, dist); | |||||
} | |||||
}; | |||||
template <int THREAD_DIM> struct UnrollVecDiffCached<THREAD_DIM, 0> | |||||
{ | |||||
template <typename Dist, typename T1, typename T2> | |||||
static __device__ __forceinline__ void calcCheck(const T1*, const T2*, int, Dist&, int) | |||||
{ | |||||
} | |||||
template <typename Dist, typename T1, typename T2> | |||||
static __device__ __forceinline__ void calcWithoutCheck(const T1*, const T2*, Dist&) | |||||
{ | |||||
} | |||||
}; | |||||
template <int THREAD_DIM, int MAX_LEN, bool LEN_EQ_MAX_LEN> struct VecDiffCachedCalculator; | |||||
template <int THREAD_DIM, int MAX_LEN> struct VecDiffCachedCalculator<THREAD_DIM, MAX_LEN, false> | |||||
{ | |||||
template <typename Dist, typename T1, typename T2> | |||||
static __device__ __forceinline__ void calc(const T1* vecCached, const T2* vecGlob, int len, Dist& dist, int tid) | |||||
{ | |||||
UnrollVecDiffCached<THREAD_DIM, MAX_LEN / THREAD_DIM>::calcCheck(vecCached, vecGlob, len, dist, tid); | |||||
} | |||||
}; | |||||
template <int THREAD_DIM, int MAX_LEN> struct VecDiffCachedCalculator<THREAD_DIM, MAX_LEN, true> | |||||
{ | |||||
template <typename Dist, typename T1, typename T2> | |||||
static __device__ __forceinline__ void calc(const T1* vecCached, const T2* vecGlob, int len, Dist& dist, int tid) | |||||
{ | |||||
UnrollVecDiffCached<THREAD_DIM, MAX_LEN / THREAD_DIM>::calcWithoutCheck(vecCached, vecGlob + tid, dist); | |||||
} | |||||
}; | |||||
} // namespace vec_distance_detail | |||||
}}} // namespace cv { namespace cuda { namespace cudev | |||||
//! @endcond | |||||
#endif // OPENCV_CUDA_VEC_DISTANCE_DETAIL_HPP |
@@ -0,0 +1,88 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CUDA_DYNAMIC_SMEM_HPP | |||||
#define OPENCV_CUDA_DYNAMIC_SMEM_HPP | |||||
/** @file | |||||
* @deprecated Use @ref cudev instead. | |||||
*/ | |||||
//! @cond IGNORED | |||||
namespace cv { namespace cuda { namespace device | |||||
{ | |||||
template<class T> struct DynamicSharedMem | |||||
{ | |||||
__device__ __forceinline__ operator T*() | |||||
{ | |||||
extern __shared__ int __smem[]; | |||||
return (T*)__smem; | |||||
} | |||||
__device__ __forceinline__ operator const T*() const | |||||
{ | |||||
extern __shared__ int __smem[]; | |||||
return (T*)__smem; | |||||
} | |||||
}; | |||||
// specialize for double to avoid unaligned memory access compile errors | |||||
template<> struct DynamicSharedMem<double> | |||||
{ | |||||
__device__ __forceinline__ operator double*() | |||||
{ | |||||
extern __shared__ double __smem_d[]; | |||||
return (double*)__smem_d; | |||||
} | |||||
__device__ __forceinline__ operator const double*() const | |||||
{ | |||||
extern __shared__ double __smem_d[]; | |||||
return (double*)__smem_d; | |||||
} | |||||
}; | |||||
}}} | |||||
//! @endcond | |||||
#endif // OPENCV_CUDA_DYNAMIC_SMEM_HPP |
@@ -0,0 +1,269 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CUDA_EMULATION_HPP_ | |||||
#define OPENCV_CUDA_EMULATION_HPP_ | |||||
#include "common.hpp" | |||||
#include "warp_reduce.hpp" | |||||
/** @file | |||||
* @deprecated Use @ref cudev instead. | |||||
*/ | |||||
//! @cond IGNORED | |||||
namespace cv { namespace cuda { namespace device | |||||
{ | |||||
struct Emulation | |||||
{ | |||||
static __device__ __forceinline__ int syncthreadsOr(int pred) | |||||
{ | |||||
#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ < 200) | |||||
// just campilation stab | |||||
return 0; | |||||
#else | |||||
return __syncthreads_or(pred); | |||||
#endif | |||||
} | |||||
template<int CTA_SIZE> | |||||
static __forceinline__ __device__ int Ballot(int predicate) | |||||
{ | |||||
#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ >= 200) | |||||
return __ballot(predicate); | |||||
#else | |||||
__shared__ volatile int cta_buffer[CTA_SIZE]; | |||||
int tid = threadIdx.x; | |||||
cta_buffer[tid] = predicate ? (1 << (tid & 31)) : 0; | |||||
return warp_reduce(cta_buffer); | |||||
#endif | |||||
} | |||||
struct smem | |||||
{ | |||||
enum { TAG_MASK = (1U << ( (sizeof(unsigned int) << 3) - 5U)) - 1U }; | |||||
template<typename T> | |||||
static __device__ __forceinline__ T atomicInc(T* address, T val) | |||||
{ | |||||
#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ < 120) | |||||
T count; | |||||
unsigned int tag = threadIdx.x << ( (sizeof(unsigned int) << 3) - 5U); | |||||
do | |||||
{ | |||||
count = *address & TAG_MASK; | |||||
count = tag | (count + 1); | |||||
*address = count; | |||||
} while (*address != count); | |||||
return (count & TAG_MASK) - 1; | |||||
#else | |||||
return ::atomicInc(address, val); | |||||
#endif | |||||
} | |||||
template<typename T> | |||||
static __device__ __forceinline__ T atomicAdd(T* address, T val) | |||||
{ | |||||
#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ < 120) | |||||
T count; | |||||
unsigned int tag = threadIdx.x << ( (sizeof(unsigned int) << 3) - 5U); | |||||
do | |||||
{ | |||||
count = *address & TAG_MASK; | |||||
count = tag | (count + val); | |||||
*address = count; | |||||
} while (*address != count); | |||||
return (count & TAG_MASK) - val; | |||||
#else | |||||
return ::atomicAdd(address, val); | |||||
#endif | |||||
} | |||||
template<typename T> | |||||
static __device__ __forceinline__ T atomicMin(T* address, T val) | |||||
{ | |||||
#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ < 120) | |||||
T count = ::min(*address, val); | |||||
do | |||||
{ | |||||
*address = count; | |||||
} while (*address > count); | |||||
return count; | |||||
#else | |||||
return ::atomicMin(address, val); | |||||
#endif | |||||
} | |||||
}; // struct cmem | |||||
struct glob | |||||
{ | |||||
static __device__ __forceinline__ int atomicAdd(int* address, int val) | |||||
{ | |||||
return ::atomicAdd(address, val); | |||||
} | |||||
static __device__ __forceinline__ unsigned int atomicAdd(unsigned int* address, unsigned int val) | |||||
{ | |||||
return ::atomicAdd(address, val); | |||||
} | |||||
static __device__ __forceinline__ float atomicAdd(float* address, float val) | |||||
{ | |||||
#if __CUDA_ARCH__ >= 200 | |||||
return ::atomicAdd(address, val); | |||||
#else | |||||
int* address_as_i = (int*) address; | |||||
int old = *address_as_i, assumed; | |||||
do { | |||||
assumed = old; | |||||
old = ::atomicCAS(address_as_i, assumed, | |||||
__float_as_int(val + __int_as_float(assumed))); | |||||
} while (assumed != old); | |||||
return __int_as_float(old); | |||||
#endif | |||||
} | |||||
static __device__ __forceinline__ double atomicAdd(double* address, double val) | |||||
{ | |||||
#if __CUDA_ARCH__ >= 130 | |||||
unsigned long long int* address_as_ull = (unsigned long long int*) address; | |||||
unsigned long long int old = *address_as_ull, assumed; | |||||
do { | |||||
assumed = old; | |||||
old = ::atomicCAS(address_as_ull, assumed, | |||||
__double_as_longlong(val + __longlong_as_double(assumed))); | |||||
} while (assumed != old); | |||||
return __longlong_as_double(old); | |||||
#else | |||||
(void) address; | |||||
(void) val; | |||||
return 0.0; | |||||
#endif | |||||
} | |||||
static __device__ __forceinline__ int atomicMin(int* address, int val) | |||||
{ | |||||
return ::atomicMin(address, val); | |||||
} | |||||
static __device__ __forceinline__ float atomicMin(float* address, float val) | |||||
{ | |||||
#if __CUDA_ARCH__ >= 120 | |||||
int* address_as_i = (int*) address; | |||||
int old = *address_as_i, assumed; | |||||
do { | |||||
assumed = old; | |||||
old = ::atomicCAS(address_as_i, assumed, | |||||
__float_as_int(::fminf(val, __int_as_float(assumed)))); | |||||
} while (assumed != old); | |||||
return __int_as_float(old); | |||||
#else | |||||
(void) address; | |||||
(void) val; | |||||
return 0.0f; | |||||
#endif | |||||
} | |||||
static __device__ __forceinline__ double atomicMin(double* address, double val) | |||||
{ | |||||
#if __CUDA_ARCH__ >= 130 | |||||
unsigned long long int* address_as_ull = (unsigned long long int*) address; | |||||
unsigned long long int old = *address_as_ull, assumed; | |||||
do { | |||||
assumed = old; | |||||
old = ::atomicCAS(address_as_ull, assumed, | |||||
__double_as_longlong(::fmin(val, __longlong_as_double(assumed)))); | |||||
} while (assumed != old); | |||||
return __longlong_as_double(old); | |||||
#else | |||||
(void) address; | |||||
(void) val; | |||||
return 0.0; | |||||
#endif | |||||
} | |||||
static __device__ __forceinline__ int atomicMax(int* address, int val) | |||||
{ | |||||
return ::atomicMax(address, val); | |||||
} | |||||
static __device__ __forceinline__ float atomicMax(float* address, float val) | |||||
{ | |||||
#if __CUDA_ARCH__ >= 120 | |||||
int* address_as_i = (int*) address; | |||||
int old = *address_as_i, assumed; | |||||
do { | |||||
assumed = old; | |||||
old = ::atomicCAS(address_as_i, assumed, | |||||
__float_as_int(::fmaxf(val, __int_as_float(assumed)))); | |||||
} while (assumed != old); | |||||
return __int_as_float(old); | |||||
#else | |||||
(void) address; | |||||
(void) val; | |||||
return 0.0f; | |||||
#endif | |||||
} | |||||
static __device__ __forceinline__ double atomicMax(double* address, double val) | |||||
{ | |||||
#if __CUDA_ARCH__ >= 130 | |||||
unsigned long long int* address_as_ull = (unsigned long long int*) address; | |||||
unsigned long long int old = *address_as_ull, assumed; | |||||
do { | |||||
assumed = old; | |||||
old = ::atomicCAS(address_as_ull, assumed, | |||||
__double_as_longlong(::fmax(val, __longlong_as_double(assumed)))); | |||||
} while (assumed != old); | |||||
return __longlong_as_double(old); | |||||
#else | |||||
(void) address; | |||||
(void) val; | |||||
return 0.0; | |||||
#endif | |||||
} | |||||
}; | |||||
}; //struct Emulation | |||||
}}} // namespace cv { namespace cuda { namespace cudev | |||||
//! @endcond | |||||
#endif /* OPENCV_CUDA_EMULATION_HPP_ */ |
@@ -0,0 +1,286 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CUDA_FILTERS_HPP | |||||
#define OPENCV_CUDA_FILTERS_HPP | |||||
#include "saturate_cast.hpp" | |||||
#include "vec_traits.hpp" | |||||
#include "vec_math.hpp" | |||||
#include "type_traits.hpp" | |||||
/** @file | |||||
* @deprecated Use @ref cudev instead. | |||||
*/ | |||||
//! @cond IGNORED | |||||
namespace cv { namespace cuda { namespace device | |||||
{ | |||||
template <typename Ptr2D> struct PointFilter | |||||
{ | |||||
typedef typename Ptr2D::elem_type elem_type; | |||||
typedef float index_type; | |||||
explicit __host__ __device__ __forceinline__ PointFilter(const Ptr2D& src_, float fx = 0.f, float fy = 0.f) | |||||
: src(src_) | |||||
{ | |||||
(void)fx; | |||||
(void)fy; | |||||
} | |||||
__device__ __forceinline__ elem_type operator ()(float y, float x) const | |||||
{ | |||||
return src(__float2int_rz(y), __float2int_rz(x)); | |||||
} | |||||
Ptr2D src; | |||||
}; | |||||
template <typename Ptr2D> struct LinearFilter | |||||
{ | |||||
typedef typename Ptr2D::elem_type elem_type; | |||||
typedef float index_type; | |||||
explicit __host__ __device__ __forceinline__ LinearFilter(const Ptr2D& src_, float fx = 0.f, float fy = 0.f) | |||||
: src(src_) | |||||
{ | |||||
(void)fx; | |||||
(void)fy; | |||||
} | |||||
__device__ __forceinline__ elem_type operator ()(float y, float x) const | |||||
{ | |||||
typedef typename TypeVec<float, VecTraits<elem_type>::cn>::vec_type work_type; | |||||
work_type out = VecTraits<work_type>::all(0); | |||||
const int x1 = __float2int_rd(x); | |||||
const int y1 = __float2int_rd(y); | |||||
const int x2 = x1 + 1; | |||||
const int y2 = y1 + 1; | |||||
elem_type src_reg = src(y1, x1); | |||||
out = out + src_reg * ((x2 - x) * (y2 - y)); | |||||
src_reg = src(y1, x2); | |||||
out = out + src_reg * ((x - x1) * (y2 - y)); | |||||
src_reg = src(y2, x1); | |||||
out = out + src_reg * ((x2 - x) * (y - y1)); | |||||
src_reg = src(y2, x2); | |||||
out = out + src_reg * ((x - x1) * (y - y1)); | |||||
return saturate_cast<elem_type>(out); | |||||
} | |||||
Ptr2D src; | |||||
}; | |||||
template <typename Ptr2D> struct CubicFilter | |||||
{ | |||||
typedef typename Ptr2D::elem_type elem_type; | |||||
typedef float index_type; | |||||
typedef typename TypeVec<float, VecTraits<elem_type>::cn>::vec_type work_type; | |||||
explicit __host__ __device__ __forceinline__ CubicFilter(const Ptr2D& src_, float fx = 0.f, float fy = 0.f) | |||||
: src(src_) | |||||
{ | |||||
(void)fx; | |||||
(void)fy; | |||||
} | |||||
static __device__ __forceinline__ float bicubicCoeff(float x_) | |||||
{ | |||||
float x = fabsf(x_); | |||||
if (x <= 1.0f) | |||||
{ | |||||
return x * x * (1.5f * x - 2.5f) + 1.0f; | |||||
} | |||||
else if (x < 2.0f) | |||||
{ | |||||
return x * (x * (-0.5f * x + 2.5f) - 4.0f) + 2.0f; | |||||
} | |||||
else | |||||
{ | |||||
return 0.0f; | |||||
} | |||||
} | |||||
__device__ elem_type operator ()(float y, float x) const | |||||
{ | |||||
const float xmin = ::ceilf(x - 2.0f); | |||||
const float xmax = ::floorf(x + 2.0f); | |||||
const float ymin = ::ceilf(y - 2.0f); | |||||
const float ymax = ::floorf(y + 2.0f); | |||||
work_type sum = VecTraits<work_type>::all(0); | |||||
float wsum = 0.0f; | |||||
for (float cy = ymin; cy <= ymax; cy += 1.0f) | |||||
{ | |||||
for (float cx = xmin; cx <= xmax; cx += 1.0f) | |||||
{ | |||||
const float w = bicubicCoeff(x - cx) * bicubicCoeff(y - cy); | |||||
sum = sum + w * src(__float2int_rd(cy), __float2int_rd(cx)); | |||||
wsum += w; | |||||
} | |||||
} | |||||
work_type res = (!wsum)? VecTraits<work_type>::all(0) : sum / wsum; | |||||
return saturate_cast<elem_type>(res); | |||||
} | |||||
Ptr2D src; | |||||
}; | |||||
// for integer scaling | |||||
template <typename Ptr2D> struct IntegerAreaFilter | |||||
{ | |||||
typedef typename Ptr2D::elem_type elem_type; | |||||
typedef float index_type; | |||||
explicit __host__ __device__ __forceinline__ IntegerAreaFilter(const Ptr2D& src_, float scale_x_, float scale_y_) | |||||
: src(src_), scale_x(scale_x_), scale_y(scale_y_), scale(1.f / (scale_x * scale_y)) {} | |||||
__device__ __forceinline__ elem_type operator ()(float y, float x) const | |||||
{ | |||||
float fsx1 = x * scale_x; | |||||
float fsx2 = fsx1 + scale_x; | |||||
int sx1 = __float2int_ru(fsx1); | |||||
int sx2 = __float2int_rd(fsx2); | |||||
float fsy1 = y * scale_y; | |||||
float fsy2 = fsy1 + scale_y; | |||||
int sy1 = __float2int_ru(fsy1); | |||||
int sy2 = __float2int_rd(fsy2); | |||||
typedef typename TypeVec<float, VecTraits<elem_type>::cn>::vec_type work_type; | |||||
work_type out = VecTraits<work_type>::all(0.f); | |||||
for(int dy = sy1; dy < sy2; ++dy) | |||||
for(int dx = sx1; dx < sx2; ++dx) | |||||
{ | |||||
out = out + src(dy, dx) * scale; | |||||
} | |||||
return saturate_cast<elem_type>(out); | |||||
} | |||||
Ptr2D src; | |||||
float scale_x, scale_y ,scale; | |||||
}; | |||||
template <typename Ptr2D> struct AreaFilter | |||||
{ | |||||
typedef typename Ptr2D::elem_type elem_type; | |||||
typedef float index_type; | |||||
explicit __host__ __device__ __forceinline__ AreaFilter(const Ptr2D& src_, float scale_x_, float scale_y_) | |||||
: src(src_), scale_x(scale_x_), scale_y(scale_y_){} | |||||
__device__ __forceinline__ elem_type operator ()(float y, float x) const | |||||
{ | |||||
float fsx1 = x * scale_x; | |||||
float fsx2 = fsx1 + scale_x; | |||||
int sx1 = __float2int_ru(fsx1); | |||||
int sx2 = __float2int_rd(fsx2); | |||||
float fsy1 = y * scale_y; | |||||
float fsy2 = fsy1 + scale_y; | |||||
int sy1 = __float2int_ru(fsy1); | |||||
int sy2 = __float2int_rd(fsy2); | |||||
float scale = 1.f / (fminf(scale_x, src.width - fsx1) * fminf(scale_y, src.height - fsy1)); | |||||
typedef typename TypeVec<float, VecTraits<elem_type>::cn>::vec_type work_type; | |||||
work_type out = VecTraits<work_type>::all(0.f); | |||||
for (int dy = sy1; dy < sy2; ++dy) | |||||
{ | |||||
for (int dx = sx1; dx < sx2; ++dx) | |||||
out = out + src(dy, dx) * scale; | |||||
if (sx1 > fsx1) | |||||
out = out + src(dy, (sx1 -1) ) * ((sx1 - fsx1) * scale); | |||||
if (sx2 < fsx2) | |||||
out = out + src(dy, sx2) * ((fsx2 -sx2) * scale); | |||||
} | |||||
if (sy1 > fsy1) | |||||
for (int dx = sx1; dx < sx2; ++dx) | |||||
out = out + src( (sy1 - 1) , dx) * ((sy1 -fsy1) * scale); | |||||
if (sy2 < fsy2) | |||||
for (int dx = sx1; dx < sx2; ++dx) | |||||
out = out + src(sy2, dx) * ((fsy2 -sy2) * scale); | |||||
if ((sy1 > fsy1) && (sx1 > fsx1)) | |||||
out = out + src( (sy1 - 1) , (sx1 - 1)) * ((sy1 -fsy1) * (sx1 -fsx1) * scale); | |||||
if ((sy1 > fsy1) && (sx2 < fsx2)) | |||||
out = out + src( (sy1 - 1) , sx2) * ((sy1 -fsy1) * (fsx2 -sx2) * scale); | |||||
if ((sy2 < fsy2) && (sx2 < fsx2)) | |||||
out = out + src(sy2, sx2) * ((fsy2 -sy2) * (fsx2 -sx2) * scale); | |||||
if ((sy2 < fsy2) && (sx1 > fsx1)) | |||||
out = out + src(sy2, (sx1 - 1)) * ((fsy2 -sy2) * (sx1 -fsx1) * scale); | |||||
return saturate_cast<elem_type>(out); | |||||
} | |||||
Ptr2D src; | |||||
float scale_x, scale_y; | |||||
int width, haight; | |||||
}; | |||||
}}} // namespace cv { namespace cuda { namespace cudev | |||||
//! @endcond | |||||
#endif // OPENCV_CUDA_FILTERS_HPP |
@@ -0,0 +1,79 @@ | |||||
/*M/////////////////////////////////////////////////////////////////////////////////////// | |||||
// | |||||
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. | |||||
// | |||||
// By downloading, copying, installing or using the software you agree to this license. | |||||
// If you do not agree to this license, do not download, install, | |||||
// copy or use the software. | |||||
// | |||||
// | |||||
// License Agreement | |||||
// For Open Source Computer Vision Library | |||||
// | |||||
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. | |||||
// Copyright (C) 2009, Willow Garage Inc., all rights reserved. | |||||
// Third party copyrights are property of their respective owners. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without modification, | |||||
// are permitted provided that the following conditions are met: | |||||
// | |||||
// * Redistribution's of source code must retain the above copyright notice, | |||||
// this list of conditions and the following disclaimer. | |||||
// | |||||
// * Redistribution's in binary form must reproduce the above copyright notice, | |||||
// this list of conditions and the following disclaimer in the documentation | |||||
// and/or other materials provided with the distribution. | |||||
// | |||||
// * The name of the copyright holders may not be used to endorse or promote products | |||||
// derived from this software without specific prior written permission. | |||||
// | |||||
// This software is provided by the copyright holders and contributors "as is" and | |||||
// any express or implied warranties, including, but not limited to, the implied | |||||
// warranties of merchantability and fitness for a particular purpose are disclaimed. | |||||
// In no event shall the Intel Corporation or contributors be liable for any direct, | |||||
// indirect, incidental, special, exemplary, or consequential damages | |||||
// (including, but not limited to, procurement of substitute goods or services; | |||||
// loss of use, data, or profits; or business interruption) however caused | |||||
// and on any theory of liability, whether in contract, strict liability, | |||||
// or tort (including negligence or otherwise) arising in any way out of | |||||
// the use of this software, even if advised of the possibility of such damage. | |||||
// | |||||
//M*/ | |||||
#ifndef OPENCV_CUDA_DEVICE_FUNCATTRIB_HPP | |||||
#define OPENCV_CUDA_DEVICE_FUNCATTRIB_HPP | |||||
#include <cstdio> | |||||
/** @file | |||||
* @deprecated Use @ref cudev instead. | |||||
*/ | |||||
//! @cond IGNORED | |||||
namespace cv { namespace cuda { namespace device | |||||
{ | |||||
template<class Func> | |||||
void printFuncAttrib(Func& func) | |||||
{ | |||||
cudaFuncAttributes attrs; | |||||
cudaFuncGetAttributes(&attrs, func); | |||||
printf("=== Function stats ===\n"); | |||||
printf("Name: \n"); | |||||
printf("sharedSizeBytes = %d\n", attrs.sharedSizeBytes); | |||||
printf("constSizeBytes = %d\n", attrs.constSizeBytes); | |||||
printf("localSizeBytes = %d\n", attrs.localSizeBytes); | |||||
printf("maxThreadsPerBlock = %d\n", attrs.maxThreadsPerBlock); | |||||
printf("numRegs = %d\n", attrs.numRegs); | |||||
printf("ptxVersion = %d\n", attrs.ptxVersion); | |||||
printf("binaryVersion = %d\n", attrs.binaryVersion); | |||||
printf("\n"); | |||||
fflush(stdout); | |||||
} | |||||
}}} // namespace cv { namespace cuda { namespace cudev | |||||
//! @endcond | |||||
#endif /* OPENCV_CUDA_DEVICE_FUNCATTRIB_HPP */ |