@@ -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 */ |