\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..19b6e39
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,161 @@
+cmake_minimum_required(VERSION 3.10.2)
+project(HyperLPR3-Source)
+
+set(CMAKE_CXX_STANDARD 11)
+
+set(LIBRARY_NAME hyperlpr3)
+
+option( BUILD_SHARE "Build shared libs" ON )
+option( BUILD_SAMPLES "Build samples demo" OFF )
+option( BUILD_TEST "Build unit-test exec" OFF )
+
+set(PATH_3RDPARTY ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty_hyper_inspire_op)
+
+# find all cpp file
+file(GLOB_RECURSE SRC_BUFFER_MODULE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/cpp/src/buffer_module/*.cpp)
+file(GLOB_RECURSE SRC_CONTEXT_MODULE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/cpp/src/context_module/*.cpp)
+file(GLOB_RECURSE SRC_NN_MODULE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/cpp/src/nn_module/*.cpp)
+file(GLOB_RECURSE SRC_NN_IMPL_MODULE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/cpp/src/nn_implementation_module/*.cpp)
+file(GLOB SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/cpp/src/*.cpp)
+# local files
+set(SRC_INFERENCE_HELPER_LOCAL_FILES ${CMAKE_CURRENT_SOURCE_DIR}/cpp/src/inference_helper_module/inference_helper.cpp cpp/src/inference_helper_module/inference_helper_mnn.cpp)
+# include src header
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/cpp/src)
+
+
+set(SRC_C_CPP_FILES ${SRC_BUFFER_MODULE_FILES}
+ ${SRC_CONTEXT_MODULE_FILES}
+ ${SRC_LOADER_MODULE_FILES}
+ ${SRC_NN_MODULE_FILES}
+ ${SRC_NN_IMPL_MODULE_FILES}
+ ${SRC_SLOG_MODULE_FILES}
+ ${SRC_FILES}
+ ${SRC_INFERENCE_HELPER_LOCAL_FILES})
+
+# find all c file for c_api
+file(GLOB_RECURSE CAPI_CC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/cpp/c_api/*.cc)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/cpp/c_api)
+
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/cpp/platform)
+
+# must use mnn
+add_definitions("-DINFERENCE_HELPER_ENABLE_MNN")
+
+set(LINK_THIRD_LIBS pthread MNN)
+
+if (ANDROID)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+ set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS}")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+ file(GLOB_RECURSE NATIVE_CPP_FILES ${CMAKE_CURRENT_SOURCE_DIR}/cpp/platform/jni/android/*.cpp)
+
+ find_package(OpenCV REQUIRED)
+ include_directories(${MNN_INCLUDE_DIRS})
+ link_directories(${MNN_LIBS})
+
+ add_library(${LIBRARY_NAME} SHARED ${NATIVE_CPP_FILES} ${SRC_C_CPP_FILES} ${CAPI_CC_FILES})
+ target_link_libraries(${LIBRARY_NAME} ${OpenCV_LIBS} jnigraphics log -Wl,--whole-archive MNN -Wl,--no-whole-archive)
+
+elseif(IOS)
+ # TODO: Not implement
+else ()
+ # Build Linux or MacOS
+ if (BUILD_CUDA)
+ # TODO: Not implement
+ elseif (BUILD_LINUX_ARM7)
+ message("[BUILD]Linux Armv7")
+ add_definitions("-DLINUX_ARM7")
+ set(PLAT linux-arm32)
+ # MNN Third party dependence
+ set(MNN_INCLUDE_DIRS ${PATH_3RDPARTY}/MNN-2.2.0/${PLAT}-static/include)
+ set(MNN_LIBS ${PATH_3RDPARTY}/MNN-2.2.0/${PLAT}-static/lib)
+ # OpenCV Third party dependence
+ set(OpenCV_DIR ${PATH_3RDPARTY}/opencv/opencv-linux-armhf/share/OpenCV)
+ set(OpenCV_STATIC_INCLUDE_DIR ${PATH_3RDPARTY}/opencv/opencv-linux-armhf/include/)
+ find_package(OpenCV REQUIRED)
+
+ elseif (BUILD_LINUX_ARM64)
+ # TODO: Not implement
+ else()
+ # Local Build
+ message("[BUILD]Local")
+ if (APPLE)
+ set(PLAT darwin)
+ else()
+ set(PLAT linux)
+ endif ()
+ # MNN Third party dependence
+ set(MNN_INCLUDE_DIRS ${PATH_3RDPARTY}/MNN-2.2.0/${PLAT}-static/include)
+ set(MNN_LIBS ${PATH_3RDPARTY}/MNN-2.2.0/${PLAT}-static/lib)
+ # OpenCV Third party dependence
+ set(OpenCV_DIR ${PATH_3RDPARTY}/opencv-4.5.1/${PLAT}/lib/cmake/opencv4)
+ set(OpenCV_STATIC_INCLUDE_DIR ${PATH_3RDPARTY}/opencv-4.5.1/${PLAT}/include/opencv4)
+ find_package(OpenCV REQUIRED)
+
+ endif()
+endif()
+
+if (NOT ANDROID)
+ # mnn
+ message(MNN_INCLUDE_DIRS=${MNN_INCLUDE_DIRS})
+ message(MNN_LIBS=${MNN_LIBS})
+ include_directories(${MNN_INCLUDE_DIRS})
+ link_directories(${MNN_LIBS})
+ # opencv
+ message(OpenCV_Version: ${OpenCV_VERSION})
+ message(libraries: ${OpenCV_LIBS})
+ message(libraries path: ${OpenCV_DIR})
+ message(OpenCV_INCLUDE_DIRS=${OpenCV_STATIC_INCLUDE_DIR})
+ include_directories(${OpenCV_STATIC_INCLUDE_DIR})
+
+ if (BUILD_SAMPLES)
+ # built samples exec
+ add_executable(ContextSample ${CMAKE_CURRENT_SOURCE_DIR}/cpp/samples/sample_context.cpp ${SRC_C_CPP_FILES})
+ target_link_libraries(ContextSample ${OpenCV_LIBS} ${LINK_THIRD_LIBS} )
+
+ add_executable(SplitDetSample ${CMAKE_CURRENT_SOURCE_DIR}/cpp/samples/sample_split_model.cpp ${SRC_C_CPP_FILES})
+ target_link_libraries(SplitDetSample ${OpenCV_LIBS} ${LINK_THIRD_LIBS} )
+
+ add_executable(CAPISample ${CMAKE_CURRENT_SOURCE_DIR}/cpp/samples/sample_capi.cpp ${SRC_C_CPP_FILES} ${CAPI_CC_FILES})
+ target_link_libraries(CAPISample ${OpenCV_LIBS} ${LINK_THIRD_LIBS} )
+
+ endif()
+
+ if (BUILD_TEST)
+ if (ENABLE_BENCHMARK_TEST)
+ message([Test]Open Benchmark Test)
+ add_definitions(-DENABLE_BENCHMARK_TEST)
+ endif ()
+# # catch2
+ include_directories(${PATH_3RDPARTY}/catch2)
+ file(GLOB_RECURSE TEST_C_CPP_FILES ${CMAKE_CURRENT_SOURCE_DIR}/cpp/test/*.cpp)
+ add_executable(UnitTest ${TEST_C_CPP_FILES} ${SRC_C_CPP_FILES} ${CAPI_CC_FILES})
+ target_link_libraries(UnitTest ${OpenCV_LIBS} ${LINK_THIRD_LIBS})
+ endif()
+
+ if (BUILD_SHARE)
+ # build dynamic library
+ add_library(${LIBRARY_NAME} SHARED ${SRC_C_CPP_FILES} ${CAPI_CC_FILES})
+ target_link_libraries(${LIBRARY_NAME} ${OpenCV_LIBS} ${LINK_THIRD_LIBS} )
+ set(SRC_RKNN_RELATED ${CMAKE_CURRENT_SOURCE_DIR}/cpp/src/inference_helper_rknn.cpp)
+ set(SRC_C_CPP_FILES ${SRC_C_CPP_FILES} )
+
+ endif()
+
+endif()
+
+set(CMAKE_INSTALL_PREFIX ${PROJECT_BINARY_DIR}/install/hyperlpr3)
+message(CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX})
+install(DIRECTORY resource DESTINATION ./)
+if (BUILD_SAMPLES)
+ install(TARGETS ContextSample DESTINATION ./bin)
+ install(TARGETS CAPISample DESTINATION ./bin)
+ install(TARGETS SplitDetSample DESTINATION ./bin)
+endif()
+if (BUILD_SHARE)
+ install(TARGETS ${LIBRARY_NAME} DESTINATION ./lib)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cpp/c_api/hyper_lpr_sdk.h DESTINATION ./include)
+endif ()
+if (BUILD_TEST)
+ install(TARGETS UnitTest DESTINATION test)
+endif ()
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index b82ed91..0000000
--- a/Dockerfile
+++ /dev/null
@@ -1,11 +0,0 @@
-#基于的基础镜像
-FROM python:3.6
-#代码添加到code文件夹,后面可以通过进入容器中看的
-ADD ./ /code
-# 设置code文件夹是工作目录
-WORKDIR /code
-# 安装支持
-RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
-#当容器启动时,使用python3执行指定路径的py脚本
-CMD ["python", "/code/WebAPI.py"]
-
diff --git a/Font/platech.ttf b/Font/platech.ttf
deleted file mode 100644
index d66a970..0000000
Binary files a/Font/platech.ttf and /dev/null differ
diff --git a/HyperLPRLite.py b/HyperLPRLite.py
deleted file mode 100644
index 36b9d3c..0000000
--- a/HyperLPRLite.py
+++ /dev/null
@@ -1,155 +0,0 @@
-#coding=utf-8
-import cv2
-import numpy as np
-from keras import backend as K
-from keras.models import *
-from keras.layers import *
-
-chars = [u"京", u"沪", u"津", u"渝", u"冀", u"晋", u"蒙", u"辽", u"吉", u"黑", u"苏", u"浙", u"皖", u"闽", u"赣", u"鲁", u"豫", u"鄂", u"湘", u"粤", u"桂",
- u"琼", u"川", u"贵", u"云", u"藏", u"陕", u"甘", u"青", u"宁", u"新", u"0", u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"A",
- u"B", u"C", u"D", u"E", u"F", u"G", u"H", u"J", u"K", u"L", u"M", u"N", u"P", u"Q", u"R", u"S", u"T", u"U", u"V", u"W", u"X",
- u"Y", u"Z",u"港",u"学",u"使",u"警",u"澳",u"挂",u"军",u"北",u"南",u"广",u"沈",u"兰",u"成",u"济",u"海",u"民",u"航",u"空"
- ]
-
-class LPR():
- def __init__(self,model_detection,model_finemapping,model_seq_rec):
- self.watch_cascade = cv2.CascadeClassifier(model_detection)
- self.modelFineMapping = self.model_finemapping()
- self.modelFineMapping.load_weights(model_finemapping)
- self.modelSeqRec = self.model_seq_rec(model_seq_rec)
-
- def computeSafeRegion(self,shape,bounding_rect):
- top = bounding_rect[1] # y
- bottom = bounding_rect[1] + bounding_rect[3] # y + h
- left = bounding_rect[0] # x
- right = bounding_rect[0] + bounding_rect[2] # x + w
- min_top = 0
- max_bottom = shape[0]
- min_left = 0
- max_right = shape[1]
- if top < min_top:
- top = min_top
- if left < min_left:
- left = min_left
- if bottom > max_bottom:
- bottom = max_bottom
- if right > max_right:
- right = max_right
- return [left,top,right-left,bottom-top]
-
- def cropImage(self,image,rect):
- x, y, w, h = self.computeSafeRegion(image.shape,rect)
- return image[y:y+h,x:x+w]
-
- def detectPlateRough(self,image_gray,resize_h = 720,en_scale =1.08 ,top_bottom_padding_rate = 0.05):
- if top_bottom_padding_rate>0.2:
- print("error:top_bottom_padding_rate > 0.2:",top_bottom_padding_rate)
- exit(1)
- height = image_gray.shape[0]
- padding = int(height*top_bottom_padding_rate)
- scale = image_gray.shape[1]/float(image_gray.shape[0])
- image = cv2.resize(image_gray, (int(scale*resize_h), resize_h))
- image_color_cropped = image[padding:resize_h-padding,0:image_gray.shape[1]]
- image_gray = cv2.cvtColor(image_color_cropped,cv2.COLOR_RGB2GRAY)
- watches = self.watch_cascade.detectMultiScale(image_gray, en_scale, 2, minSize=(36, 9),maxSize=(36*40, 9*40))
- cropped_images = []
- for (x, y, w, h) in watches:
- x -= w * 0.14
- w += w * 0.28
- y -= h * 0.15
- h += h * 0.3
- cropped = self.cropImage(image_color_cropped, (int(x), int(y), int(w), int(h)))
- cropped_images.append([cropped,[x, y+padding, w, h]])
- return cropped_images
-
- def fastdecode(self,y_pred):
- results = ""
- confidence = 0.0
- table_pred = y_pred.reshape(-1, len(chars)+1)
- res = table_pred.argmax(axis=1)
- for i,one in enumerate(res):
- if one= image.shape[1]-1:
- T= image.shape[1]-1
- rect[2] -= rect[2]*(1-res_raw[1] + res_raw[0])
- rect[0]+=res[0]
- image = image[:,H:T+2]
- image = cv2.resize(image, (int(136), int(36)))
- return image,rect
-
- def recognizeOne(self,src):
- x_tempx = src
- x_temp = cv2.resize(x_tempx,( 164,48))
- x_temp = x_temp.transpose(1, 0, 2)
- y_pred = self.modelSeqRec.predict(np.array([x_temp]))
- y_pred = y_pred[:,2:,:]
- return self.fastdecode(y_pred)
-
- def SimpleRecognizePlateByE2E(self,image):
- images = self.detectPlateRough(image,image.shape[0],top_bottom_padding_rate=0.1)
- res_set = []
- for j,plate in enumerate(images):
- plate, rect =plate
- image_rgb,rect_refine = self.finemappingVertical(plate,rect)
- res,confidence = self.recognizeOne(image_rgb)
- res_set.append([res,confidence,rect_refine])
- return res_set
diff --git a/HyperLprGUI.py b/HyperLprGUI.py
deleted file mode 100644
index f77756d..0000000
--- a/HyperLprGUI.py
+++ /dev/null
@@ -1,794 +0,0 @@
-"""
-Author: youngorsu
-Email : zhiyongsu@qq.com
-Last edited: 2018.1.29
-"""
-# coding=utf-8
-
-
-import sys
-import os
-from PyQt5.QtWidgets import (
- QMainWindow,
- QLabel,
- QLineEdit,
- QPushButton,
- QHBoxLayout,
- QVBoxLayout,
- QGridLayout,
- QTableWidget,
- QWidget,
- QAbstractItemView,
- QHeaderView,
- QGraphicsView,
- QGraphicsScene,
- QGraphicsPixmapItem,
- QSplitter,
- QFileDialog,
- QTableWidgetItem,
- QGraphicsRectItem,
- QCheckBox,
- QMessageBox,
- QGroupBox,
- QGraphicsSimpleTextItem,
- qApp,
- QAction,
- QApplication)
-from PyQt5.QtGui import QIcon, QColor, QPainter, QImage, QPixmap, QPen, QBrush, QFont, QPalette, QKeySequence
-from PyQt5.QtCore import Qt, QDir, QSize, QEventLoop, QThread, pyqtSignal
-
-from hyperlpr_py3 import pipline as pp
-
-import cv2
-
-import numpy as np
-
-import time
-
-import shutil
-
-draw_plate_in_image_enable = 1
-
-plateTypeName = ["蓝", "黄", "绿", "白", "黑 "]
-
-
-def SimpleRecognizePlateWithGui(image):
- t0 = time.time()
-
- images = pp.detect.detectPlateRough(
- image, image.shape[0], top_bottom_padding_rate=0.1)
-
- res_set = []
- y_offset = 32
- for j, plate in enumerate(images):
- plate, rect, origin_plate = plate
-
- plate = cv2.resize(plate, (136, 36 * 2))
- t1 = time.time()
-
- plate_type = pp.td.SimplePredict(plate)
- plate_color = plateTypeName[plate_type]
-
- if (plate_type > 0) and (plate_type < 5):
- plate = cv2.bitwise_not(plate)
-
- if draw_plate_in_image_enable == 1:
- image[y_offset:y_offset + plate.shape[0], 0:plate.shape[1]] = plate
- y_offset = y_offset + plate.shape[0] + 4
-
- image_rgb = pp.fm.findContoursAndDrawBoundingBox(plate)
-
- if draw_plate_in_image_enable == 1:
- image[y_offset:y_offset + image_rgb.shape[0],
- 0:image_rgb.shape[1]] = image_rgb
- y_offset = y_offset + image_rgb.shape[0] + 4
-
- image_rgb = pp.fv.finemappingVertical(image_rgb)
-
- if draw_plate_in_image_enable == 1:
- image[y_offset:y_offset + image_rgb.shape[0],
- 0:image_rgb.shape[1]] = image_rgb
- y_offset = y_offset + image_rgb.shape[0] + 4
-
- pp.cache.verticalMappingToFolder(image_rgb)
-
- if draw_plate_in_image_enable == 1:
- image[y_offset:y_offset + image_rgb.shape[0],
- 0:image_rgb.shape[1]] = image_rgb
- y_offset = y_offset + image_rgb.shape[0] + 4
-
- e2e_plate, e2e_confidence = pp.e2e.recognizeOne(image_rgb)
- print("e2e:", e2e_plate, e2e_confidence)
-
- image_gray = cv2.cvtColor(image_rgb, cv2.COLOR_RGB2GRAY)
-
- #print("校正", time.time() - t1, "s")
-
- t2 = time.time()
- val = pp.segmentation.slidingWindowsEval(image_gray)
- # print val
- #print("分割和识别", time.time() - t2, "s")
-
- res=""
- confidence = 0
- if len(val) == 3:
- blocks, res, confidence = val
- if confidence / 7 > 0.7:
-
- if draw_plate_in_image_enable == 1:
- image = pp.drawRectBox(image, rect, res)
- for i, block in enumerate(blocks):
- block_ = cv2.resize(block, (24, 24))
- block_ = cv2.cvtColor(block_, cv2.COLOR_GRAY2BGR)
- image[j * 24:(j * 24) + 24, i *
- 24:(i * 24) + 24] = block_
- if image[j * 24:(j * 24) + 24,
- i * 24:(i * 24) + 24].shape == block_.shape:
- pass
-
- res_set.append([res,
- confidence / 7,
- rect,
- plate_color,
- e2e_plate,
- e2e_confidence,
- len(blocks)])
- print("seg:",res,confidence/7)
- #print(time.time() - t0, "s")
-
- print("---------------------------------")
- return image, res_set
-
-
-class LicenseRecognizationThread(QThread):
-
- recognization_done_signal = pyqtSignal(list)
-
- def __init__(self, parent=None):
- super().__init__(parent)
- self.hyperlpr_dir_path = ""
- self.filenames = []
-
- def set_parameter(self, filename_list, path):
- self.hyperlpr_dir_path = path
- self.filenames = filename_list
-
- def run(self):
- while True:
- time.sleep(1)
- if len(self.hyperlpr_dir_path) > 0:
- for i in range(0, len(self.filenames)):
- path = os.path.join(
- self.hyperlpr_dir_path, self.filenames[i])
- image = cv2.imdecode(np.fromfile(path, dtype=np.uint8), -1)
- image, res_set = SimpleRecognizePlateWithGui(image)
- self.recognization_done_signal.emit([i, res_set])
-
- self.hyperlpr_dir_path = ""
-
-
-class HyperLprImageView(QGraphicsView):
-
- def __init__(self):
-
- super().__init__()
-
- self.init_ui()
-
- def init_ui(self):
-
- scene = QGraphicsScene()
- scene.setBackgroundBrush(QColor(100, 100, 100))
- scene.setItemIndexMethod(QGraphicsScene.BspTreeIndex)
-
- scene.setSceneRect(scene.itemsBoundingRect())
-
- self.setDragMode(QGraphicsView.RubberBandDrag)
- self.setViewportUpdateMode(QGraphicsView.FullViewportUpdate)
- self.setRenderHints(QPainter.Antialiasing | QPainter.TextAntialiasing)
-
- self.frame_item = QGraphicsPixmapItem()
-
- self.text_item_offset = 0
- self.rect_item_array = []
- self.text_item_array = []
- for i in range(0, 5):
- rect_item = QGraphicsRectItem()
- rect_item.setVisible(False)
- rect_item.setZValue(20.0)
- rect_item.setPen(QPen(Qt.red, 5))
- rect_item.setRect(20, 20, 20, 20)
- scene.addItem(rect_item)
- self.rect_item_array.append(rect_item)
- text_item = QGraphicsSimpleTextItem("")
- text_item.setBrush(QBrush(Qt.red))
- text_item.setZValue(20.0)
- text_item.setPos(10, 50)
- text_item.setFont(QFont("黑体", 24))
- text_item.setVisible(False)
- scene.addItem(text_item)
- self.text_item_array.append(text_item)
-
- scene.addItem(self.frame_item)
-
- self.curr_factor = 1.0
-
- self.setScene(scene)
-
- def resetRectText(self, res_set):
- max_no = len(res_set)
-
- if max_no > 5:
- max_no = 5
-
- for i in range(0, 5):
- if i < max_no:
- curr_rect = res_set[i][2]
- self.rect_item_array[i].setRect(int(curr_rect[0]), int(
- curr_rect[1]), int(curr_rect[2]), int(curr_rect[3]))
- self.rect_item_array[i].setVisible(True)
-
- self.text_item_array[i].setText(
- res_set[i][4] + " " + res_set[i][3])
- self.text_item_array[i].setPos(
- int(curr_rect[0]), int(curr_rect[1]) - 48)
- self.text_item_array[i].setVisible(True)
- else:
- self.text_item_array[i].setVisible(False)
- self.rect_item_array[i].setVisible(False)
-
- def wheelEvent(self, event):
- factor = event.angleDelta().y() / 120.0
- if event.angleDelta().y() / 120.0 > 0:
- factor = 1.08
- else:
- factor = 0.92
-
- if self.curr_factor > 0.1 and self.curr_factor < 10:
- self.curr_factor = self.curr_factor * factor
- self.scale(factor, factor)
-
- def resetPixmap(self, image):
-
- self.frame_item.setPixmap(QPixmap.fromImage(image))
-
-
-class HyperLprWindow(QMainWindow):
-
- start_init_signal = pyqtSignal()
-
- def __init__(self):
-
- super().__init__()
-
- self.initUI()
-
- def initUI(self):
-
- self.statusBar().showMessage('Ready')
-
- self.left_action = QAction('上一个', self)
- self.left_action.setShortcut(QKeySequence.MoveToPreviousChar)
- self.left_action.triggered.connect(self.analyze_last_one_image)
-
- self.right_action = QAction('下一个', self)
- self.right_action.setShortcut(QKeySequence.MoveToNextChar)
- self.right_action.triggered.connect(self.analyze_next_one_image)
-
- self.rename_image_action = QAction('保存e2e文件名', self)
- self.rename_image_action.setShortcut(QKeySequence.MoveToPreviousLine)
- self.rename_image_action.triggered.connect(self.rename_current_image_with_info)
-
- self.statusBar()
-
- menubar = self.menuBar()
- fileMenu = menubar.addMenu('&Function')
- fileMenu.addAction(self.left_action)
- fileMenu.addAction(self.right_action)
- fileMenu.addAction(self.rename_image_action)
-
- self.image_window_view = HyperLprImageView()
-
- table_widget_header_labels = [
- "文件名",
- "分割识别",
- "置信度",
- "颜色",
- "E2E识别",
- "E2E置信度"]
-
- self.hyperlpr_tableview = QTableWidget(
- 0, len(table_widget_header_labels))
- self.hyperlpr_tableview.setHorizontalHeaderLabels(
- table_widget_header_labels)
-
- self.hyperlpr_tableview.setSelectionBehavior(
- QAbstractItemView.SelectItems)
- self.hyperlpr_tableview.setSelectionMode(
- QAbstractItemView.SingleSelection)
- self.hyperlpr_tableview.setEditTriggers(
- QAbstractItemView.NoEditTriggers)
- self.hyperlpr_tableview.horizontalHeader().setSectionResizeMode(
- QHeaderView.ResizeToContents)
- self.hyperlpr_tableview.setEditTriggers(
- QAbstractItemView.NoEditTriggers)
-
- self.hyperlpr_tableview.cellClicked.connect(
- self.recognize_one_license_plate)
-
- self.left_button = QPushButton("<")
- self.left_button.setFixedWidth(60)
- self.right_button = QPushButton(">")
- self.right_button.setFixedWidth(60)
- self.left_button.setEnabled(False)
- self.right_button.setEnabled(False)
- self.left_button.clicked.connect(self.analyze_last_one_image)
- self.right_button.clicked.connect(self.analyze_next_one_image)
- left_right_layout = QHBoxLayout()
- left_right_layout.addStretch()
- left_right_layout.addWidget(self.left_button)
- left_right_layout.addStretch()
- left_right_layout.addWidget(self.right_button)
- left_right_layout.addStretch()
-
- self.location_label = QLabel("车牌目录", self)
- self.location_text = QLineEdit(self)
- self.location_text.setEnabled(False)
- #self.location_text.setFixedWidth(300)
- self.location_button = QPushButton("...")
- self.location_button.clicked.connect(self.select_new_dir)
-
- self.location_layout = QHBoxLayout()
- self.location_layout.addWidget(self.location_label)
- self.location_layout.addWidget(self.location_text)
- self.location_layout.addWidget(self.location_button)
- self.location_layout.addStretch()
-
- self.check_box = QCheckBox("与文件名比较车牌")
- self.check_box.setChecked(True)
-
- self.update_file_path_button = QPushButton('批量识别')
- self.update_file_path_button.clicked.connect(
- self.batch_recognize_all_images)
-
- self.update_file_path_layout = QHBoxLayout()
- self.update_file_path_layout.addWidget(self.check_box)
- self.update_file_path_layout.addWidget(self.update_file_path_button)
- self.update_file_path_layout.addStretch()
-
- self.save_as_e2e_filename_button = QPushButton("保存e2e文件名")
- self.save_as_e2e_filename_button.setEnabled(False)
- self.save_as_e2e_filename_button.clicked.connect(self.rename_current_image_with_info)
- self.save_layout = QHBoxLayout()
- self.save_layout.addWidget(self.save_as_e2e_filename_button)
- self.save_layout.addStretch()
-
- self.top_layout = QVBoxLayout()
- self.top_layout.addLayout(left_right_layout)
- self.top_layout.addLayout(self.location_layout)
- self.top_layout.addLayout(self.update_file_path_layout)
- self.top_layout.addLayout(self.save_layout)
-
- function_groupbox = QGroupBox("功能区")
- function_groupbox.setLayout(self.top_layout)
-
- license_plate_image_label = QLabel("车牌图")
- self.license_plate_widget = QLabel("")
-
- block_image_label = QLabel("分割图")
- self.block_plate_widget = QLabel("")
-
- filename_label = QLabel("文件名:")
- self.filename_edit = QLineEdit()
-
- segmentation_recognition_label = QLabel("分割识别:")
- self.segmentation_recognition_edit = QLineEdit()
- self.segmentation_recognition_edit.setFont(QFont("黑体", 24, QFont.Bold))
- # self.segmentation_recognition_edit.setStyleSheet("color:red")
-
- confidence_label = QLabel("分割识别\n置信度")
- self.confidence_edit = QLineEdit()
- #self.confidence_edit.setFont(QFont("黑体", 24, QFont.Bold))
- # self.confidence_edit.setStyleSheet("color:red")
-
- plate_color_label = QLabel("车牌颜色")
- self.plate_color_edit = QLineEdit()
- self.plate_color_edit.setFont(QFont("黑体", 24, QFont.Bold))
- # self.plate_color_edit.setStyleSheet("color:red")
-
- e2e_recognization_label = QLabel("e2e识别:")
- self.e2e_recognization_edit = QLineEdit()
- self.e2e_recognization_edit.setFont(QFont("黑体", 24, QFont.Bold))
- # self.e2e_recognization_edit.setStyleSheet("color:red")
-
- e2e_confidence_label = QLabel("e2e置信度")
- self.e2e_confidence_edit = QLineEdit()
- #self.e2e_confidence_edit.setFont(QFont("黑体", 24, QFont.Bold))
- # self.e2e_confidence_edit.setStyleSheet("color:red")
-
- info_gridlayout = QGridLayout()
- line_index = 0
- info_gridlayout.addWidget(filename_label, line_index, 0)
- info_gridlayout.addWidget(self.filename_edit, line_index, 1)
- line_index += 1
- info_gridlayout.addWidget(license_plate_image_label, line_index, 0)
- info_gridlayout.addWidget(self.license_plate_widget, line_index, 1)
- line_index += 1
- info_gridlayout.addWidget(e2e_recognization_label, line_index, 0)
- info_gridlayout.addWidget(self.e2e_recognization_edit, line_index, 1)
- line_index += 1
- info_gridlayout.addWidget(
- segmentation_recognition_label, line_index, 0)
- info_gridlayout.addWidget(
- self.segmentation_recognition_edit, line_index, 1)
- line_index += 1
- info_gridlayout.addWidget(plate_color_label, line_index, 0)
- info_gridlayout.addWidget(self.plate_color_edit, line_index, 1)
- line_index += 1
- info_gridlayout.addWidget(block_image_label, line_index, 0)
- info_gridlayout.addWidget(self.block_plate_widget, line_index, 1)
- line_index += 1
- info_gridlayout.addWidget(confidence_label, line_index, 0)
- info_gridlayout.addWidget(self.confidence_edit, line_index, 1)
- line_index += 1
- info_gridlayout.addWidget(e2e_confidence_label, line_index, 0)
- info_gridlayout.addWidget(self.e2e_confidence_edit, line_index, 1)
-
- info_widget = QGroupBox("分割识别&e2e")
-
- info_widget.setLayout(info_gridlayout)
-
- right_splitter = QSplitter(Qt.Vertical)
- right_splitter.addWidget(self.hyperlpr_tableview)
- right_splitter.addWidget(function_groupbox)
- right_splitter.addWidget(info_widget)
- right_splitter.setStretchFactor(0, 2)
- right_splitter.setStretchFactor(2, 1)
-
- main_splitter = QSplitter(Qt.Horizontal)
- main_splitter.addWidget(self.image_window_view)
- main_splitter.addWidget(right_splitter)
- main_splitter.setStretchFactor(0, 1)
-
- self.image_filename_list = []
- self.hyperlpr_dir_path = ""
- self.segmentation_recognition_correct_number = 0
- self.color_correct_number = 0
- self.e2e_recognization_correct_number = 0
- self.current_row = 0
-
- self.batch_recognization_thread = LicenseRecognizationThread()
- self.batch_recognization_thread.recognization_done_signal.connect(
- self.recognization_done_slot)
- self.batch_recognization_thread.start()
-
- self.start_init_signal.connect(self.read_path_and_show_one_image)
-
- self.setCentralWidget(main_splitter)
-
- self.setWindowTitle("HyperLPR车牌识别软件v1.0")
-
- self.start_init_signal.emit()
-
- def read_path_and_show_one_image(self):
-
- hyperlpr_dir_info_filepath = QDir.homePath() + "/hyperlpr_dir_file"
- if os.path.exists(hyperlpr_dir_info_filepath):
- with open(hyperlpr_dir_info_filepath, 'r') as f:
- self.hyperlpr_dir_path = f.read()
-
- if len(self.hyperlpr_dir_path) > 0:
- self.reset_info_gui()
-
- if len(self.image_filename_list) > 0:
- self.recognize_and_show_one_image(self.image_filename_list[0], 0)
-
- def select_new_dir(self):
-
- self.hyperlpr_dir_path = QFileDialog.getExistingDirectory(
- self, "读取文件夹", QDir.currentPath())
-
- if len(self.hyperlpr_dir_path) > 0:
- hyperlpr_dir_info_filepath = QDir.homePath() + "/hyperlpr_dir_file"
- with open(hyperlpr_dir_info_filepath, 'w') as f:
- f.write(self.hyperlpr_dir_path)
- self.reset_info_gui()
-
- def rename_current_image_with_info(self):
- if len(self.hyperlpr_dir_path) > 0:
- target_dir_path = self.hyperlpr_dir_path + "/result"
- if not os.path.exists(target_dir_path):
- os.makedirs(target_dir_path)
- if len(self.plate_color_edit.text())>0 and len(self.e2e_recognization_edit.text())>0:
- orign_path = os.path.join(self.hyperlpr_dir_path, self.filename_edit.text())
- target_path = os.path.join(target_dir_path,self.plate_color_edit.text()+"-"+self.e2e_recognization_edit.text()+".jpg")
- shutil.copyfile(orign_path, target_path)
-
- def reset_info_gui(self):
-
- self.location_text.setText(self.hyperlpr_dir_path)
- self.scan_files_with_new_dir(self.hyperlpr_dir_path)
- self.fill_table_with_new_info()
-
- def scan_files_with_new_dir(self, path):
-
- name_list = os.listdir(path) # 列出文件夹下所有的目录与文件
- self.image_filename_list.clear()
- for i in range(0, len(name_list)):
- if name_list[i].endswith(
- ".jpg") or name_list[i].endswith(".png"):
- self.image_filename_list.append(name_list[i])
-
- def fill_table_with_new_info(self):
- self.hyperlpr_tableview.clearContents()
- row_count = self.hyperlpr_tableview.rowCount()
- for i in range(row_count, -1, -1):
- self.hyperlpr_tableview.removeRow(i)
-
- for i in range(0, len(self.image_filename_list)):
- row = self.hyperlpr_tableview.rowCount()
- self.hyperlpr_tableview.insertRow(row)
-
- item0 = QTableWidgetItem()
- item0.setTextAlignment(Qt.AlignCenter)
- self.hyperlpr_tableview.setItem(row, 0, item0)
- self.hyperlpr_tableview.item(
- row, 0).setText(
- self.image_filename_list[i])
-
- item1 = QTableWidgetItem()
- item1.setTextAlignment(Qt.AlignCenter)
- self.hyperlpr_tableview.setItem(row, 1, item1)
-
- item2 = QTableWidgetItem()
- item2.setTextAlignment(Qt.AlignCenter)
- self.hyperlpr_tableview.setItem(row, 2, item2)
-
- item3 = QTableWidgetItem()
- item3.setTextAlignment(Qt.AlignCenter)
- self.hyperlpr_tableview.setItem(row, 3, item3)
-
- item4 = QTableWidgetItem()
- item4.setTextAlignment(Qt.AlignCenter)
- self.hyperlpr_tableview.setItem(row, 4, item4)
-
- item5 = QTableWidgetItem()
- item5.setTextAlignment(Qt.AlignCenter)
- self.hyperlpr_tableview.setItem(row, 5, item5)
-
- if len(self.image_filename_list) > 0:
- self.left_button.setEnabled(True)
- self.right_button.setEnabled(True)
- self.save_as_e2e_filename_button.setEnabled(True)
-
- def analyze_last_one_image(self):
- if self.current_row > 0:
- self.recognize_one_license_plate(self.current_row-1, 0)
-
- def analyze_next_one_image(self):
- if self.current_row < (len(self.image_filename_list)-1):
- self.recognize_one_license_plate(self.current_row + 1, 0)
-
- def recognize_one_license_plate(self, row, col):
- if col == 0 and row < len(self.image_filename_list):
- self.current_row = row
- self.recognize_and_show_one_image(
- self.image_filename_list[row], row)
-
- def recognize_and_show_one_image(self, image_filename_text, row):
-
- if image_filename_text.endswith(".jpg"):
-
- print(image_filename_text)
- path = os.path.join(self.hyperlpr_dir_path, image_filename_text)
- image = cv2.imdecode(np.fromfile(path, dtype=np.uint8), -1)
- image, res_set = SimpleRecognizePlateWithGui(image)
- img = QImage(
- image.data,
- image.shape[1],
- image.shape[0],
- image.shape[1] * image.shape[2],
- QImage.Format_RGB888)
- self.image_window_view.resetPixmap(img.rgbSwapped())
- self.image_window_view.resetRectText(res_set)
-
- if len(res_set) > 0:
- curr_rect = res_set[0][2]
- image_crop = image[int(curr_rect[1]):int(
- curr_rect[1] + curr_rect[3]), int(curr_rect[0]):int(curr_rect[0] + curr_rect[2])]
- curr_plate = cv2.resize(image_crop, (204, 108))
- plate_img = QImage(
- curr_plate.data,
- curr_plate.shape[1],
- curr_plate.shape[0],
- curr_plate.shape[1] *
- curr_plate.shape[2],
- QImage.Format_RGB888)
- self.license_plate_widget.setPixmap(
- QPixmap.fromImage(plate_img.rgbSwapped()))
-
- # print(res_set[0][6])
- block_crop = image[0:24, 0:(24 * int(res_set[0][6]))]
- curr_block = cv2.resize(
- block_crop, (24 * int(res_set[0][6]), 24))
- block_image = QImage(
- curr_block.data,
- curr_block.shape[1],
- curr_block.shape[0],
- curr_block.shape[1] *
- curr_block.shape[2],
- QImage.Format_RGB888)
- self.block_plate_widget.setPixmap(
- QPixmap.fromImage(block_image.rgbSwapped()))
-
- self.segmentation_recognition_edit.setText(res_set[0][0])
- if res_set[0][0] in image_filename_text:
- self.segmentation_recognition_edit.setStyleSheet("color:black")
- else:
- self.segmentation_recognition_edit.setStyleSheet("color:red")
-
-
- self.filename_edit.setText(image_filename_text)
- self.confidence_edit.setText("%.3f" % (float(res_set[0][1])))
-
- self.plate_color_edit.setText(res_set[0][3])
- if res_set[0][3] in image_filename_text:
- self.plate_color_edit.setStyleSheet("color:black")
- else:
- self.plate_color_edit.setStyleSheet("color:red")
-
- self.e2e_recognization_edit.setText(res_set[0][4])
- if res_set[0][4] in image_filename_text:
- self.e2e_recognization_edit.setStyleSheet("color:black")
- else:
- self.e2e_recognization_edit.setStyleSheet("color:red")
-
- self.e2e_confidence_edit.setText(
- "%.3f" % (float(res_set[0][5])))
- else:
- self.license_plate_widget.clear()
- self.block_plate_widget.clear()
- self.segmentation_recognition_edit.setText("")
- self.filename_edit.setText(image_filename_text)
- self.confidence_edit.setText("")
- self.plate_color_edit.setText("")
- self.e2e_recognization_edit.setText("")
- self.e2e_confidence_edit.setText("")
-
- self.fill_table_widget_with_res_info(res_set, row)
-
- def batch_recognize_all_images(self):
- self.segmentation_recognition_correct_number = 0
- self.color_correct_number = 0
- self.e2e_recognization_correct_number = 0
- self.batch_recognization_thread.set_parameter(
- self.image_filename_list, self.hyperlpr_dir_path)
-
- def recognization_done_slot(self, result_list):
- row = result_list[0]
- res_set = result_list[1]
- self.fill_table_widget_with_res_info(res_set, row)
-
- if row == len(self.image_filename_list) - 1:
- total_number = len(self.image_filename_list)
-
- row_count = self.hyperlpr_tableview.rowCount()
- if row_count > total_number:
- self.hyperlpr_tableview.removeRow(total_number)
-
- self.hyperlpr_tableview.insertRow(total_number)
-
- item0 = QTableWidgetItem()
- item0.setTextAlignment(Qt.AlignCenter)
- self.hyperlpr_tableview.setItem(total_number, 0, item0)
- self.hyperlpr_tableview.item(
- total_number, 0).setText(
- "统计结果")
-
- item1 = QTableWidgetItem()
- item1.setTextAlignment(Qt.AlignCenter)
- self.hyperlpr_tableview.setItem(total_number, 1, item1)
- self.hyperlpr_tableview.item(
- total_number,
- 1).setText(
- "{0} / {1} = {2: .3f}".format(
- self.segmentation_recognition_correct_number,
- total_number,
- self.segmentation_recognition_correct_number /
- total_number))
-
- item2 = QTableWidgetItem()
- item2.setTextAlignment(Qt.AlignCenter)
- self.hyperlpr_tableview.setItem(total_number, 2, item2)
-
- item3 = QTableWidgetItem()
- item3.setTextAlignment(Qt.AlignCenter)
- self.hyperlpr_tableview.setItem(total_number, 3, item3)
- self.hyperlpr_tableview.item(
- total_number, 3).setText(
- "{0} / {1} = {2: .3f}".format(self.e2e_recognization_correct_number, total_number,
- self.e2e_recognization_correct_number / total_number))
-
- item4 = QTableWidgetItem()
- item4.setTextAlignment(Qt.AlignCenter)
- self.hyperlpr_tableview.setItem(total_number, 4, item4)
- self.hyperlpr_tableview.item(
- total_number, 4).setText(
- "{0} / {1} = {2: .3f}".format(self.color_correct_number, total_number,
- self.color_correct_number / total_number))
-
- item5 = QTableWidgetItem()
- item5.setTextAlignment(Qt.AlignCenter)
- self.hyperlpr_tableview.setItem(total_number, 5, item5)
-
- def fill_table_widget_with_res_info(self, res_set, row):
- image_filename_text = self.image_filename_list[row]
- if len(res_set) > 0:
-
- self.hyperlpr_tableview.item(row, 1).setText(res_set[0][0])
- if res_set[0][0] in image_filename_text:
- self.hyperlpr_tableview.item(
- row, 1).setForeground(
- QBrush(
- QColor(
- 0, 0, 255)))
- self.segmentation_recognition_correct_number += 1
- else:
- self.hyperlpr_tableview.item(
- row, 1).setForeground(
- QBrush(
- QColor(
- 255, 0, 0)))
-
- self.hyperlpr_tableview.item(
- row, 2).setText(
- "%.3f" %
- (float(
- res_set[0][1])))
-
- self.hyperlpr_tableview.item(row, 3).setText(res_set[0][3])
- if res_set[0][3] in image_filename_text:
- self.hyperlpr_tableview.item(
- row, 3).setForeground(
- QBrush(
- QColor(
- 0, 0, 255)))
- self.color_correct_number += 1
- else:
- self.hyperlpr_tableview.item(
- row, 3).setForeground(
- QBrush(
- QColor(
- 255, 0, 0)))
-
- self.hyperlpr_tableview.item(row, 4).setText(res_set[0][4])
- if res_set[0][4] in image_filename_text:
- self.hyperlpr_tableview.item(
- row, 4).setForeground(
- QBrush(
- QColor(
- 0, 0, 255)))
- self.e2e_recognization_correct_number += 1
- else:
- self.hyperlpr_tableview.item(
- row, 4).setForeground(
- QBrush(
- QColor(
- 255, 0, 0)))
-
- self.hyperlpr_tableview.item(
- row, 5).setText(
- "%.3f" %
- (float(
- res_set[0][5])))
-
-
-if __name__ == '__main__':
-
- app = QApplication(sys.argv)
-
- hyper_lpr_widow = HyperLprWindow()
-
- hyper_lpr_widow.showMaximized()
-
- sys.exit(app.exec_())
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 8dada3e..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "{}"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright {yyyy} {name of copyright owner}
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/Prj-Android/.gitignore b/Prj-Android/.gitignore
index b29764e..aa724b7 100644
--- a/Prj-Android/.gitignore
+++ b/Prj-Android/.gitignore
@@ -1,9 +1,15 @@
*.iml
.gradle
/local.properties
-/.idea
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
-.src/main/cpp/CMakeFiles
+.cxx
+local.properties
diff --git a/Prj-Android/README.md b/Prj-Android/README.md
deleted file mode 100644
index 6563c02..0000000
--- a/Prj-Android/README.md
+++ /dev/null
@@ -1,17 +0,0 @@
-HyperLPR Android Demo集成指南
-
-Prj-Android 是 HyperLPR的一部分,集成时需要引入HyperLPR中的依赖文件以及环境
-
-主要依赖如下 a、模型文件 b、NDK
-
-集成方法如下:
-
-a、引入模型文件:请到HyperLRP中的Linux项目下拷贝模型model目录下的模型文件(https://github.com/zeusees/HyperLPR/tree/master/Prj-Linux/lpr/model),
- 到Android项目下的asset/pr目录中(如果没有pr,请自行建立,如果拷贝不正确,可能会出现模型文件找不到的问题。
-
-
-b、NDK,项目依赖的NDK版本为ndk16、请开发者自行修改为自己的NDK路径
-
-
-
-
diff --git a/Prj-Android/app/.gitignore b/Prj-Android/app/.gitignore
old mode 100755
new mode 100644
index e072d26..42afabf
--- a/Prj-Android/app/.gitignore
+++ b/Prj-Android/app/.gitignore
@@ -1,12 +1 @@
-*.iml
-app.iml
-.gradle
-/local.properties
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-.DS_Store
-/build
-/captures
-.externalNativeBuild
-.src/main/cpp/CMakeFiles
\ No newline at end of file
+/build
\ No newline at end of file
diff --git a/Prj-Android/app/CMakeLists.txt b/Prj-Android/app/CMakeLists.txt
deleted file mode 100755
index 76ab34a..0000000
--- a/Prj-Android/app/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# 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)
-add_subdirectory(src/main/cpp)
diff --git a/Prj-Android/app/app.iml b/Prj-Android/app/app.iml
deleted file mode 100755
index 82d9eee..0000000
--- a/Prj-Android/app/app.iml
+++ /dev/null
@@ -1,164 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- generateDebugSources
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Prj-Android/app/build.gradle b/Prj-Android/app/build.gradle
old mode 100755
new mode 100644
index 59b7e2f..0e2a3a7
--- a/Prj-Android/app/build.gradle
+++ b/Prj-Android/app/build.gradle
@@ -1,65 +1,44 @@
-apply plugin: 'com.android.application'
+plugins {
+ id 'com.android.application'
+}
android {
- compileSdkVersion 27
- buildToolsVersion '27.0.3'
+ compileSdk 28
+
defaultConfig {
- applicationId "pr.platerecognization"
- minSdkVersion 19
- targetSdkVersion 22
+ applicationId "com.hyperai.hyperlpr_sdk_demo"
+ minSdk 22
+ targetSdk 28
versionCode 1
versionName "1.0"
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
- externalNativeBuild {
- cmake {
- cppFlags "-std=c++11"
-// cppFlags "-std=c++11 -frtti -fexceptions"
-// abiFilters 'armeabi-v7a'
- arguments '-DANDROID_STL=gnustl_static'
-// arguments '-DANDROID_STL=gnustl_shared'
-// '-DANDROID_ABI=armeabi-v7a'
- }
- }
- ndk {
- // Specifies the ABI configurations of your native
- // libraries Gradle should build and package with your APK.
-// abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'mips64'
- abiFilters 'armeabi-v7a'
- }
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
+
buildTypes {
release {
minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
-
- sourceSets.main {
- jni.srcDirs = [] // This prevents the auto generation of Android.mk
- jniLibs.srcDirs = ['libs','src/main/cpp/opencv342/sdk/native/libs']
- //jniLibs.srcDirs =['src/main/libs','src/main/jniLibs']
- }
- /* externalNativeBuild {
- cmake {
- path 'src/main/cpp/CMakeLists.txt'
- }
- }*/
- externalNativeBuild {
- cmake {
- path 'src/main/cpp/CMakeLists.txt'
- }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- implementation 'com.android.support:appcompat-v7:27.1.1'
- implementation 'com.android.support.constraint:constraint-layout:1.1.2'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'com.android.support.test:runner:1.0.2'
- androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
- api 'com.github.bumptech.glide:glide:3.8.0'
+
implementation 'org.greenrobot:eventbus:3.0.0'
- implementation project(':openCVLibrary342')
+ implementation 'com.android.support:appcompat-v7:28.0.0'
+ implementation 'com.android.support.constraint:constraint-layout:2.0.4'
+
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'com.google.android.material:material:1.3.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ implementation project(path: ':hyperlpr3')
+ testImplementation 'junit:junit:4.+'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.2'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
+ implementation 'com.github.smuyyh:ImageSelector:3.0'
}
\ No newline at end of file
diff --git a/Prj-Android/app/proguard-rules.pro b/Prj-Android/app/proguard-rules.pro
old mode 100755
new mode 100644
index 2a84321..481bb43
--- a/Prj-Android/app/proguard-rules.pro
+++ b/Prj-Android/app/proguard-rules.pro
@@ -1,14 +1,10 @@
# Add project specific ProGuard rules here.
-# By default, the flags in this file are appended to flags specified
-# in /Users/yujinke/Library/Android/sdk/tools/proguard/proguard-android.txt
-# You can edit the include path and order by changing the proguardFiles
-# directive in build.gradle.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
-# Add any project specific keep options here:
-
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
@@ -22,4 +18,4 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
-#-renamesourcefileattribute SourceFile
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/Prj-Android/app/src/androidTest/java/com/hyperai/hyperlpr_sdk_demo/ExampleInstrumentedTest.java b/Prj-Android/app/src/androidTest/java/com/hyperai/hyperlpr_sdk_demo/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..08c1862
--- /dev/null
+++ b/Prj-Android/app/src/androidTest/java/com/hyperai/hyperlpr_sdk_demo/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.hyperai.hyperlpr_sdk_demo;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("com.hyperai.hyperlpr_sdk_demo", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/Prj-Android/app/src/main/AndroidManifest.xml b/Prj-Android/app/src/main/AndroidManifest.xml
old mode 100755
new mode 100644
index 819ca6b..0843522
--- a/Prj-Android/app/src/main/AndroidManifest.xml
+++ b/Prj-Android/app/src/main/AndroidManifest.xml
@@ -1,59 +1,59 @@
-
+ xmlns:tools="http://schemas.android.com/tools"
+ package="com.hyperai.hyperlpr_sdk_demo">
-
+
-
-
-
-
-
-
-
-
+
+
+
+
-
+
-
-
+
-
-
+
-
-
-
+ android:theme="@style/Theme.HyperLPR_SDK_Demo">
+
-
+
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/Prj-Android/app/src/main/assets/pr/cascade.xml b/Prj-Android/app/src/main/assets/pr/cascade.xml
deleted file mode 100755
index 277775b..0000000
--- a/Prj-Android/app/src/main/assets/pr/cascade.xml
+++ /dev/null
@@ -1,12117 +0,0 @@
-
-
-
- BOOST
- HAAR
- 13
- 51
-
- GAB
- 9.9900001287460327e-001
- 5.0000000000000000e-001
- 9.4999999999999996e-001
- 1
- 100
-
- 0
- 1
- ALL
- 20
-
-
- <_>
- 8
- -1.9158077239990234e+000
-
- <_>
-
- 0 -1 344 -8.1478752195835114e-002
-
- 6.2639594078063965e-001 -8.1564724445343018e-001
- <_>
-
- 0 -1 701 -1.2957378290593624e-002
-
- 7.7114331722259521e-001 -4.9504086375236511e-001
- <_>
-
- 0 -1 687 -9.2470366507768631e-003
-
- 8.1202191114425659e-001 -2.8070560097694397e-001
- <_>
-
- 0 -1 614 1.2374955229461193e-002
-
- -2.5367051362991333e-001 7.3795551061630249e-001
- <_>
-
- 0 -1 299 -4.7858944162726402e-003
-
- 7.1150565147399902e-001 -3.0462509393692017e-001
- <_>
-
- 0 -1 297 3.8920845836400986e-003
-
- -2.8375166654586792e-001 7.3174893856048584e-001
- <_>
-
- 0 -1 814 -8.8258963078260422e-003
-
- 7.5333666801452637e-001 -1.9880458712577820e-001
- <_>
-
- 0 -1 845 -6.7375516518950462e-003
-
- 7.5299704074859619e-001 -2.3570337891578674e-001
-
- <_>
- 12
- -2.2599112987518311e+000
-
- <_>
-
- 0 -1 577 -1.4449171721935272e-002
-
- 5.5890566110610962e-001 -7.6307392120361328e-001
- <_>
-
- 0 -1 364 -3.8289055228233337e-002
-
- 5.1702296733856201e-001 -5.7946079969406128e-001
- <_>
-
- 0 -1 124 -1.4895259402692318e-002
-
- 6.1277741193771362e-001 -3.2827928662300110e-001
- <_>
-
- 0 -1 579 8.3044255152344704e-003
-
- -3.3253005146980286e-001 7.2171914577484131e-001
- <_>
-
- 0 -1 314 6.0594235546886921e-003
-
- -3.2760250568389893e-001 4.9508789181709290e-001
- <_>
-
- 0 -1 699 -6.8011749535799026e-003
-
- 6.6238498687744141e-001 -2.4112002551555634e-001
- <_>
-
- 0 -1 295 -1.1183910071849823e-002
-
- 7.1757602691650391e-001 -2.0989039540290833e-001
- <_>
-
- 0 -1 767 1.3139605522155762e-002
-
- -1.8845251202583313e-001 6.7252415418624878e-001
- <_>
-
- 0 -1 689 -6.1739999800920486e-003
-
- 6.3675141334533691e-001 -2.4877758324146271e-001
- <_>
-
- 0 -1 230 -9.2421043664216995e-003
-
- 6.5140277147293091e-001 -2.1352872252464294e-001
- <_>
-
- 0 -1 48 -1.0526084899902344e-001
-
- -9.0194213390350342e-001 1.8239501118659973e-001
- <_>
-
- 0 -1 281 1.2764739990234375e-001
-
- 1.6771897673606873e-001 -7.7668786048889160e-001
-
- <_>
- 14
- -2.6526770591735840e+000
-
- <_>
-
- 0 -1 829 -1.3842798769474030e-002
-
- 4.1735208034515381e-001 -7.4295550584793091e-001
- <_>
-
- 0 -1 97 1.4765590429306030e-002
-
- -5.1845699548721313e-001 5.0078016519546509e-001
- <_>
-
- 0 -1 21 3.1671046745032072e-003
-
- -3.2739469408988953e-001 5.1253867149353027e-001
- <_>
-
- 0 -1 812 -9.5202140510082245e-003
-
- 7.1236211061477661e-001 -2.3344238102436066e-001
- <_>
-
- 0 -1 703 -1.2149499729275703e-002
-
- 6.4311891794204712e-001 -2.5991156697273254e-001
- <_>
-
- 0 -1 385 -1.0172967612743378e-001
-
- -7.3093742132186890e-001 2.3339104652404785e-001
- <_>
-
- 0 -1 858 -6.2750680372118950e-003
-
- 6.4128917455673218e-001 -2.3738093674182892e-001
- <_>
-
- 0 -1 518 1.5905253589153290e-002
-
- -2.3312157392501831e-001 5.6561905145645142e-001
- <_>
-
- 0 -1 873 -5.6511810980737209e-003
-
- 6.3098442554473877e-001 -2.2128470242023468e-001
- <_>
-
- 0 -1 229 1.0334834456443787e-002
-
- -1.6205528378486633e-001 7.1688497066497803e-001
- <_>
-
- 0 -1 373 -1.4500595629215240e-002
-
- 5.2634650468826294e-001 -2.5339555740356445e-001
- <_>
-
- 0 -1 720 8.4515195339918137e-003
-
- -1.9005575776100159e-001 6.2645190954208374e-001
- <_>
-
- 0 -1 519 1.6612716019153595e-002
-
- -1.9349065423011780e-001 6.6134274005889893e-001
- <_>
-
- 0 -1 561 1.0179553180932999e-002
-
- -1.9179263710975647e-001 6.1396795511245728e-001
-
- <_>
- 16
- -2.2411971092224121e+000
-
- <_>
-
- 0 -1 344 -9.5315366983413696e-002
-
- 2.0634920895099640e-001 -7.6994550228118896e-001
- <_>
-
- 0 -1 577 -1.1904314160346985e-002
-
- 4.6030580997467041e-001 -4.5124572515487671e-001
- <_>
-
- 0 -1 736 8.0967023968696594e-003
-
- -2.9279080033302307e-001 5.1358801126480103e-001
- <_>
-
- 0 -1 766 -1.4768393710255623e-002
-
- 6.9709998369216919e-001 -1.9789521396160126e-001
- <_>
-
- 0 -1 332 -7.3709283024072647e-003
-
- 6.4356821775436401e-001 -1.9384047389030457e-001
- <_>
-
- 0 -1 331 7.4571794830262661e-003
-
- -2.0553122460842133e-001 6.7929607629776001e-001
- <_>
-
- 0 -1 943 5.8717206120491028e-003
-
- -1.9075798988342285e-001 6.3178658485412598e-001
- <_>
-
- 0 -1 563 -6.3720787875354290e-003
-
- 6.1133956909179688e-001 -1.9197526574134827e-001
- <_>
-
- 0 -1 185 -1.7508253455162048e-002
-
- 5.5003905296325684e-001 -2.0409923791885376e-001
- <_>
-
- 0 -1 539 -4.2271558195352554e-003
-
- 5.9483224153518677e-001 -2.0080061256885529e-001
- <_>
-
- 0 -1 919 5.0116949714720249e-003
-
- -1.8873518705368042e-001 5.8758223056793213e-001
- <_>
-
- 0 -1 298 8.4183514118194580e-002
-
- 1.9158974289894104e-001 -7.3058295249938965e-001
- <_>
-
- 0 -1 776 4.5591969974339008e-003
-
- -2.1568548679351807e-001 5.4940956830978394e-001
- <_>
-
- 0 -1 776 -3.6774221807718277e-003
-
- 6.5714693069458008e-001 -2.3908025026321411e-001
- <_>
-
- 0 -1 844 1.3156082481145859e-002
-
- -1.6889381408691406e-001 5.4372692108154297e-001
- <_>
-
- 0 -1 508 1.2298718094825745e-002
-
- -1.7204846441745758e-001 5.3114622831344604e-001
-
- <_>
- 20
- -2.3278577327728271e+000
-
- <_>
-
- 0 -1 684 -4.2540580034255981e-002
-
- 2.4365724623203278e-001 -7.2478657960891724e-001
- <_>
-
- 0 -1 317 -2.1006479859352112e-002
-
- 3.9405155181884766e-001 -5.1031738519668579e-001
- <_>
-
- 0 -1 13 1.2750471010804176e-002
-
- -2.6155433058738708e-001 5.3219014406204224e-001
- <_>
-
- 0 -1 12 -1.0928934812545776e-001
-
- -7.9762983322143555e-001 1.6522131860256195e-001
- <_>
-
- 0 -1 742 -8.2451943308115005e-003
-
- 6.1570894718170166e-001 -1.6545474529266357e-001
- <_>
-
- 0 -1 651 -6.1263595707714558e-003
-
- 6.5689104795455933e-001 -1.6943360865116119e-001
- <_>
-
- 0 -1 650 5.0333887338638306e-003
-
- -1.9622130692005157e-001 5.7385104894638062e-001
- <_>
-
- 0 -1 34 1.0666935704648495e-002
-
- -2.1881586313247681e-001 4.5024806261062622e-001
- <_>
-
- 0 -1 291 -1.0632696561515331e-002
-
- 6.3769024610519409e-001 -1.6428084671497345e-001
- <_>
-
- 0 -1 237 -1.4020981267094612e-002
-
- 6.1583393812179565e-001 -1.6708594560623169e-001
- <_>
-
- 0 -1 765 1.2589931488037109e-002
-
- -2.0485720038414001e-001 4.7809442877769470e-001
- <_>
-
- 0 -1 753 -1.3003132306039333e-002
-
- 6.5572524070739746e-001 -1.6035726666450500e-001
- <_>
-
- 0 -1 222 -5.7425271719694138e-002
-
- -8.2782661914825439e-001 1.4296714961528778e-001
- <_>
-
- 0 -1 833 -3.7263054400682449e-003
-
- 4.9777820706367493e-001 -2.1036401391029358e-001
- <_>
-
- 0 -1 825 1.2980616651475430e-002
-
- -1.7779336869716644e-001 6.1292153596878052e-001
- <_>
-
- 0 -1 276 -3.4886042121797800e-003
-
- 4.1184583306312561e-001 -2.0970273017883301e-001
- <_>
-
- 0 -1 813 -1.1452829465270042e-002
-
- 5.6084501743316650e-001 -1.5244032442569733e-001
- <_>
-
- 0 -1 321 3.7844986654818058e-003
-
- -2.8913837671279907e-001 2.7224406599998474e-001
- <_>
-
- 0 -1 876 -4.7596222721040249e-003
-
- 5.2785235643386841e-001 -1.5034112334251404e-001
- <_>
-
- 0 -1 896 -1.7377159092575312e-003
-
- 5.5644094944000244e-001 -2.0121455192565918e-001
-
- <_>
- 28
- -2.3750255107879639e+000
-
- <_>
-
- 0 -1 347 -1.0104553401470184e-001
-
- 1.3032685220241547e-001 -7.3142945766448975e-001
- <_>
-
- 0 -1 596 -1.8494745716452599e-002
-
- 5.6178814172744751e-001 -3.3690422773361206e-001
- <_>
-
- 0 -1 629 1.0897371917963028e-002
-
- -2.6694682240486145e-001 4.6661883592605591e-001
- <_>
-
- 0 -1 839 8.4953904151916504e-003
-
- -2.0583645999431610e-001 4.6663123369216919e-001
- <_>
-
- 0 -1 44 6.3092201948165894e-002
-
- 1.2652839720249176e-001 -7.4331611394882202e-001
- <_>
-
- 0 -1 305 -4.8850802704691887e-003
-
- 5.1036185026168823e-001 -1.7127794027328491e-001
- <_>
-
- 0 -1 295 -1.2086534872651100e-002
-
- 5.3874844312667847e-001 -1.7047831416130066e-001
- <_>
-
- 0 -1 163 -4.0194295346736908e-002
-
- 6.0334587097167969e-001 -1.8293543159961700e-001
- <_>
-
- 0 -1 265 -9.7945984452962875e-003
-
- 4.8900371789932251e-001 -1.7746040225028992e-001
- <_>
-
- 0 -1 597 6.7133754491806030e-003
-
- -1.8603576719760895e-001 4.9050629138946533e-001
- <_>
-
- 0 -1 128 1.5135381370782852e-002
-
- 1.5555633604526520e-001 -6.6330802440643311e-001
- <_>
-
- 0 -1 480 7.4470564723014832e-003
-
- 1.2465479969978333e-001 -6.3456755876541138e-001
- <_>
-
- 0 -1 559 -1.7742723226547241e-002
-
- 4.8904901742935181e-001 -1.6264849901199341e-001
- <_>
-
- 0 -1 821 -1.5695080161094666e-002
-
- 4.1306030750274658e-001 -1.9036959111690521e-001
- <_>
-
- 0 -1 819 -4.3798778206110001e-003
-
- 4.8768985271453857e-001 -1.5558160841464996e-001
- <_>
-
- 0 -1 836 -4.8424974083900452e-003
-
- 4.6657896041870117e-001 -1.6847038269042969e-001
- <_>
-
- 0 -1 90 7.4649546295404434e-003
-
- -1.7167872190475464e-001 4.3042477965354919e-001
- <_>
-
- 0 -1 883 5.1524871960282326e-003
-
- -1.4530055224895477e-001 4.7056230902671814e-001
- <_>
-
- 0 -1 890 9.8812151700258255e-003
-
- -1.4264582097530365e-001 5.0057184696197510e-001
- <_>
-
- 0 -1 393 -3.0181273818016052e-002
-
- -6.5408444404602051e-001 1.0674032568931580e-001
- <_>
-
- 0 -1 694 9.2962123453617096e-003
-
- -1.4381234347820282e-001 4.9470436573028564e-001
- <_>
-
- 0 -1 77 -7.6252631843090057e-003
-
- -5.2033776044845581e-001 1.3706678152084351e-001
- <_>
-
- 0 -1 801 -1.1497072875499725e-002
-
- 3.4252560138702393e-001 -1.9132094085216522e-001
- <_>
-
- 0 -1 670 -4.4177635572850704e-003
-
- 4.6443006396293640e-001 -1.3389693200588226e-001
- <_>
-
- 0 -1 647 -2.4282713420689106e-003
-
- 4.1310977935791016e-001 -1.3224220275878906e-001
- <_>
-
- 0 -1 686 1.0079141706228256e-002
-
- -1.3342842459678650e-001 5.5696302652359009e-001
- <_>
-
- 0 -1 570 3.5632357001304626e-002
-
- 9.1464981436729431e-002 -7.0863521099090576e-001
- <_>
-
- 0 -1 840 -1.9085695967078209e-003
-
- 2.6823535561561584e-001 -1.9665902853012085e-001
-
- <_>
- 34
- -2.5052807331085205e+000
-
- <_>
-
- 0 -1 268 1.5469970181584358e-002
-
- -6.7369276285171509e-001 3.0393996834754944e-001
- <_>
-
- 0 -1 700 -2.2830318659543991e-002
-
- 4.9829742312431335e-001 -3.5193654894828796e-001
- <_>
-
- 0 -1 521 1.8841657787561417e-002
-
- -2.1037499606609344e-001 4.8866468667984009e-001
- <_>
-
- 0 -1 262 1.1541565880179405e-002
-
- -1.8598809838294983e-001 5.2916365861892700e-001
- <_>
-
- 0 -1 219 -2.4122973904013634e-002
-
- 5.2869701385498047e-001 -1.6163693368434906e-001
- <_>
-
- 0 -1 6 1.4711560681462288e-002
-
- -2.5017279386520386e-001 3.2298168540000916e-001
- <_>
-
- 0 -1 520 -1.5706669539213181e-002
-
- 5.0967657566070557e-001 -1.5732303261756897e-001
- <_>
-
- 0 -1 948 -4.1158739477396011e-003
-
- 4.9462157487869263e-001 -1.2155625224113464e-001
- <_>
-
- 0 -1 770 -1.0694706812500954e-002
-
- 6.1407995223999023e-001 -1.2956763803958893e-001
- <_>
-
- 0 -1 387 -3.6484465003013611e-002
-
- 3.1439977884292603e-001 -2.2812500596046448e-001
- <_>
-
- 0 -1 345 5.4322574287652969e-002
-
- -8.7467961013317108e-002 7.1243762969970703e-001
- <_>
-
- 0 -1 250 -8.9914854615926743e-003
-
- 3.7887179851531982e-001 -1.7758503556251526e-001
- <_>
-
- 0 -1 52 1.5299601480364799e-002
-
- 1.5142892301082611e-001 -5.4104751348495483e-001
- <_>
-
- 0 -1 792 -6.0345130041241646e-003
-
- 3.8750106096267700e-001 -1.7849484086036682e-001
- <_>
-
- 0 -1 610 -2.0873975008726120e-003
-
- -5.5879276990890503e-001 1.3142852485179901e-001
- <_>
-
- 0 -1 642 -2.0619889255613089e-003
-
- -5.1919680833816528e-001 1.0321786254644394e-001
- <_>
-
- 0 -1 259 3.6544300615787506e-002
-
- -1.6965624690055847e-001 3.9208900928497314e-001
- <_>
-
- 0 -1 382 1.4528267784044147e-003
-
- -3.4218248724937439e-001 1.8518145382404327e-001
- <_>
-
- 0 -1 196 -2.6956547051668167e-002
-
- -8.3279663324356079e-001 7.7962644398212433e-002
- <_>
-
- 0 -1 533 -1.0518556460738182e-002
-
- 4.5597425103187561e-001 -1.4934070408344269e-001
- <_>
-
- 0 -1 740 5.4534617811441422e-003
-
- -1.5347433090209961e-001 3.5846599936485291e-001
- <_>
-
- 0 -1 534 -5.6011183187365532e-003
-
- 3.6314359307289124e-001 -1.5886513888835907e-001
- <_>
-
- 0 -1 927 1.0399374179542065e-002
-
- -1.1159978061914444e-001 4.9891829490661621e-001
- <_>
-
- 0 -1 41 2.6076715439558029e-002
-
- -2.1667334437370300e-001 2.5659701228141785e-001
- <_>
-
- 0 -1 715 -7.3732812888920307e-003
-
- 5.8327084779739380e-001 -1.0727929323911667e-001
- <_>
-
- 0 -1 882 -5.6875580921769142e-003
-
- 4.0847277641296387e-001 -1.2561751902103424e-001
- <_>
-
- 0 -1 891 1.3321589678525925e-002
-
- -1.2537255883216858e-001 4.4824957847595215e-001
- <_>
-
- 0 -1 168 -1.8619614839553833e-001
-
- -7.1703630685806274e-001 7.7993653714656830e-002
- <_>
-
- 0 -1 190 3.3796064555644989e-002
-
- -1.3172915577888489e-001 4.1404765844345093e-001
- <_>
-
- 0 -1 530 4.0178038179874420e-003
-
- -1.8571788072586060e-001 2.7401688694953918e-001
- <_>
-
- 0 -1 555 1.6669608652591705e-002
-
- 7.5644508004188538e-002 -6.8869042396545410e-001
- <_>
-
- 0 -1 406 4.7584358602762222e-002
-
- 8.2619942724704742e-002 -5.8818364143371582e-001
- <_>
-
- 0 -1 537 2.5073587894439697e-003
-
- -1.4251622557640076e-001 3.3965954184532166e-001
- <_>
-
- 0 -1 638 1.4513431116938591e-002
-
- -1.4366999268531799e-001 3.2603174448013306e-001
-
- <_>
- 42
- -2.4546041488647461e+000
-
- <_>
-
- 0 -1 340 -9.4746887683868408e-002
-
- 1.1788145639002323e-002 -7.5736826658248901e-001
- <_>
-
- 0 -1 577 -1.5985764563083649e-002
-
- 3.4271994233131409e-001 -3.7916901707649231e-001
- <_>
-
- 0 -1 630 1.9708804786205292e-002
-
- -2.2393602132797241e-001 4.9053853750228882e-001
- <_>
-
- 0 -1 96 1.6178630292415619e-002
-
- -2.0412905514240265e-001 3.4104099869728088e-001
- <_>
-
- 0 -1 319 1.0606624186038971e-001
-
- -1.0737416148185730e-001 6.7443412542343140e-001
- <_>
-
- 0 -1 83 -6.7316116765141487e-003
-
- 3.4080076217651367e-001 -2.2706831991672516e-001
- <_>
-
- 0 -1 634 4.0689492598176003e-003
-
- -1.4782951772212982e-001 4.1778662800788879e-001
- <_>
-
- 0 -1 686 -1.3378994539380074e-002
-
- 6.8167924880981445e-001 -1.0507009923458099e-001
- <_>
-
- 0 -1 786 -1.8129471689462662e-002
-
- 5.0995999574661255e-001 -1.3223616778850555e-001
- <_>
-
- 0 -1 646 -8.9250747114419937e-003
-
- 5.0829160213470459e-001 -1.0886437445878983e-001
- <_>
-
- 0 -1 711 6.1906888149678707e-003
-
- -1.1881013214588165e-001 4.9430772662162781e-001
- <_>
-
- 0 -1 575 -3.4704633057117462e-002
-
- -6.8778192996978760e-001 9.2318676412105560e-002
- <_>
-
- 0 -1 189 -9.7849890589714050e-003
-
- 2.0124578475952148e-001 -2.8525698184967041e-001
- <_>
-
- 0 -1 479 1.4655515551567078e-003
-
- 1.0351686179637909e-001 -6.3454014062881470e-001
- <_>
-
- 0 -1 513 -3.5405270755290985e-002
-
- -7.6147061586380005e-001 6.0781378298997879e-002
- <_>
-
- 0 -1 23 9.1620441526174545e-003
-
- 8.2090407609939575e-002 -5.3804397583007813e-001
- <_>
-
- 0 -1 838 6.7096878774464130e-003
-
- -1.1302943527698517e-001 4.6365195512771606e-001
- <_>
-
- 0 -1 820 -1.0268911719322205e-002
-
- 5.8097857236862183e-001 -1.0859654098749161e-001
- <_>
-
- 0 -1 441 2.9750142246484756e-002
-
- 9.3299955129623413e-002 -5.4268807172775269e-001
- <_>
-
- 0 -1 726 -5.5990684777498245e-003
-
- 4.9949660897254944e-001 -1.0594012588262558e-001
- <_>
-
- 0 -1 714 4.8061953857541084e-003
-
- -1.1477116495370865e-001 4.3569833040237427e-001
- <_>
-
- 0 -1 637 -4.0460027754306793e-002
-
- -7.7711206674575806e-001 7.3132880032062531e-002
- <_>
-
- 0 -1 53 4.5344540849328041e-003
-
- -1.6310065984725952e-001 3.0750447511672974e-001
- <_>
-
- 0 -1 479 -1.4339694753289223e-003
-
- -5.2921229600906372e-001 8.8739573955535889e-002
- <_>
-
- 0 -1 396 -4.5565411448478699e-002
-
- -7.4928385019302368e-001 4.8912040889263153e-002
- <_>
-
- 0 -1 330 -8.3342632278800011e-003
-
- 4.6582534909248352e-001 -1.0161897540092468e-001
- <_>
-
- 0 -1 834 -1.0381949134171009e-002
-
- 3.0994066596031189e-001 -1.3267418742179871e-001
- <_>
-
- 0 -1 831 1.6984764486551285e-002
-
- -9.9871687591075897e-002 4.9527561664581299e-001
- <_>
-
- 0 -1 376 -1.3278885744512081e-003
-
- 3.6983770132064819e-001 -1.1738168448209763e-001
- <_>
-
- 0 -1 760 -3.1804253812879324e-003
-
- -8.9759206771850586e-001 4.3921347707509995e-002
- <_>
-
- 0 -1 828 -1.9149896688759327e-003
-
- 1.9146692752838135e-001 -2.0268803834915161e-001
- <_>
-
- 0 -1 841 -1.8405792070552707e-003
-
- 2.1319428086280823e-001 -1.8382850289344788e-001
- <_>
-
- 0 -1 259 3.5366363823413849e-002
-
- -1.2205254286527634e-001 3.0300119519233704e-001
- <_>
-
- 0 -1 354 -3.7630870938301086e-003
-
- 3.0492320656776428e-001 -1.2932489812374115e-001
- <_>
-
- 0 -1 732 -1.1243980843573809e-003
-
- -4.9750825762748718e-001 8.0560393631458282e-002
- <_>
-
- 0 -1 749 -2.2356058470904827e-003
-
- -6.7946660518646240e-001 5.2887793630361557e-002
- <_>
-
- 0 -1 536 -2.2717624902725220e-002
-
- 4.2686942219734192e-001 -1.0260385274887085e-001
- <_>
-
- 0 -1 280 9.2372611165046692e-002
-
- 7.9670898616313934e-002 -5.2335608005523682e-001
- <_>
-
- 0 -1 658 -1.0431142151355743e-001
-
- -7.4446302652359009e-001 4.6288352459669113e-002
- <_>
-
- 0 -1 944 7.4872868135571480e-003
-
- -1.1977240443229675e-001 3.1791850924491882e-001
- <_>
-
- 0 -1 228 -2.4358350783586502e-002
-
- 1.7944122850894928e-001 -2.0157346129417419e-001
- <_>
-
- 0 -1 47 4.9624212086200714e-002
-
- -1.0701860487461090e-001 3.7854740023612976e-001
-
- <_>
- 50
- -2.6502745151519775e+000
-
- <_>
-
- 0 -1 431 2.1381884813308716e-002
-
- -7.6310330629348755e-001 -7.8235723078250885e-002
- <_>
-
- 0 -1 623 9.7743803635239601e-003
-
- -3.8874423503875732e-001 2.9614463448524475e-001
- <_>
-
- 0 -1 19 2.9336847364902496e-002
-
- -2.1392610669136047e-001 4.4257661700248718e-001
- <_>
-
- 0 -1 645 1.2054111808538437e-002
-
- -1.2168737500905991e-001 6.5890479087829590e-001
- <_>
-
- 0 -1 392 1.1729352176189423e-002
-
- -1.2235984951257706e-001 4.8555457592010498e-001
- <_>
-
- 0 -1 588 -1.0436945594847202e-003
-
- -6.1764669418334961e-001 1.1390741914510727e-001
- <_>
-
- 0 -1 71 -2.5775061920285225e-002
-
- -6.0323065519332886e-001 1.2372459471225739e-001
- <_>
-
- 0 -1 872 -4.0599796921014786e-003
-
- 3.5508742928504944e-001 -1.9819863140583038e-001
- <_>
-
- 0 -1 643 -1.9134972244501114e-002
-
- 4.7154670953750610e-001 -1.4655594527721405e-001
- <_>
-
- 0 -1 483 6.5218633972108364e-003
-
- 1.2207052111625671e-001 -6.0890328884124756e-001
- <_>
-
- 0 -1 757 -1.4126582071185112e-002
-
- 3.3305764198303223e-001 -1.8242211639881134e-001
- <_>
-
- 0 -1 565 -8.3793615922331810e-003
-
- 4.6099957823753357e-001 -1.0809499770402908e-001
- <_>
-
- 0 -1 455 -1.2584301875904202e-003
-
- -5.1634973287582397e-001 1.0520447790622711e-001
- <_>
-
- 0 -1 203 -5.1234811544418335e-002
-
- -7.5237458944320679e-001 5.3416907787322998e-002
- <_>
-
- 0 -1 584 1.6728173941373825e-002
-
- -1.4094479382038116e-001 3.8169395923614502e-001
- <_>
-
- 0 -1 184 -4.5198453590273857e-003
-
- 3.0100575089454651e-001 -1.6970130801200867e-001
- <_>
-
- 0 -1 686 1.0796479880809784e-002
-
- -1.1680302023887634e-001 4.6733006834983826e-001
- <_>
-
- 0 -1 860 5.4673422127962112e-003
-
- -1.3090577721595764e-001 3.4922021627426147e-001
- <_>
-
- 0 -1 902 6.2447679229080677e-003
-
- -1.0570991784334183e-001 4.4209754467010498e-001
- <_>
-
- 0 -1 892 -8.6985006928443909e-003
-
- 4.4582247734069824e-001 -1.1208640784025192e-001
- <_>
-
- 0 -1 86 5.8012232184410095e-002
-
- 5.6753028184175491e-002 -7.8348731994628906e-001
- <_>
-
- 0 -1 158 -1.9159330055117607e-002
-
- 2.1710830926895142e-001 -2.1206925809383392e-001
- <_>
-
- 0 -1 346 1.4331589639186859e-001
-
- -6.5506041049957275e-002 8.3924996852874756e-001
- <_>
-
- 0 -1 327 -7.4841668829321861e-003
-
- 4.4598889350891113e-001 -8.4189794957637787e-002
- <_>
-
- 0 -1 585 -3.1711272895336151e-002
-
- -6.8312811851501465e-001 6.7834347486495972e-002
- <_>
-
- 0 -1 543 -1.0442961938679218e-003
-
- -5.5244719982147217e-001 6.7180506885051727e-002
- <_>
-
- 0 -1 806 7.9750344157218933e-003
-
- -1.4685039222240448e-001 2.7911156415939331e-001
- <_>
-
- 0 -1 775 9.7797568887472153e-003
-
- -1.0445457696914673e-001 3.9583787322044373e-001
- <_>
-
- 0 -1 552 1.3288496062159538e-002
-
- -1.1733970791101456e-001 3.2855752110481262e-001
- <_>
-
- 0 -1 528 -1.5873706433922052e-003
-
- -6.4394426345825195e-001 5.9831541031599045e-002
- <_>
-
- 0 -1 538 4.1341055184602737e-003
-
- -1.4766456186771393e-001 2.6551467180252075e-001
- <_>
-
- 0 -1 75 4.7469654236920178e-004
-
- -2.4220904707908630e-001 1.7033961415290833e-001
- <_>
-
- 0 -1 780 1.6357531771063805e-002
-
- -7.4449680745601654e-002 5.1059716939926147e-001
- <_>
-
- 0 -1 512 -3.0519803985953331e-002
-
- -6.1357855796813965e-001 6.4341634511947632e-002
- <_>
-
- 0 -1 388 7.8287199139595032e-002
-
- -9.1953203082084656e-002 4.5058310031890869e-001
- <_>
-
- 0 -1 426 2.6628788560628891e-002
-
- -1.2955492734909058e-001 2.6968446373939514e-001
- <_>
-
- 0 -1 187 4.6231731772422791e-002
-
- -8.5953183472156525e-002 4.0568628907203674e-001
- <_>
-
- 0 -1 248 -2.1837819367647171e-003
-
- 2.9953801631927490e-001 -1.1820212751626968e-001
- <_>
-
- 0 -1 551 -7.5804558582603931e-004
-
- -3.7147358059883118e-001 9.4888158142566681e-002
- <_>
-
- 0 -1 557 1.9615942612290382e-002
-
- 7.7175915241241455e-002 -4.4386270642280579e-001
- <_>
-
- 0 -1 758 2.4940725415945053e-003
-
- -1.3974383473396301e-001 2.5393635034561157e-001
- <_>
-
- 0 -1 363 2.0674080587923527e-003
-
- -1.6579771041870117e-001 2.1392273902893066e-001
- <_>
-
- 0 -1 307 -7.3546944186091423e-003
-
- 3.6300283670425415e-001 -9.0012907981872559e-002
- <_>
-
- 0 -1 822 -4.5008827000856400e-003
-
- 2.7234289050102234e-001 -1.1618893593549728e-001
- <_>
-
- 0 -1 863 2.6555648073554039e-003
-
- -1.3339768350124359e-001 2.3308847844600677e-001
- <_>
-
- 0 -1 713 6.8732965737581253e-003
-
- 5.5398836731910706e-002 -5.7269740104675293e-001
- <_>
-
- 0 -1 541 -1.3697329908609390e-002
-
- 2.9575833678245544e-001 -1.1314996331930161e-001
- <_>
-
- 0 -1 499 3.1671333126723766e-003
-
- -1.5514299273490906e-001 2.1296086907386780e-001
- <_>
-
- 0 -1 74 3.9301186800003052e-002
-
- 3.7740129977464676e-002 -8.7064558267593384e-001
- <_>
-
- 0 -1 438 5.0326753407716751e-003
-
- 3.8631703704595566e-002 -6.6628092527389526e-001
-
- <_>
- 37
- -2.2784059047698975e+000
-
- <_>
-
- 0 -1 284 -6.8839386105537415e-002
-
- 3.8505528122186661e-002 -7.2149914503097534e-001
- <_>
-
- 0 -1 622 4.6330597251653671e-003
-
- -2.7918994426727295e-001 5.7365530729293823e-001
- <_>
-
- 0 -1 769 -2.2597890347242355e-002
-
- 5.4445463418960571e-001 -1.5445226430892944e-001
- <_>
-
- 0 -1 651 8.1817107275128365e-003
-
- -1.3576838374137878e-001 5.7550191879272461e-001
- <_>
-
- 0 -1 663 1.9931606948375702e-002
-
- -8.6917184293270111e-002 6.9753867387771606e-001
- <_>
-
- 0 -1 125 -1.6835592687129974e-002
-
- 2.9909837245941162e-001 -2.1280159056186676e-001
- <_>
-
- 0 -1 811 1.3076540082693100e-002
-
- -1.0236994922161102e-001 6.2949544191360474e-001
- <_>
-
- 0 -1 809 6.2367517966777086e-004
-
- -2.5327861309051514e-001 2.4867674708366394e-001
- <_>
-
- 0 -1 609 1.2028571218252182e-003
-
- 1.3679966330528259e-001 -6.4433771371841431e-001
- <_>
-
- 0 -1 272 1.3981487601995468e-002
-
- -1.6557806730270386e-001 4.5303794741630554e-001
- <_>
-
- 0 -1 224 -1.5312875621020794e-002
-
- 3.9820623397827148e-001 -1.4350801706314087e-001
- <_>
-
- 0 -1 502 -1.5315772034227848e-003
-
- -4.6908026933670044e-001 1.1392414569854736e-001
- <_>
-
- 0 -1 586 -1.2515729293227196e-002
-
- 4.2320749163627625e-001 -1.1944464594125748e-001
- <_>
-
- 0 -1 15 9.7349435091018677e-003
-
- -2.1135130524635315e-001 2.4544763565063477e-001
- <_>
-
- 0 -1 578 8.9689850807189941e-002
-
- 6.3219323754310608e-002 -6.4908504486083984e-001
- <_>
-
- 0 -1 683 -1.1183234862983227e-002
-
- 4.5843327045440674e-001 -1.1428884416818619e-001
- <_>
-
- 0 -1 609 -1.3516875915229321e-003
-
- -6.4720195531845093e-001 8.4523022174835205e-002
- <_>
-
- 0 -1 338 -3.5038506612181664e-003
-
- 2.3362815380096436e-001 -2.2096297144889832e-001
- <_>
-
- 0 -1 676 -2.2360668517649174e-003
-
- 3.7134209275245667e-001 -1.3087964057922363e-001
- <_>
-
- 0 -1 672 1.1475373059511185e-002
-
- -9.9598348140716553e-002 4.7512599825859070e-001
- <_>
-
- 0 -1 693 -4.1206870228052139e-003
-
- 3.7730529904365540e-001 -1.3486868143081665e-001
- <_>
-
- 0 -1 386 -1.0615207254886627e-002
-
- 5.6163507699966431e-001 -8.6019508540630341e-002
- <_>
-
- 0 -1 912 1.3644450809806585e-003
-
- 9.1222301125526428e-002 -5.7370740175247192e-001
- <_>
-
- 0 -1 211 -4.0528293699026108e-002
-
- -7.1112531423568726e-001 5.6328568607568741e-002
- <_>
-
- 0 -1 598 -2.6628528721630573e-003
-
- -5.7514446973800659e-001 6.4672872424125671e-002
- <_>
-
- 0 -1 804 1.6719421837478876e-003
-
- -1.0937304049730301e-001 4.6537923812866211e-001
- <_>
-
- 0 -1 391 -7.5402572751045227e-002
-
- -7.1920621395111084e-001 6.3679412007331848e-002
- <_>
-
- 0 -1 752 4.1434019804000854e-003
-
- -1.2251268327236176e-001 3.5859704017639160e-001
- <_>
-
- 0 -1 656 1.0901679052039981e-003
-
- 9.0319603681564331e-002 -4.9077373743057251e-001
- <_>
-
- 0 -1 548 9.7664669156074524e-003
-
- -1.1890622228384018e-001 3.7789806723594666e-001
- <_>
-
- 0 -1 20 1.3128603994846344e-001
-
- 9.1950289905071259e-002 -4.8608726263046265e-001
- <_>
-
- 0 -1 160 5.0870995037257671e-003
-
- -3.0447667837142944e-001 1.5393695235252380e-001
- <_>
-
- 0 -1 695 1.1608509812504053e-003
-
- 6.8402722477912903e-002 -5.7240855693817139e-001
- <_>
-
- 0 -1 463 -8.3964206278324127e-003
-
- -5.6654578447341919e-001 6.1527676880359650e-002
- <_>
-
- 0 -1 853 -9.2788469046354294e-003
-
- 5.3486818075180054e-001 -7.9918831586837769e-002
- <_>
-
- 0 -1 194 4.0858805179595947e-002
-
- -6.0392327606678009e-002 5.3097963333129883e-001
- <_>
-
- 0 -1 875 1.1207645758986473e-002
-
- -7.6901644468307495e-002 4.6894967555999756e-001
-
- <_>
- 43
- -2.3281440734863281e+000
-
- <_>
-
- 0 -1 799 1.6143361106514931e-002
-
- -5.9869056940078735e-001 5.8244681358337402e-001
- <_>
-
- 0 -1 316 -1.4507154002785683e-002
-
- 2.7806228399276733e-001 -4.9415421485900879e-001
- <_>
-
- 0 -1 374 7.1883820928633213e-003
-
- -2.1741701662540436e-001 3.9910879731178284e-001
- <_>
-
- 0 -1 601 -6.3224318437278271e-003
-
- 4.9661168456077576e-001 -1.4284123480319977e-001
- <_>
-
- 0 -1 309 7.3951724916696548e-003
-
- -1.3306735455989838e-001 5.4774791002273560e-001
- <_>
-
- 0 -1 620 5.7926801964640617e-003
-
- -1.7347626388072968e-001 3.3524274826049805e-001
- <_>
-
- 0 -1 628 -8.1796385347843170e-003
-
- 4.4341480731964111e-001 -1.1987159401178360e-001
- <_>
-
- 0 -1 644 3.1394532416015863e-003
-
- -7.6400212943553925e-002 5.3360211849212646e-001
- <_>
-
- 0 -1 803 5.8109681122004986e-003
-
- -1.1512878537178040e-001 4.4279125332832336e-001
- <_>
-
- 0 -1 787 -1.5480478759855032e-003
-
- 4.6037110686302185e-001 -1.1494978517293930e-001
- <_>
-
- 0 -1 139 -3.2716423273086548e-002
-
- -6.3845193386077881e-001 1.0197243094444275e-001
- <_>
-
- 0 -1 547 7.7531556598842144e-003
-
- -2.0599687099456787e-001 2.4387344717979431e-001
- <_>
-
- 0 -1 312 1.0081732273101807e-001
-
- -8.3307094871997833e-002 6.0089951753616333e-001
- <_>
-
- 0 -1 303 1.8065905198454857e-002
-
- -8.5330262780189514e-002 5.1092010736465454e-001
- <_>
-
- 0 -1 227 1.2447070330381393e-002
-
- 7.5348034501075745e-002 -7.0691746473312378e-001
- <_>
-
- 0 -1 26 1.1250283569097519e-002
-
- -2.8157770633697510e-001 1.4611217379570007e-001
- <_>
-
- 0 -1 461 6.3989013433456421e-002
-
- 5.5644407868385315e-002 -8.0775284767150879e-001
- <_>
-
- 0 -1 532 1.2037818320095539e-002
-
- -1.6155177354812622e-001 2.6092258095741272e-001
- <_>
-
- 0 -1 531 -6.7794714123010635e-003
-
- 4.1026043891906738e-001 -1.1167341470718384e-001
- <_>
-
- 0 -1 662 -6.8837543949484825e-003
-
- 3.2057675719261169e-001 -1.2521778047084808e-001
- <_>
-
- 0 -1 568 -5.6298770941793919e-003
-
- 3.7114644050598145e-001 -9.6118465065956116e-002
- <_>
-
- 0 -1 501 -1.4044784940779209e-002
-
- 2.3923584818840027e-001 -1.4994344115257263e-001
- <_>
-
- 0 -1 209 -4.2415991425514221e-002
-
- -7.0631259679794312e-001 5.3350944072008133e-002
- <_>
-
- 0 -1 633 1.1271872790530324e-003
-
- -1.0572738200426102e-001 4.0252980589866638e-001
- <_>
-
- 0 -1 655 1.6750365030020475e-003
-
- 6.3855156302452087e-002 -6.4757323265075684e-001
- <_>
-
- 0 -1 617 8.0223847180604935e-003
-
- -1.3372656702995300e-001 3.1646871566772461e-001
- <_>
-
- 0 -1 302 -7.6437788084149361e-003
-
- 3.6533179879188538e-001 -1.0963398963212967e-001
- <_>
-
- 0 -1 864 1.9589535077102482e-004
-
- -1.8541762232780457e-001 1.9759687781333923e-001
- <_>
-
- 0 -1 235 -1.4239229494705796e-003
-
- 2.4031755328178406e-001 -1.5697695314884186e-001
- <_>
-
- 0 -1 796 8.4227584302425385e-003
-
- -8.4527194499969482e-002 4.2389118671417236e-001
- <_>
-
- 0 -1 797 -6.9234715774655342e-003
-
- 3.8057762384414673e-001 -9.1416321694850922e-002
- <_>
-
- 0 -1 588 -1.8704653484746814e-003
-
- -6.4613032341003418e-001 5.7689383625984192e-002
- <_>
-
- 0 -1 260 -2.7793958783149719e-002
-
- 1.8243275582790375e-001 -1.8460384011268616e-001
- <_>
-
- 0 -1 780 -1.9853528589010239e-002
-
- 7.5294703245162964e-001 -5.5559452623128891e-002
- <_>
-
- 0 -1 231 -9.3498677015304565e-002
-
- -4.5725339651107788e-001 8.2762040197849274e-002
- <_>
-
- 0 -1 233 -5.1207490265369415e-002
-
- -6.2534767389297485e-001 4.8502899706363678e-002
- <_>
-
- 0 -1 407 1.1575517710298300e-003
-
- -1.9439546763896942e-001 1.6855290532112122e-001
- <_>
-
- 0 -1 24 -1.7103100195527077e-002
-
- -5.6425410509109497e-001 5.8622561395168304e-002
- <_>
-
- 0 -1 731 -1.7147272592410445e-003
-
- -4.4655910134315491e-001 6.4384043216705322e-002
- <_>
-
- 0 -1 704 -2.4417929351329803e-002
-
- -4.3452578783035278e-001 7.0416867733001709e-002
- <_>
-
- 0 -1 572 3.7648410070687532e-003
-
- -9.9933244287967682e-002 3.3911246061325073e-001
- <_>
-
- 0 -1 353 -1.0104919783771038e-002
-
- 3.4629023075103760e-001 -8.8539779186248779e-002
- <_>
-
- 0 -1 712 5.0981063395738602e-003
-
- 5.5100377649068832e-002 -6.0317450761795044e-001
-
- <_>
- 50
- -2.3480093479156494e+000
-
- <_>
-
- 0 -1 343 -3.9326027035713196e-002
-
- 1.5673981979489326e-002 -7.0409429073333740e-001
- <_>
-
- 0 -1 465 -8.4042851813137531e-004
-
- 2.2963143885135651e-001 -4.5338386297225952e-001
- <_>
-
- 0 -1 768 1.2317419983446598e-002
-
- -2.4286352097988129e-001 3.4696686267852783e-001
- <_>
-
- 0 -1 799 1.2345131486654282e-002
-
- -1.2295535951852798e-001 5.7723248004913330e-001
- <_>
-
- 0 -1 334 -1.0166198946535587e-002
-
- 3.6376756429672241e-001 -1.5697406232357025e-001
- <_>
-
- 0 -1 2 1.6935718012973666e-003
-
- -1.6952106356620789e-001 3.3476638793945313e-001
- <_>
-
- 0 -1 355 2.4814529344439507e-002
-
- -5.2621126174926758e-002 6.6913032531738281e-001
- <_>
-
- 0 -1 595 -7.9641379415988922e-003
-
- 4.5105281472206116e-001 -1.0256277024745941e-001
- <_>
-
- 0 -1 923 -8.0780440475791693e-004
-
- 3.4726995229721069e-001 -1.4011415839195251e-001
- <_>
-
- 0 -1 886 -4.2634975165128708e-002
-
- 3.9254909753799438e-001 -9.5705978572368622e-002
- <_>
-
- 0 -1 645 -1.1309007182717323e-002
-
- 5.3030455112457275e-001 -9.1078959405422211e-002
- <_>
-
- 0 -1 660 -5.3997440263628960e-003
-
- 4.4208008050918579e-001 -8.9016474783420563e-002
- <_>
-
- 0 -1 922 8.0034844577312469e-003
-
- -7.7505834400653839e-002 4.6123340725898743e-001
- <_>
-
- 0 -1 70 -2.1929096430540085e-002
-
- -5.1349323987960815e-001 8.5143901407718658e-002
- <_>
-
- 0 -1 457 -1.1585029773414135e-002
-
- -5.9067147970199585e-001 5.3899347782135010e-002
- <_>
-
- 0 -1 940 1.5154580585658550e-002
-
- 4.7417007386684418e-002 -6.2853425741195679e-001
- <_>
-
- 0 -1 425 3.6063842475414276e-002
-
- 7.1829482913017273e-002 -5.8649080991744995e-001
- <_>
-
- 0 -1 377 -1.2515364214777946e-003
-
- 1.8929110467433929e-001 -1.8165642023086548e-001
- <_>
-
- 0 -1 443 -1.1191211640834808e-002
-
- -6.1874210834503174e-001 6.0382697731256485e-002
- <_>
-
- 0 -1 892 -1.0454729199409485e-002
-
- 3.9079114794731140e-001 -9.7279526293277740e-002
- <_>
-
- 0 -1 474 -1.3280634302645922e-003
-
- -4.3977957963943481e-001 8.6543120443820953e-002
- <_>
-
- 0 -1 884 -6.5715098753571510e-003
-
- 3.8899809122085571e-001 -9.9507912993431091e-002
- <_>
-
- 0 -1 802 -4.8141209408640862e-003
-
- 2.7240043878555298e-001 -1.1941614747047424e-001
- <_>
-
- 0 -1 611 -4.9042850732803345e-003
-
- 3.4554582834243774e-001 -1.0440594702959061e-001
- <_>
-
- 0 -1 589 4.1131088510155678e-003
-
- 6.2906242907047272e-002 -6.3577443361282349e-001
- <_>
-
- 0 -1 564 -1.4377808198332787e-002
-
- 2.6160046458244324e-001 -1.3126534223556519e-001
- <_>
-
- 0 -1 659 -7.9730991274118423e-003
-
- 2.8418624401092529e-001 -1.1802970618009567e-001
- <_>
-
- 0 -1 632 1.2750998139381409e-002
-
- -1.2246144562959671e-001 2.9994803667068481e-001
- <_>
-
- 0 -1 550 1.2405896559357643e-003
-
- 6.8871341645717621e-002 -4.7651088237762451e-001
- <_>
-
- 0 -1 864 1.9797214190475643e-004
-
- -1.8686980009078979e-001 1.7104914784431458e-001
- <_>
-
- 0 -1 773 -5.9868812561035156e-002
-
- -7.4281668663024902e-001 4.0871854871511459e-002
- <_>
-
- 0 -1 20 1.7117856442928314e-001
-
- 3.9691232144832611e-002 -6.0849416255950928e-001
- <_>
-
- 0 -1 583 -6.0836132615804672e-003
-
- 2.6707777380943298e-001 -1.1131492257118225e-001
- <_>
-
- 0 -1 37 -1.6043212264776230e-002
-
- -7.1336209774017334e-001 4.1814558207988739e-002
- <_>
-
- 0 -1 721 -3.5733331460505724e-003
-
- -5.9263443946838379e-001 4.1711769998073578e-002
- <_>
-
- 0 -1 251 4.8501053825020790e-003
-
- -1.7411983013153076e-001 1.6949725151062012e-001
- <_>
-
- 0 -1 932 -2.4870643392205238e-003
-
- 3.5093098878860474e-001 -8.0437563359737396e-002
- <_>
-
- 0 -1 679 5.4334278684109449e-004
-
- 7.2410888969898224e-002 -4.1958642005920410e-001
- <_>
-
- 0 -1 399 -6.7315630614757538e-002
-
- -6.9776558876037598e-001 3.6959640681743622e-002
- <_>
-
- 0 -1 848 -1.5508693642914295e-002
-
- 4.7738686203956604e-001 -6.2411848455667496e-002
- <_>
-
- 0 -1 240 9.8924851045012474e-003
-
- 3.8795292377471924e-002 -7.5121307373046875e-001
- <_>
-
- 0 -1 626 -1.9304422894492745e-003
-
- -6.6471725702285767e-001 3.2116148620843887e-002
- <_>
-
- 0 -1 877 -1.0774823604151607e-003
-
- 1.5463894605636597e-001 -1.6525565087795258e-001
- <_>
-
- 0 -1 938 2.0380350761115551e-003
-
- -8.5884653031826019e-002 3.1941527128219604e-001
- <_>
-
- 0 -1 296 2.6121754199266434e-003
-
- 4.5351639389991760e-002 -6.1592888832092285e-001
- <_>
-
- 0 -1 360 -2.4895587936043739e-002
-
- 1.9662404060363770e-001 -1.3288022577762604e-001
- <_>
-
- 0 -1 540 9.4352923333644867e-003
-
- -7.7825613319873810e-002 3.3150759339332581e-001
- <_>
-
- 0 -1 475 3.4190870821475983e-002
-
- 4.5858692377805710e-002 -6.1435216665267944e-001
- <_>
-
- 0 -1 685 -5.5097185075283051e-002
-
- -4.9892291426658630e-001 4.7548539936542511e-002
- <_>
-
- 0 -1 287 3.8485769182443619e-003
-
- -2.1700088679790497e-001 1.1295168846845627e-001
-
- <_>
- 61
- -2.4126377105712891e+000
-
- <_>
-
- 0 -1 344 -9.5382995903491974e-002
-
- -4.5056518167257309e-002 -7.4383479356765747e-001
- <_>
-
- 0 -1 696 -1.7865713685750961e-002
-
- 2.4200576543807983e-001 -3.4111279249191284e-001
- <_>
-
- 0 -1 66 -1.7819929867982864e-002
-
- -5.8606600761413574e-001 1.0216028243303299e-001
- <_>
-
- 0 -1 369 1.1929270811378956e-002
-
- -1.3082079589366913e-001 4.3198430538177490e-001
- <_>
-
- 0 -1 677 -2.1402675658464432e-002
-
- -7.3706889152526855e-001 7.2057045996189117e-002
- <_>
-
- 0 -1 880 2.0411442965269089e-003
-
- -1.9257834553718567e-001 2.6624691486358643e-001
- <_>
-
- 0 -1 560 -9.2984475195407867e-003
-
- 3.9710593223571777e-001 -1.1857020854949951e-001
- <_>
-
- 0 -1 870 -4.1869636625051498e-003
-
- 4.2139983177185059e-001 -1.1628517508506775e-001
- <_>
-
- 0 -1 173 1.0577079653739929e-001
-
- 6.7847460508346558e-002 -7.5728106498718262e-001
- <_>
-
- 0 -1 458 2.3821401409804821e-003
-
- -1.7424334585666656e-001 2.4778348207473755e-001
- <_>
-
- 0 -1 365 1.7058081924915314e-002
-
- -1.0784839093685150e-001 4.7589403390884399e-001
- <_>
-
- 0 -1 607 8.4047149866819382e-003
-
- -1.6299639642238617e-001 2.5596112012863159e-001
- <_>
-
- 0 -1 669 6.4883893355727196e-003
-
- -1.0720382630825043e-001 3.8739699125289917e-001
- <_>
-
- 0 -1 719 1.3821164146065712e-002
-
- -1.0847893357276917e-001 3.7734055519104004e-001
- <_>
-
- 0 -1 730 6.3344044610857964e-004
-
- 1.0369951277971268e-001 -4.1177383065223694e-001
- <_>
-
- 0 -1 649 2.5448631495237350e-002
-
- -1.0093591362237930e-001 4.0250420570373535e-001
- <_>
-
- 0 -1 628 -6.6858739592134953e-003
-
- 3.2515993714332581e-001 -1.2071736156940460e-001
- <_>
-
- 0 -1 847 1.5770105645060539e-002
-
- -8.7370425462722778e-002 4.2094638943672180e-001
- <_>
-
- 0 -1 442 -6.1724921688437462e-003
-
- 3.5812416672706604e-001 -9.5346152782440186e-002
- <_>
-
- 0 -1 456 -2.5777951814234257e-003
-
- -4.5544171333312988e-001 9.0092077851295471e-002
- <_>
-
- 0 -1 535 -2.6305086910724640e-002
-
- -6.4864850044250488e-001 4.1219502687454224e-002
- <_>
-
- 0 -1 542 8.0740137491375208e-004
-
- 4.7109395265579224e-002 -6.0955244302749634e-001
- <_>
-
- 0 -1 68 1.4135822653770447e-002
-
- -1.9197317957878113e-001 1.6882354021072388e-001
- <_>
-
- 0 -1 294 -9.4971470534801483e-003
-
- 3.6509966850280762e-001 -9.9222034215927124e-002
- <_>
-
- 0 -1 542 -7.4699660763144493e-004
-
- -4.7985881567001343e-001 6.8735912442207336e-002
- <_>
-
- 0 -1 500 1.6889899969100952e-002
-
- -1.3929726183414459e-001 2.3301121592521667e-001
- <_>
-
- 0 -1 779 2.3306370712816715e-003
-
- -8.4623180329799652e-002 3.3656537532806396e-001
- <_>
-
- 0 -1 778 8.7781455367803574e-003
-
- -1.1189370602369308e-001 2.9142591357231140e-001
- <_>
-
- 0 -1 99 -1.5908680856227875e-002
-
- 1.9325265288352966e-001 -1.6028961539268494e-001
- <_>
-
- 0 -1 744 1.9255496561527252e-002
-
- 7.6108239591121674e-002 -3.9211651682853699e-001
- <_>
-
- 0 -1 914 5.0490582361817360e-003
-
- -8.9932329952716827e-002 3.1994494795799255e-001
- <_>
-
- 0 -1 603 -2.4455685634166002e-003
-
- -6.3004231452941895e-001 4.6506922692060471e-002
- <_>
-
- 0 -1 89 6.4034629613161087e-003
-
- -1.2222797423601151e-001 2.2714875638484955e-001
- <_>
-
- 0 -1 88 -3.1981021165847778e-003
-
- 2.8711226582527161e-001 -1.0478579252958298e-001
- <_>
-
- 0 -1 732 1.7579109407961369e-003
-
- 5.1840141415596008e-002 -5.7752221822738647e-001
- <_>
-
- 0 -1 526 -2.6384353637695313e-002
-
- -7.5548434257507324e-001 3.1215203925967216e-002
- <_>
-
- 0 -1 482 1.3470241427421570e-001
-
- 4.5115962624549866e-002 -4.8610612750053406e-001
- <_>
-
- 0 -1 855 -2.5868147611618042e-002
-
- -4.9144035577774048e-001 5.0334099680185318e-002
- <_>
-
- 0 -1 164 1.0719317197799683e-001
-
- -1.4267221093177795e-001 1.7969062924385071e-001
- <_>
-
- 0 -1 781 -1.5155045315623283e-002
-
- 4.2710477113723755e-001 -6.6483244299888611e-002
- <_>
-
- 0 -1 728 -3.8210965692996979e-002
-
- -6.1093688011169434e-001 4.7181066125631332e-002
- <_>
-
- 0 -1 257 1.7748951911926270e-002
-
- -6.6903516650199890e-002 4.1605830192565918e-001
- <_>
-
- 0 -1 272 -1.3678016141057014e-002
-
- 3.2274204492568970e-001 -8.7739549577236176e-002
- <_>
-
- 0 -1 81 1.4629539102315903e-002
-
- -1.1059324443340302e-001 2.4449653923511505e-001
- <_>
-
- 0 -1 754 6.4607188105583191e-003
-
- -8.1396102905273438e-002 3.1605172157287598e-001
- <_>
-
- 0 -1 574 -8.4974901983514428e-004
-
- 1.5621511638164520e-001 -1.6912016272544861e-001
- <_>
-
- 0 -1 332 -6.4049977809190750e-003
-
- 2.2254464030265808e-001 -1.1970910429954529e-001
- <_>
-
- 0 -1 410 4.8453146591782570e-003
-
- -1.0080187022686005e-001 2.5552451610565186e-001
- <_>
-
- 0 -1 694 1.0576892644166946e-002
-
- -7.1883767843246460e-002 3.2368022203445435e-001
- <_>
-
- 0 -1 652 -2.0271514076739550e-003
-
- 2.1205350756645203e-001 -1.4773385226726532e-001
- <_>
-
- 0 -1 379 1.2130783870816231e-003
-
- -2.2663643956184387e-001 1.0520290583372116e-001
- <_>
-
- 0 -1 419 -7.9384088516235352e-002
-
- -4.4897699356079102e-001 4.9417987465858459e-002
- <_>
-
- 0 -1 31 4.3571349233388901e-003
-
- 3.1063990667462349e-002 -6.9149738550186157e-001
- <_>
-
- 0 -1 750 1.9707549363374710e-003
-
- 4.4843826442956924e-002 -4.5625826716423035e-001
- <_>
-
- 0 -1 788 6.2818843871355057e-003
-
- -9.5382869243621826e-002 2.6746883988380432e-001
- <_>
-
- 0 -1 789 -1.3252656906843185e-002
-
- 4.0820258855819702e-001 -6.0815874487161636e-002
- <_>
-
- 0 -1 60 5.0364276394248009e-003
-
- 9.0342856943607330e-002 -2.5253733992576599e-001
- <_>
-
- 0 -1 492 8.9537240564823151e-003
-
- 3.2092411071062088e-002 -7.0339488983154297e-001
- <_>
-
- 0 -1 546 6.8814970552921295e-002
-
- -7.1046918630599976e-002 3.6507198214530945e-001
- <_>
-
- 0 -1 544 -1.2149440124630928e-002
-
- 3.3089646697044373e-001 -6.6771849989891052e-002
- <_>
-
- 0 -1 50 1.9094728631898761e-003
-
- -1.3490848243236542e-001 1.6960476338863373e-001
-
- <_>
- 72
- -2.3490672111511230e+000
-
- <_>
-
- 0 -1 371 1.4795187860727310e-002
-
- -7.0123827457427979e-001 -2.0484872162342072e-002
- <_>
-
- 0 -1 612 2.6377664878964424e-002
-
- -3.5620382428169250e-001 2.4889869987964630e-001
- <_>
-
- 0 -1 165 -1.1034142225980759e-002
-
- 2.0675517618656158e-001 -3.3259147405624390e-001
- <_>
-
- 0 -1 692 -9.2857871204614639e-003
-
- 4.4594430923461914e-001 -1.4160791039466858e-001
- <_>
-
- 0 -1 313 1.1126287281513214e-001
-
- -7.9181507229804993e-002 6.0241782665252686e-001
- <_>
-
- 0 -1 751 3.0388862360268831e-003
-
- -1.9209611415863037e-001 2.5241580605506897e-001
- <_>
-
- 0 -1 874 -2.0801391452550888e-002
-
- 4.0978202223777771e-001 -9.8037041723728180e-002
- <_>
-
- 0 -1 892 1.0280778631567955e-002
-
- -9.6344605088233948e-002 4.6578553318977356e-001
- <_>
-
- 0 -1 894 -5.4509467445313931e-003
-
- 3.7336015701293945e-001 -1.0564301162958145e-001
- <_>
-
- 0 -1 376 -1.8031136132776737e-003
-
- 3.5322296619415283e-001 -1.2390857189893723e-001
- <_>
-
- 0 -1 763 -4.7199074178934097e-003
-
- 4.1106048226356506e-001 -9.3251600861549377e-002
- <_>
-
- 0 -1 323 -6.1694663017988205e-003
-
- 3.3520108461380005e-001 -1.2836365401744843e-001
- <_>
-
- 0 -1 83 -6.9639906287193298e-003
-
- 2.1963912248611450e-001 -1.8814907968044281e-001
- <_>
-
- 0 -1 683 -1.2535721994936466e-002
-
- 3.8960403203964233e-001 -9.2547819018363953e-002
- <_>
-
- 0 -1 690 -1.6924859955906868e-002
-
- 3.6892804503440857e-001 -9.4779089093208313e-002
- <_>
-
- 0 -1 54 1.6596701461821795e-003
-
- -1.9850541651248932e-001 1.8709312379360199e-001
- <_>
-
- 0 -1 55 2.7687277644872665e-002
-
- 7.0031657814979553e-002 -4.7238609194755554e-001
- <_>
-
- 0 -1 120 -1.1841375380754471e-002
-
- 2.6792368292808533e-001 -1.2015427649021149e-001
- <_>
-
- 0 -1 261 -1.1048562824726105e-002
-
- 3.6024233698844910e-001 -1.0290746390819550e-001
- <_>
-
- 0 -1 7 -6.2395762652158737e-002
-
- -5.7112109661102295e-001 6.2251534312963486e-002
- <_>
-
- 0 -1 115 1.6063985228538513e-001
-
- -7.0866517722606659e-002 4.5665851235389709e-001
- <_>
-
- 0 -1 232 2.1094676852226257e-001
-
- 4.6763692051172256e-002 -7.0770156383514404e-001
- <_>
-
- 0 -1 358 -3.6897901445627213e-003
-
- 3.7905600666999817e-001 -8.1804625689983368e-002
- <_>
-
- 0 -1 434 1.9055651500821114e-002
-
- -1.0166674852371216e-001 2.7208462357521057e-001
- <_>
-
- 0 -1 947 -2.0279071759432554e-003
-
- 3.1354761123657227e-001 -8.6894899606704712e-002
- <_>
-
- 0 -1 571 1.0916183236986399e-003
-
- 7.6082363724708557e-002 -3.2986941933631897e-001
- <_>
-
- 0 -1 405 -5.5616937577724457e-002
-
- -5.0169217586517334e-001 4.7203768044710159e-002
- <_>
-
- 0 -1 600 -2.1859644912183285e-003
-
- -4.1108477115631104e-001 5.6136883795261383e-002
- <_>
-
- 0 -1 422 6.1606548726558685e-002
-
- 3.8405187427997589e-002 -6.3146471977233887e-001
- <_>
-
- 0 -1 562 4.4989854097366333e-002
-
- -7.8799270093441010e-002 3.5685274004936218e-001
- <_>
-
- 0 -1 900 1.4128099195659161e-002
-
- -5.1783677190542221e-002 4.5928877592086792e-001
- <_>
-
- 0 -1 503 -2.2787526249885559e-002
-
- -4.2496410012245178e-001 5.9822574257850647e-002
- <_>
-
- 0 -1 82 1.0302955284714699e-002
-
- -1.5051785111427307e-001 1.8300771713256836e-001
- <_>
-
- 0 -1 733 -1.7985476879402995e-003
-
- -5.0104391574859619e-001 5.1810134202241898e-002
- <_>
-
- 0 -1 783 -1.0919184423983097e-003
-
- 1.6831028461456299e-001 -1.5063883364200592e-001
- <_>
-
- 0 -1 221 6.8745255470275879e-002
-
- 2.5853699073195457e-002 -8.8202834129333496e-001
- <_>
-
- 0 -1 92 8.0964900553226471e-003
-
- -1.4373345673084259e-001 1.6309750080108643e-001
- <_>
-
- 0 -1 669 -9.0615758672356606e-003
-
- 4.4120463728904724e-001 -5.8328684419393539e-002
- <_>
-
- 0 -1 780 1.5157302841544151e-002
-
- -6.2339264899492264e-002 3.7585461139678955e-001
- <_>
-
- 0 -1 852 -9.6248798072338104e-003
-
- 3.3618140220642090e-001 -7.2854258120059967e-002
- <_>
-
- 0 -1 264 -2.6485668495297432e-003
-
- -3.6842566728591919e-001 7.0426821708679199e-002
- <_>
-
- 0 -1 793 -2.5783948600292206e-002
-
- -4.3915954232215881e-001 4.4346898794174194e-002
- <_>
-
- 0 -1 691 3.8045123219490051e-002
-
- 2.0367870107293129e-002 -9.1361635923385620e-001
- <_>
-
- 0 -1 885 6.5762884914875031e-003
-
- -7.7705778181552887e-002 2.7798372507095337e-001
- <_>
-
- 0 -1 527 1.4522124081850052e-002
-
- -1.5169607102870941e-001 1.6986666619777679e-001
- <_>
-
- 0 -1 263 -2.9386302456259727e-002
-
- 1.5261377394199371e-001 -1.4140434563159943e-001
- <_>
-
- 0 -1 252 -1.8363123759627342e-002
-
- 5.7111293077468872e-001 -4.9465496093034744e-002
- <_>
-
- 0 -1 674 -5.1241345703601837e-002
-
- -5.5350369215011597e-001 4.6895623207092285e-002
- <_>
-
- 0 -1 277 2.9151788912713528e-003
-
- -9.0461745858192444e-002 2.4859617650508881e-001
- <_>
-
- 0 -1 749 1.7963855061680079e-003
-
- 4.5411933213472366e-002 -5.4377090930938721e-001
- <_>
-
- 0 -1 198 4.7771027311682701e-003
-
- -1.8385021388530731e-001 1.1213029175996780e-001
- <_>
-
- 0 -1 850 -1.1631837114691734e-003
-
- 1.9307336211204529e-001 -1.0863032937049866e-001
- <_>
-
- 0 -1 739 -6.7155435681343079e-003
-
- 3.4966903924942017e-001 -5.8376740664243698e-002
- <_>
-
- 0 -1 195 -6.6494196653366089e-002
-
- 3.4874725341796875e-001 -5.7571310549974442e-002
- <_>
-
- 0 -1 750 -1.8951734527945518e-003
-
- -5.0567263364791870e-001 4.2631916701793671e-002
- <_>
-
- 0 -1 832 -4.3506296351552010e-003
-
- -5.0467538833618164e-001 3.8686964660882950e-002
- <_>
-
- 0 -1 725 5.5216029286384583e-003
-
- -8.3722010254859924e-002 2.5723373889923096e-001
- <_>
-
- 0 -1 727 1.4174621552228928e-002
-
- -5.2497696131467819e-002 4.3525427579879761e-001
- <_>
-
- 0 -1 25 1.1252675205469131e-002
-
- -1.3312049210071564e-001 1.6167336702346802e-001
- <_>
-
- 0 -1 67 7.9240947961807251e-003
-
- -1.1959484219551086e-001 1.6835211217403412e-001
- <_>
-
- 0 -1 784 1.0558717185631394e-003
-
- -1.2297991663217545e-001 1.5906786918640137e-001
- <_>
-
- 0 -1 615 4.5906797051429749e-002
-
- 3.6611214280128479e-002 -5.4427564144134521e-001
- <_>
-
- 0 -1 702 -9.5631275326013565e-003
-
- 2.2376507520675659e-001 -9.2235445976257324e-002
- <_>
-
- 0 -1 290 -1.7671093344688416e-002
-
- -6.2817609310150146e-001 3.3949319273233414e-002
- <_>
-
- 0 -1 764 -1.7188221681863070e-003
-
- 2.0224046707153320e-001 -1.0232327878475189e-001
- <_>
-
- 0 -1 367 1.5140373259782791e-002
-
- -5.6504372507333755e-002 3.4895980358123779e-001
- <_>
-
- 0 -1 366 -2.8949489817023277e-002
-
- 3.1860530376434326e-001 -6.4782403409481049e-002
- <_>
-
- 0 -1 937 1.1647377163171768e-002
-
- -3.6289941519498825e-002 5.4892385005950928e-001
- <_>
-
- 0 -1 741 -7.8217741101980209e-003
-
- 2.0226673781871796e-001 -9.2000789940357208e-002
- <_>
-
- 0 -1 800 -8.4432046860456467e-003
-
- 1.7921546101570129e-001 -1.0415823757648468e-001
- <_>
-
- 0 -1 854 -1.5566672198474407e-002
-
- 3.9981749653816223e-001 -5.3077172487974167e-002
- <_>
-
- 0 -1 587 -1.2464943341910839e-002
-
- 2.2552676498889923e-001 -9.0897649526596069e-002
-
- <_>
- 77
- -2.2761957645416260e+000
-
- <_>
-
- 0 -1 402 -2.0046032965183258e-002
-
- 2.7538803219795227e-001 -6.1105114221572876e-001
- <_>
-
- 0 -1 430 9.1837458312511444e-003
-
- -4.0790805220603943e-001 2.0902955532073975e-001
- <_>
-
- 0 -1 21 4.2203110642731190e-003
-
- -2.1331593394279480e-001 2.8156790137290955e-001
- <_>
-
- 0 -1 673 -1.4000188559293747e-002
-
- 5.4547309875488281e-001 -9.6670299768447876e-002
- <_>
-
- 0 -1 926 -7.1464567445218563e-003
-
- 4.6416798233985901e-001 -9.1218575835227966e-002
- <_>
-
- 0 -1 389 -1.0070230066776276e-001
-
- -6.6349637508392334e-001 7.1100234985351563e-002
- <_>
-
- 0 -1 95 1.0696215555071831e-002
-
- -1.9745405018329620e-001 2.0773608982563019e-001
- <_>
-
- 0 -1 149 -3.5202980041503906e-002
-
- -7.6735103130340576e-001 5.0265740603208542e-002
- <_>
-
- 0 -1 311 7.4009604752063751e-002
-
- -7.4828110635280609e-002 5.6469208002090454e-001
- <_>
-
- 0 -1 849 3.9156894199550152e-003
-
- -1.3954170048236847e-001 2.7583837509155273e-001
- <_>
-
- 0 -1 335 -5.3920033387839794e-003
-
- 3.0497005581855774e-001 -1.1606794595718384e-001
- <_>
-
- 0 -1 861 3.7412224337458611e-003
-
- -7.9430311918258667e-002 4.4621026515960693e-001
- <_>
-
- 0 -1 868 7.1699996478855610e-003
-
- -1.0092698037624359e-001 3.4257224202156067e-001
- <_>
-
- 0 -1 256 2.1885338425636292e-001
-
- 5.8548614382743835e-002 -6.5264624357223511e-001
- <_>
-
- 0 -1 771 -5.3951903246343136e-003
-
- 2.4228222668170929e-001 -1.3535094261169434e-001
- <_>
-
- 0 -1 695 -1.1738229077309370e-003
-
- -4.7875782847404480e-001 6.8366907536983490e-002
- <_>
-
- 0 -1 666 2.1457400172948837e-002
-
- -7.1118980646133423e-002 4.5637446641921997e-001
- <_>
-
- 0 -1 309 1.2115674093365669e-002
-
- -5.8202955871820450e-002 4.6163806319236755e-001
- <_>
-
- 0 -1 273 -1.8007406964898109e-002
-
- 3.2520860433578491e-001 -8.0533631145954132e-002
- <_>
-
- 0 -1 837 -1.2486811727285385e-002
-
- 4.1279473900794983e-001 -5.1714207977056503e-002
- <_>
-
- 0 -1 820 -6.8574929609894753e-003
-
- 2.6760685443878174e-001 -1.0764075815677643e-001
- <_>
-
- 0 -1 823 1.5099495649337769e-002
-
- -7.4429087340831757e-002 4.6331611275672913e-001
- <_>
-
- 0 -1 418 5.6357895955443382e-003
-
- 4.3343700468540192e-002 -6.8444931507110596e-001
- <_>
-
- 0 -1 496 -3.8149006664752960e-002
-
- -5.0210982561111450e-001 4.6030189841985703e-002
- <_>
-
- 0 -1 488 6.9609917700290680e-002
-
- -1.1487975716590881e-001 2.4527166783809662e-001
- <_>
-
- 0 -1 718 -1.4793819282203913e-003
-
- -4.9200877547264099e-001 5.0612244755029678e-002
- <_>
-
- 0 -1 279 1.5615550801157951e-003
-
- -1.4539672434329987e-001 1.8345473706722260e-001
- <_>
-
- 0 -1 444 -7.9339537769556046e-003
-
- -6.9242167472839355e-001 3.2313633710145950e-002
- <_>
-
- 0 -1 69 3.8695998489856720e-002
-
- 3.5442691296339035e-002 -5.8349174261093140e-001
- <_>
-
- 0 -1 27 3.4779291599988937e-002
-
- -1.5399172902107239e-001 1.6672950983047485e-001
- <_>
-
- 0 -1 411 1.0367618873715401e-002
-
- -1.0087994486093521e-001 2.7080667018890381e-001
- <_>
-
- 0 -1 924 -1.2352936901152134e-003
-
- 2.6111871004104614e-001 -8.5407368838787079e-002
- <_>
-
- 0 -1 641 -3.8098993245512247e-003
-
- -6.4659863710403442e-001 3.7423413246870041e-002
- <_>
-
- 0 -1 137 1.4491343870759010e-002
-
- 1.9647786393761635e-002 -9.1479778289794922e-001
- <_>
-
- 0 -1 394 -8.3385318517684937e-002
-
- -7.1166336536407471e-001 2.2575991228222847e-002
- <_>
-
- 0 -1 780 -1.9848600029945374e-002
-
- 5.5954068899154663e-001 -4.1730873286724091e-002
- <_>
-
- 0 -1 241 -2.0697467029094696e-002
-
- 3.3735945820808411e-001 -6.2523342669010162e-002
- <_>
-
- 0 -1 300 -1.1017382144927979e-002
-
- 2.6414296030998230e-001 -1.0402554273605347e-001
- <_>
-
- 0 -1 78 2.7749380096793175e-003
-
- -1.7511576414108276e-001 1.1715058237314224e-001
- <_>
-
- 0 -1 648 -1.5251778066158295e-002
-
- 4.3819862604141235e-001 -4.5249339193105698e-002
- <_>
-
- 0 -1 108 1.1041477322578430e-002
-
- 3.4502815455198288e-002 -6.0594552755355835e-001
- <_>
-
- 0 -1 112 -1.2095808982849121e-002
-
- 2.3661912977695465e-001 -9.1371931135654449e-002
- <_>
-
- 0 -1 157 2.7025766670703888e-002
-
- -8.9995227754116058e-002 2.4357070028781891e-001
- <_>
-
- 0 -1 253 2.0237984135746956e-002
-
- -8.2986801862716675e-002 2.5786581635475159e-001
- <_>
-
- 0 -1 179 -2.5734171271324158e-002
-
- -8.0328714847564697e-001 2.3963116109371185e-002
- <_>
-
- 0 -1 898 -7.0260283537209034e-003
-
- 3.1706759333610535e-001 -6.8345665931701660e-002
- <_>
-
- 0 -1 785 8.9800115674734116e-003
-
- -1.0068616271018982e-001 1.8837621808052063e-001
- <_>
-
- 0 -1 16 7.1165725588798523e-002
-
- 2.9139470309019089e-002 -7.1776688098907471e-001
- <_>
-
- 0 -1 491 1.2540835887193680e-002
-
- 2.8786318376660347e-002 -5.7155269384384155e-001
- <_>
-
- 0 -1 686 1.4826809987425804e-002
-
- -5.3431484848260880e-002 3.7567591667175293e-001
- <_>
-
- 0 -1 756 -2.0885471254587173e-002
-
- -5.5986213684082031e-001 3.5628255456686020e-002
- <_>
-
- 0 -1 395 -4.4493626803159714e-002
-
- -6.0325270891189575e-001 2.8809506446123123e-002
- <_>
-
- 0 -1 469 -1.1605422478169203e-003
-
- 1.3856917619705200e-001 -1.3231372833251953e-001
- <_>
-
- 0 -1 10 1.0227273404598236e-001
-
- -6.3532300293445587e-002 3.1242474913597107e-001
- <_>
-
- 0 -1 134 -2.9290396720170975e-002
-
- 1.9631637632846832e-001 -1.1773347854614258e-001
- <_>
-
- 0 -1 249 -2.7526013553142548e-002
-
- -5.4162657260894775e-001 3.7284608930349350e-002
- <_>
-
- 0 -1 192 -6.8295732140541077e-002
-
- -6.8661803007125854e-001 2.2030472755432129e-002
- <_>
-
- 0 -1 65 3.7252403795719147e-002
-
- 1.4609245583415031e-002 -9.1920310258865356e-001
- <_>
-
- 0 -1 748 1.5438124537467957e-003
-
- 3.9837431162595749e-002 -3.8516902923583984e-001
- <_>
-
- 0 -1 361 1.8146948888897896e-002
-
- -8.1836819648742676e-002 2.2508986294269562e-001
- <_>
-
- 0 -1 153 -2.9618924017995596e-003
-
- 1.7523658275604248e-001 -1.1428176611661911e-001
- <_>
-
- 0 -1 591 1.8150422722101212e-002
-
- 3.3836413174867630e-002 -5.2116078138351440e-001
- <_>
-
- 0 -1 4 -3.3758711069822311e-002
-
- 3.9958250522613525e-001 -4.5763287693262100e-002
- <_>
-
- 0 -1 79 -1.4841533266007900e-003
-
- 1.6825924813747406e-001 -1.0908807814121246e-001
- <_>
-
- 0 -1 255 1.3028753455728292e-003
-
- -1.0276191681623459e-001 1.8539939820766449e-001
- <_>
-
- 0 -1 920 1.0365190915763378e-002
-
- -3.8271062076091766e-002 4.6489492058753967e-001
- <_>
-
- 0 -1 917 6.0222409665584564e-003
-
- -6.5577961504459381e-002 2.7879896759986877e-001
- <_>
-
- 0 -1 105 1.0119758546352386e-001
-
- -2.8418583795428276e-002 5.9041601419448853e-001
- <_>
-
- 0 -1 9 7.1856275200843811e-002
-
- 2.8918648138642311e-002 -7.6654183864593506e-001
- <_>
-
- 0 -1 921 2.6606030762195587e-002
-
- -6.2962368130683899e-002 3.0662769079208374e-001
- <_>
-
- 0 -1 384 1.5946386381983757e-002
-
- -5.4566886276006699e-002 3.1234565377235413e-001
- <_>
-
- 0 -1 493 -8.2057155668735504e-003
-
- 2.1779660880565643e-001 -8.3498664200305939e-002
- <_>
-
- 0 -1 270 1.2946184724569321e-002
-
- 3.5179842263460159e-002 -5.1891100406646729e-001
- <_>
-
- 0 -1 141 -8.8035371154546738e-003
-
- -4.6259808540344238e-001 3.4376677125692368e-002
- <_>
-
- 0 -1 477 -4.6518794260919094e-004
-
- -2.6353842020034790e-001 6.2585823237895966e-002
- <_>
-
- 0 -1 743 2.4100966751575470e-002
-
- 2.1097198128700256e-002 -7.4997889995574951e-001
- <_>
-
- 0 -1 170 -6.7410841584205627e-003
-
- -8.7101519107818604e-001 1.3417764566838741e-002
-
- <_>
- 88
- -2.2931215763092041e+000
-
- <_>
-
- 0 -1 400 -3.4661620855331421e-002
-
- 2.1858149766921997e-001 -6.1113607883453369e-001
- <_>
-
- 0 -1 130 -8.0369092524051666e-002
-
- 2.4827747046947479e-001 -3.6355212330818176e-001
- <_>
-
- 0 -1 911 2.5022951886057854e-003
-
- -2.3158867657184601e-001 2.7031692862510681e-001
- <_>
-
- 0 -1 946 -6.8189981393516064e-003
-
- 4.1294625401496887e-001 -1.2155807018280029e-001
- <_>
-
- 0 -1 459 3.2973052002489567e-003
-
- -1.9231098890304565e-001 2.4345158040523529e-001
- <_>
-
- 0 -1 484 -6.6328542307019234e-003
-
- -5.9019386768341064e-001 6.9055899977684021e-002
- <_>
-
- 0 -1 318 4.7803454101085663e-002
-
- -5.1415871828794479e-002 5.9312266111373901e-001
- <_>
-
- 0 -1 350 1.3619948178529739e-002
-
- -1.3920906186103821e-001 2.6931121945381165e-001
- <_>
-
- 0 -1 383 -3.7001757882535458e-003
-
- -2.6682609319686890e-001 1.4955024421215057e-001
- <_>
-
- 0 -1 481 1.5951462090015411e-002
-
- 3.0041305348277092e-002 -6.7943179607391357e-001
- <_>
-
- 0 -1 478 2.3432243615388870e-003
-
- 4.9472317099571228e-002 -7.3165643215179443e-001
- <_>
-
- 0 -1 423 -4.0219593793153763e-003
-
- -3.9633533358573914e-001 8.4367558360099792e-002
- <_>
-
- 0 -1 942 1.3890343718230724e-002
-
- -1.1078495532274246e-001 3.0365592241287231e-001
- <_>
-
- 0 -1 777 -1.2505413033068180e-003
-
- 2.0580539107322693e-001 -1.3080060482025146e-001
- <_>
-
- 0 -1 132 1.0764427483081818e-001
-
- 7.7789157629013062e-002 -3.3906123042106628e-001
- <_>
-
- 0 -1 631 4.3811961077153683e-003
-
- -1.1201550066471100e-001 2.5211933255195618e-001
- <_>
-
- 0 -1 686 -1.2142172083258629e-002
-
- 3.7872961163520813e-001 -7.7070862054824829e-002
- <_>
-
- 0 -1 865 -4.4353669509291649e-003
-
- 2.1270920336246490e-001 -1.2447933107614517e-001
- <_>
-
- 0 -1 619 1.4904401032254100e-003
-
- 5.6515082716941833e-002 -5.1137989759445190e-001
- <_>
-
- 0 -1 792 -1.4859709888696671e-002
-
- 4.4488805532455444e-001 -6.3839435577392578e-002
- <_>
-
- 0 -1 515 2.5369194336235523e-003
-
- -1.4258751273155212e-001 1.8267530202865601e-001
- <_>
-
- 0 -1 558 -3.8392089772969484e-003
-
- 2.3361504077911377e-001 -1.1508828401565552e-001
- <_>
-
- 0 -1 717 1.1982237920165062e-003
-
- 4.8276327550411224e-002 -4.9198591709136963e-001
- <_>
-
- 0 -1 378 -1.8510858062654734e-003
-
- 1.4056424796581268e-001 -1.6454231739044189e-001
- <_>
-
- 0 -1 918 -1.2120591476559639e-002
-
- 3.7157261371612549e-001 -6.2530189752578735e-002
- <_>
-
- 0 -1 401 1.1447809636592865e-002
-
- 4.1043214499950409e-002 -5.2705597877502441e-001
- <_>
-
- 0 -1 511 -1.4917021617293358e-002
-
- 4.0471947193145752e-001 -5.6559596210718155e-002
- <_>
-
- 0 -1 472 3.1782940030097961e-002
-
- 3.1669221818447113e-002 -7.1189236640930176e-001
- <_>
-
- 0 -1 204 2.8533251024782658e-003
-
- -1.3680589199066162e-001 1.5116590261459351e-001
- <_>
-
- 0 -1 780 -2.0387873053550720e-002
-
- 5.3041487932205200e-001 -3.6561626940965652e-002
- <_>
-
- 0 -1 225 1.6838125884532928e-002
-
- -7.6846949756145477e-002 2.3742672801017761e-001
- <_>
-
- 0 -1 109 6.1867576092481613e-002
-
- 3.4019146114587784e-002 -5.8948117494583130e-001
- <_>
-
- 0 -1 36 1.9018281251192093e-002
-
- -8.8034287095069885e-002 2.8218820691108704e-001
- <_>
-
- 0 -1 288 9.3320291489362717e-003
-
- 3.1055718660354614e-002 -6.0995835065841675e-001
- <_>
-
- 0 -1 553 -1.7446001293137670e-003
-
- -3.1894925236701965e-001 5.7640552520751953e-002
- <_>
-
- 0 -1 497 -3.7551252171397209e-004
-
- -2.9193779826164246e-001 6.5971598029136658e-002
- <_>
-
- 0 -1 906 -3.6254348233342171e-003
-
- -5.2228099107742310e-001 3.2974440604448318e-002
- <_>
-
- 0 -1 49 3.1154025346040726e-003
-
- 3.4256361424922943e-002 -4.9392226338386536e-001
- <_>
-
- 0 -1 761 -6.5814116969704628e-003
-
- -8.5536497831344604e-001 1.7195183783769608e-002
- <_>
-
- 0 -1 154 3.6019994877278805e-004
-
- -1.1677443981170654e-001 1.4939773082733154e-001
- <_>
-
- 0 -1 42 2.1521452814340591e-002
-
- 6.1724990606307983e-002 -3.0582705140113831e-001
- <_>
-
- 0 -1 304 -3.1574545428156853e-003
-
- 2.7675440907478333e-001 -7.9728044569492340e-002
- <_>
-
- 0 -1 608 6.8585420958697796e-003
-
- -4.5498296618461609e-002 4.0476050972938538e-001
- <_>
-
- 0 -1 201 2.3597612977027893e-002
-
- -6.8263813853263855e-002 2.7455106377601624e-001
- <_>
-
- 0 -1 182 4.1193626821041107e-002
-
- 2.7521848678588867e-002 -7.5676482915878296e-001
- <_>
-
- 0 -1 133 -1.2081373482942581e-002
-
- -6.3366323709487915e-001 2.1798284724354744e-002
- <_>
-
- 0 -1 716 -4.3834196403622627e-003
-
- 2.2090788185596466e-001 -8.4348171949386597e-002
- <_>
-
- 0 -1 619 -9.1258285101503134e-004
-
- -3.3701941370964050e-001 5.0720885396003723e-002
- <_>
-
- 0 -1 675 -8.5975639522075653e-003
-
- 1.1742196232080460e-001 -1.5156917273998260e-001
- <_>
-
- 0 -1 904 -7.4663115665316582e-003
-
- 4.0097141265869141e-001 -4.4417705386877060e-002
- <_>
-
- 0 -1 193 1.2276999652385712e-002
-
- -7.3920600116252899e-002 2.5140073895454407e-001
- <_>
-
- 0 -1 283 -2.6504354551434517e-002
-
- 1.3177506625652313e-001 -1.5368436276912689e-001
- <_>
-
- 0 -1 359 -2.9700677841901779e-002
-
- -5.3993326425552368e-001 3.4572057425975800e-002
- <_>
-
- 0 -1 549 -1.0448409244418144e-002
-
- 4.0107232332229614e-001 -4.6194877475500107e-002
- <_>
-
- 0 -1 274 5.0177536904811859e-003
-
- -6.5788470208644867e-002 2.5757649540901184e-001
- <_>
-
- 0 -1 509 2.3238372057676315e-002
-
- 2.3455925285816193e-002 -7.7699542045593262e-001
- <_>
-
- 0 -1 908 -4.9220167100429535e-002
-
- 3.9117750525474548e-001 -4.7477778047323227e-002
- <_>
-
- 0 -1 936 -9.7046373412013054e-003
-
- 3.3891412615776062e-001 -5.0453528761863708e-002
- <_>
-
- 0 -1 856 1.6913980245590210e-002
-
- 4.0467191487550735e-002 -4.3838000297546387e-001
- <_>
-
- 0 -1 129 -7.5155749917030334e-002
-
- -6.0346192121505737e-001 2.7455519884824753e-002
- <_>
-
- 0 -1 436 1.1202652007341385e-002
-
- 2.4983508512377739e-002 -5.8596074581146240e-001
- <_>
-
- 0 -1 266 -3.9950847625732422e-002
-
- -5.3495115041732788e-001 2.9331879690289497e-002
- <_>
-
- 0 -1 1 7.1143209934234619e-003
-
- 3.1055316329002380e-002 -5.1785355806350708e-001
- <_>
-
- 0 -1 930 -2.7165055274963379e-002
-
- 3.4092447161674500e-001 -4.8697970807552338e-002
- <_>
-
- 0 -1 135 1.5079226344823837e-002
-
- -1.2215464562177658e-001 1.3460277020931244e-001
- <_>
-
- 0 -1 842 5.4478123784065247e-003
-
- -9.0178862214088440e-002 1.9025686383247375e-001
- <_>
-
- 0 -1 381 -7.4798073619604111e-003
-
- 2.4245217442512512e-001 -6.8944938480854034e-002
- <_>
-
- 0 -1 412 2.9248408973217010e-002
-
- -8.9382030069828033e-002 1.9680260121822357e-001
- <_>
-
- 0 -1 613 -5.1055247895419598e-003
-
- -4.0537586808204651e-001 4.3955769389867783e-002
- <_>
-
- 0 -1 417 -5.7464219629764557e-002
-
- -7.8487586975097656e-001 1.8840260803699493e-002
- <_>
-
- 0 -1 682 -1.3099622447043657e-003
-
- 1.2043049931526184e-001 -1.2602043151855469e-001
- <_>
-
- 0 -1 409 -1.0759031400084496e-002
-
- 4.6101579070091248e-001 -3.9381790906190872e-002
- <_>
-
- 0 -1 440 -4.4700078666210175e-002
-
- -4.9018231034278870e-001 3.9805438369512558e-002
- <_>
-
- 0 -1 697 2.6103520765900612e-002
-
- 3.3186998218297958e-002 -4.4388863444328308e-001
- <_>
-
- 0 -1 722 -3.0565187335014343e-003
-
- -3.1978246569633484e-001 4.8716515302658081e-002
- <_>
-
- 0 -1 113 6.5829858183860779e-002
-
- 1.8730893731117249e-002 -7.3743104934692383e-001
- <_>
-
- 0 -1 57 2.5423550978302956e-003
-
- 6.1064947396516800e-002 -2.3935855925083160e-001
- <_>
-
- 0 -1 755 -1.7830528318881989e-002
-
- 3.3646425604820251e-001 -4.3943304568529129e-002
- <_>
-
- 0 -1 223 5.9305625036358833e-003
-
- -6.8004354834556580e-002 2.1438401937484741e-001
- <_>
-
- 0 -1 156 -4.7256931662559509e-002
-
- 2.3610806465148926e-001 -7.9913109540939331e-002
- <_>
-
- 0 -1 146 1.7100328579545021e-002
-
- -4.8104494810104370e-002 3.4734794497489929e-001
- <_>
-
- 0 -1 174 -3.4349232912063599e-002
-
- 1.6535361111164093e-001 -8.9516580104827881e-002
- <_>
-
- 0 -1 370 1.6256177332252264e-003
-
- -7.9110637307167053e-002 1.9441387057304382e-001
- <_>
-
- 0 -1 724 -1.8217334523797035e-002
-
- 4.5723637938499451e-001 -3.1193139031529427e-002
- <_>
-
- 0 -1 749 2.1156244911253452e-003
-
- 2.7684733271598816e-002 -5.4580938816070557e-001
- <_>
-
- 0 -1 169 -2.6387263089418411e-002
-
- 2.4881765246391296e-001 -5.7665079832077026e-002
- <_>
-
- 0 -1 18 4.5990861952304840e-002
-
- -1.2064179033041000e-001 1.2435591220855713e-001
- <_>
-
- 0 -1 523 1.0681749880313873e-001
-
- 5.0562918186187744e-002 -3.4403973817825317e-001
-
- <_>
- 85
- -2.2744355201721191e+000
-
- <_>
-
- 0 -1 252 1.6897995024919510e-002
-
- -6.9196498394012451e-001 -5.5616941303014755e-002
- <_>
-
- 0 -1 862 1.1701794341206551e-002
-
- -2.7923116087913513e-001 3.9880016446113586e-001
- <_>
-
- 0 -1 618 2.7141885831952095e-002
-
- 1.4071331918239594e-001 -4.8508083820343018e-001
- <_>
-
- 0 -1 949 -1.4755494194105268e-003
-
- 3.7315878272056580e-001 -1.4565770328044891e-001
- <_>
-
- 0 -1 464 1.5615923330187798e-003
-
- -9.6974156796932220e-002 3.6338686943054199e-001
- <_>
-
- 0 -1 292 -3.5046115517616272e-002
-
- 6.5541946887969971e-001 -6.3480094075202942e-002
- <_>
-
- 0 -1 471 -2.7439640834927559e-003
-
- -4.4147095084190369e-001 8.3881981670856476e-002
- <_>
-
- 0 -1 128 1.3140615075826645e-002
-
- 6.2391642481088638e-002 -5.2230197191238403e-001
- <_>
-
- 0 -1 624 -2.3408148437738419e-002
-
- -5.7339686155319214e-001 6.4651705324649811e-002
- <_>
-
- 0 -1 878 1.9269579788669944e-003
-
- -1.3906709849834442e-001 2.6013106107711792e-001
- <_>
-
- 0 -1 510 9.1457850066944957e-004
-
- 8.7518453598022461e-002 -4.9381819367408752e-001
- <_>
-
- 0 -1 76 -9.2652775347232819e-003
-
- -4.3321701884269714e-001 5.2230410277843475e-002
- <_>
-
- 0 -1 437 -2.0753231365233660e-003
-
- -5.0082236528396606e-001 6.1019111424684525e-002
- <_>
-
- 0 -1 791 1.9411731045693159e-003
-
- -7.8411623835563660e-002 3.5945037007331848e-001
- <_>
-
- 0 -1 774 -1.2042262824252248e-003
-
- 2.4952164292335510e-001 -1.1495979875326157e-001
- <_>
-
- 0 -1 428 4.5398853719234467e-002
-
- 4.9534358084201813e-002 -5.7811236381530762e-001
- <_>
-
- 0 -1 243 1.6548346728086472e-002
-
- 4.0716260671615601e-002 -5.4614287614822388e-001
- <_>
-
- 0 -1 747 -2.6393149048089981e-002
-
- -6.4222121238708496e-001 3.5461250692605972e-002
- <_>
-
- 0 -1 315 -7.9056806862354279e-003
-
- 2.7603831887245178e-001 -9.6884578466415405e-002
- <_>
-
- 0 -1 294 -8.6138453334569931e-003
-
- 3.4293037652969360e-001 -9.2569984495639801e-002
- <_>
-
- 0 -1 220 1.2120688334107399e-002
-
- 4.1071321815252304e-002 -5.9789633750915527e-001
- <_>
-
- 0 -1 213 -2.3794029839336872e-003
-
- 1.7102584242820740e-001 -1.3294184207916260e-001
- <_>
-
- 0 -1 667 1.5191107988357544e-002
-
- -5.9681247919797897e-002 3.9729467034339905e-001
- <_>
-
- 0 -1 497 -9.4484502915292978e-004
-
- -4.9290084838867188e-001 4.8412941396236420e-002
- <_>
-
- 0 -1 110 -7.5291972607374191e-003
-
- -4.4807717204093933e-001 4.6233657747507095e-002
- <_>
-
- 0 -1 226 2.0139738917350769e-002
-
- -8.7880477309226990e-002 2.5611591339111328e-001
- <_>
-
- 0 -1 934 -6.2278993427753448e-003
-
- 3.8167408108711243e-001 -5.7190407067537308e-002
- <_>
-
- 0 -1 485 -1.4294605702161789e-002
-
- 2.2094787657260895e-001 -1.0475759208202362e-001
- <_>
-
- 0 -1 707 -5.4574096575379372e-003
-
- 2.4806049466133118e-001 -8.7989374995231628e-002
- <_>
-
- 0 -1 928 1.1277779936790466e-002
-
- -6.8190395832061768e-002 3.0197840929031372e-001
- <_>
-
- 0 -1 193 1.2542145326733589e-002
-
- -7.4142687022686005e-002 2.5129452347755432e-001
- <_>
-
- 0 -1 161 -1.0840824991464615e-001
-
- -6.1061251163482666e-001 3.2729376107454300e-002
- <_>
-
- 0 -1 403 1.5083145117387176e-003
-
- -7.0102758705615997e-002 3.0823647975921631e-001
- <_>
-
- 0 -1 745 -6.4324252307415009e-002
-
- -7.6457482576370239e-001 2.8049679473042488e-002
- <_>
-
- 0 -1 635 -1.0857153683900833e-002
-
- 3.0212178826332092e-001 -6.9806925952434540e-002
- <_>
-
- 0 -1 93 5.6619346141815186e-002
-
- -1.2564770877361298e-001 1.7084783315658569e-001
- <_>
-
- 0 -1 576 -2.4015609174966812e-002
-
- -4.6767771244049072e-001 4.4055789709091187e-002
- <_>
-
- 0 -1 554 1.6571693122386932e-002
-
- -1.5079098939895630e-001 1.3097193837165833e-001
- <_>
-
- 0 -1 452 -1.3210725039243698e-002
-
- 4.0740290284156799e-001 -4.6674277633428574e-002
- <_>
-
- 0 -1 121 -9.6322391182184219e-003
-
- -3.4347525238990784e-001 5.1074773073196411e-002
- <_>
-
- 0 -1 155 1.2867329642176628e-002
-
- -9.5492877066135406e-002 1.9662295281887054e-001
- <_>
-
- 0 -1 915 2.5710439309477806e-002
-
- 2.4007089436054230e-002 -7.1648633480072021e-001
- <_>
-
- 0 -1 116 -7.6815150678157806e-003
-
- -6.2318617105484009e-001 2.3343794047832489e-002
- <_>
-
- 0 -1 709 -3.0568044167011976e-003
-
- 1.6469573974609375e-001 -1.0857288539409637e-001
- <_>
-
- 0 -1 35 7.0850662887096405e-002
-
- 2.7203138917684555e-002 -6.5618228912353516e-001
- <_>
-
- 0 -1 639 -1.9809347577393055e-003
-
- -6.1460441350936890e-001 2.4520153179764748e-002
- <_>
-
- 0 -1 236 7.0611112751066685e-003
-
- -7.4253976345062256e-002 2.5537955760955811e-001
- <_>
-
- 0 -1 186 3.0076294206082821e-003
-
- -9.6944920718669891e-002 2.4430949985980988e-001
- <_>
-
- 0 -1 172 -3.0732229351997375e-002
-
- -6.0257941484451294e-001 2.9267333447933197e-002
- <_>
-
- 0 -1 450 1.6364458948373795e-002
-
- 2.3035932332277298e-002 -6.2698912620544434e-001
- <_>
-
- 0 -1 114 1.4988467097282410e-001
-
- -4.8197094351053238e-002 3.9452686905860901e-001
- <_>
-
- 0 -1 197 -8.2194441929459572e-003
-
- 1.0664895921945572e-001 -1.8545584380626678e-001
- <_>
-
- 0 -1 84 -8.2502886652946472e-003
-
- 1.2596343457698822e-001 -1.4223846793174744e-001
- <_>
-
- 0 -1 73 1.3518449850380421e-002
-
- 7.5415953993797302e-002 -2.6633748412132263e-001
- <_>
-
- 0 -1 446 -1.4376571401953697e-002
-
- 3.4983170032501221e-001 -4.7824632376432419e-002
- <_>
-
- 0 -1 602 1.2734688818454742e-002
-
- -5.0567589700222015e-002 3.5038754343986511e-001
- <_>
-
- 0 -1 857 -1.3710462953895330e-003
-
- 1.8082229793071747e-001 -9.6974305808544159e-002
- <_>
-
- 0 -1 306 -2.6267360895872116e-002
-
- 4.1006618738174438e-001 -4.0112689137458801e-002
- <_>
-
- 0 -1 59 2.1102664992213249e-002
-
- 2.7978396043181419e-002 -5.8651155233383179e-001
- <_>
-
- 0 -1 909 -1.4474790543317795e-002
-
- 3.6871808767318726e-001 -4.5918777585029602e-002
- <_>
-
- 0 -1 817 7.2440858930349350e-003
-
- -7.5330309569835663e-002 2.0376025140285492e-001
- <_>
-
- 0 -1 815 1.0546022094786167e-002
-
- -6.1415266245603561e-002 3.0458399653434753e-001
- <_>
-
- 0 -1 101 5.5407796055078506e-002
-
- 2.5191115215420723e-002 -6.5944659709930420e-001
- <_>
-
- 0 -1 91 9.4949062913656235e-003
-
- -1.5944498777389526e-001 1.0568149387836456e-001
- <_>
-
- 0 -1 925 -6.2020965851843357e-003
-
- 2.7509790658950806e-001 -6.5234497189521790e-002
- <_>
-
- 0 -1 507 1.3317565619945526e-001
-
- 2.2181767970323563e-002 -7.3483341932296753e-001
- <_>
-
- 0 -1 448 2.5796357076615095e-003
-
- 1.9557425752282143e-002 -6.5313297510147095e-001
- <_>
-
- 0 -1 390 3.4660965204238892e-002
-
- -5.1162503659725189e-002 3.2590973377227783e-001
- <_>
-
- 0 -1 30 9.5607116818428040e-002
-
- -2.4739582091569901e-002 5.7837259769439697e-001
- <_>
-
- 0 -1 148 1.6605708748102188e-002
-
- 5.7055354118347168e-002 -3.5466542840003967e-001
- <_>
-
- 0 -1 123 1.1670887470245361e-002
-
- -8.0407410860061646e-002 1.9471745193004608e-001
- <_>
-
- 0 -1 208 1.0822312906384468e-002
-
- 2.6732437312602997e-002 -5.8917897939682007e-001
- <_>
-
- 0 -1 708 2.7245271950960159e-002
-
- 3.0616169795393944e-002 -4.8082390427589417e-001
- <_>
-
- 0 -1 217 -1.3694438338279724e-001
-
- -4.8311397433280945e-001 3.3773597329854965e-002
- <_>
-
- 0 -1 899 -1.4758360339328647e-003
-
- 2.5075155496597290e-001 -6.7788824439048767e-002
- <_>
-
- 0 -1 275 2.7167074382305145e-002
-
- 2.5224637240171432e-002 -6.3691717386245728e-001
- <_>
-
- 0 -1 657 1.8945746123790741e-002
-
- -5.7760879397392273e-002 2.6149269938468933e-001
- <_>
-
- 0 -1 102 1.2368987500667572e-001
-
- -3.2363165169954300e-002 4.5130741596221924e-001
- <_>
-
- 0 -1 43 3.9710897952318192e-002
-
- -3.0226422473788261e-002 4.6590203046798706e-001
- <_>
-
- 0 -1 136 -3.6290191113948822e-002
-
- 3.6348423361778259e-001 -4.1874047368764877e-002
- <_>
-
- 0 -1 846 2.5501720607280731e-002
-
- 3.5494077950716019e-002 -4.5727846026420593e-001
- <_>
-
- 0 -1 772 5.3392872214317322e-003
-
- -6.0394711792469025e-002 2.5488924980163574e-001
- <_>
-
- 0 -1 950 7.9108221689239144e-004
-
- 5.4109033197164536e-002 -2.7065926790237427e-001
- <_>
-
- 0 -1 929 -1.6701441258192062e-002
-
- 4.8040628433227539e-001 -3.0404916033148766e-002
- <_>
-
- 0 -1 566 7.1975095197558403e-003
-
- -7.0362947881221771e-002 1.9959311187267303e-001
-
- <_>
- 100
- -2.2887177467346191e+000
-
- <_>
-
- 0 -1 286 -1.6051483154296875e-001
-
- 9.3009121716022491e-002 -6.5350115299224854e-001
- <_>
-
- 0 -1 623 1.2457310222089291e-002
-
- -3.1717920303344727e-001 2.3368784785270691e-001
- <_>
-
- 0 -1 29 2.3608796764165163e-003
-
- -2.9248744249343872e-001 1.8054312467575073e-001
- <_>
-
- 0 -1 339 1.4379444532096386e-002
-
- -5.7956293225288391e-002 7.6479458808898926e-001
- <_>
-
- 0 -1 871 6.8126469850540161e-003
-
- -1.4748461544513702e-001 2.3818431794643402e-001
- <_>
-
- 0 -1 247 4.3051101267337799e-002
-
- 8.7559670209884644e-002 -7.2269368171691895e-001
- <_>
-
- 0 -1 867 -5.0154160708189011e-002
-
- 3.1918609142303467e-001 -1.3582608103752136e-001
- <_>
-
- 0 -1 212 -3.1796738039702177e-003
-
- 2.7597072720527649e-001 -9.0522617101669312e-002
- <_>
-
- 0 -1 677 -1.2342665344476700e-002
-
- -3.9158377051353455e-001 5.3565893322229385e-002
- <_>
-
- 0 -1 897 1.1861260049045086e-002
-
- -6.1517983675003052e-002 3.6472269892692566e-001
- <_>
-
- 0 -1 252 -2.1985735744237900e-002
-
- 6.5143728256225586e-001 -4.0598560124635696e-002
- <_>
-
- 0 -1 63 -1.2279948219656944e-002
-
- 2.1631649136543274e-001 -1.2024078518152237e-001
- <_>
-
- 0 -1 640 8.2167033106088638e-003
-
- -9.4497188925743103e-002 2.4828021228313446e-001
- <_>
-
- 0 -1 357 1.0111754760146141e-002
-
- -3.3160492777824402e-002 6.2502938508987427e-001
- <_>
-
- 0 -1 924 -7.7025225618854165e-004
-
- 2.3218974471092224e-001 -1.0222402960062027e-001
- <_>
-
- 0 -1 467 -1.4080689288675785e-003
-
- 1.3447046279907227e-001 -1.6994857788085938e-001
- <_>
-
- 0 -1 140 1.0420590639114380e-002
-
- 2.9845444485545158e-002 -7.5183397531509399e-001
- <_>
-
- 0 -1 356 1.3691674917936325e-002
-
- 2.8088988736271858e-002 -5.7496672868728638e-001
- <_>
-
- 0 -1 155 1.7491653561592102e-002
-
- -9.8534837365150452e-002 2.2351761162281036e-001
- <_>
-
- 0 -1 762 7.4883676134049892e-003
-
- -9.7045794129371643e-002 2.0625646412372589e-001
- <_>
-
- 0 -1 104 -8.4146633744239807e-003
-
- -4.8472663760185242e-001 4.1302844882011414e-002
- <_>
-
- 0 -1 342 3.0617808923125267e-002
-
- -3.7334404885768890e-002 6.1179280281066895e-001
- <_>
-
- 0 -1 326 1.6346010379493237e-003
-
- -1.8315000832080841e-001 1.0951925814151764e-001
- <_>
-
- 0 -1 901 -1.1816060170531273e-002
-
- 3.0801647901535034e-001 -6.1308264732360840e-002
- <_>
-
- 0 -1 351 -1.0661455802619457e-002
-
- 3.3249661326408386e-001 -5.0642840564250946e-002
- <_>
-
- 0 -1 84 -9.6190627664327621e-003
-
- 1.3975782692432404e-001 -1.3763442635536194e-001
- <_>
-
- 0 -1 289 -1.2881286442279816e-002
-
- 3.6742180585861206e-001 -5.0860747694969177e-002
- <_>
-
- 0 -1 824 1.3589482754468918e-002
-
- -5.1274802535772324e-002 3.1885984539985657e-001
- <_>
-
- 0 -1 234 4.6852193772792816e-003
-
- -7.2946086525917053e-002 2.5181108713150024e-001
- <_>
-
- 0 -1 432 1.9752513617277145e-002
-
- -1.4621073007583618e-001 1.2726816534996033e-001
- <_>
-
- 0 -1 454 3.6341309547424316e-002
-
- 2.4868825450539589e-002 -6.9947302341461182e-001
- <_>
-
- 0 -1 636 -1.1957485694438219e-003
-
- 1.5675933659076691e-001 -1.1705233156681061e-001
- <_>
-
- 0 -1 40 -9.9432021379470825e-003
-
- -3.4487789869308472e-001 4.9324721097946167e-002
- <_>
-
- 0 -1 269 6.0083293356001377e-003
-
- 3.3568043261766434e-002 -4.3638321757316589e-001
- <_>
-
- 0 -1 14 9.6278168261051178e-002
-
- 4.0310282260179520e-002 -3.9266702532768250e-001
- <_>
-
- 0 -1 154 4.3072472908534110e-004
-
- -1.0427023470401764e-001 1.4397470653057098e-001
- <_>
-
- 0 -1 504 -4.7720400616526604e-003
-
- -4.4805496931076050e-001 3.4855298697948456e-002
- <_>
-
- 0 -1 87 -1.0016669984906912e-003
-
- 1.3649077713489532e-001 -1.2140301614999771e-001
- <_>
-
- 0 -1 254 2.3308012634515762e-002
-
- 3.6392133682966232e-002 -4.5537215471267700e-001
- <_>
-
- 0 -1 802 -4.8546120524406433e-003
-
- 1.5793082118034363e-001 -9.6185155212879181e-002
- <_>
-
- 0 -1 795 -6.5906550735235214e-003
-
- 3.2166856527328491e-001 -4.9290131777524948e-002
- <_>
-
- 0 -1 126 -2.7226015925407410e-002
-
- 2.8352561593055725e-001 -5.1984444260597229e-002
- <_>
-
- 0 -1 938 5.5622356012463570e-003
-
- -3.3917389810085297e-002 4.3498530983924866e-001
- <_>
-
- 0 -1 534 -5.8775981888175011e-003
-
- 1.7455618083477020e-001 -8.4790699183940887e-002
- <_>
-
- 0 -1 627 -1.1768937110900879e-003
-
- -4.4403216242790222e-001 3.4572694450616837e-002
- <_>
-
- 0 -1 625 1.4337021857500076e-003
-
- -8.8692568242549896e-002 1.6940893232822418e-001
- <_>
-
- 0 -1 51 1.3953970745205879e-002
-
- 3.9221145212650299e-002 -3.8308286666870117e-001
- <_>
-
- 0 -1 106 5.3161740303039551e-002
-
- -3.9227265864610672e-002 4.0637263655662537e-001
- <_>
-
- 0 -1 916 1.1670306324958801e-002
-
- -6.2661647796630859e-002 2.2897149622440338e-001
- <_>
-
- 0 -1 524 -8.5611653048545122e-004
-
- -3.1393322348594666e-001 4.4154506176710129e-002
- <_>
-
- 0 -1 362 3.1659279484301805e-003
-
- -1.0416875034570694e-001 1.4386938512325287e-001
- <_>
-
- 0 -1 94 9.2105150222778320e-002
-
- 2.5259945541620255e-002 -6.3980853557586670e-001
- <_>
-
- 0 -1 681 2.2438270971179008e-003
-
- 2.9625944793224335e-002 -4.4926467537879944e-001
- <_>
-
- 0 -1 592 -1.4502200298011303e-002
-
- 2.3043723404407501e-001 -6.8583212792873383e-002
- <_>
-
- 0 -1 17 3.1762875616550446e-002
-
- -1.1820482462644577e-001 1.3017164170742035e-001
- <_>
-
- 0 -1 372 8.3491904661059380e-003
-
- -5.4794549942016602e-002 3.0562251806259155e-001
- <_>
-
- 0 -1 945 1.1813377961516380e-002
-
- -4.4218052178621292e-002 3.2657644152641296e-001
- <_>
-
- 0 -1 517 -4.3407902121543884e-003
-
- 2.3012351989746094e-001 -6.2401693314313889e-002
- <_>
-
- 0 -1 835 -5.1777150481939316e-002
-
- -4.2195704579353333e-001 3.3818338066339493e-002
- <_>
-
- 0 -1 573 9.5773371867835522e-004
-
- -1.2982761859893799e-001 1.0589899122714996e-001
- <_>
-
- 0 -1 329 2.6355611626058817e-003
-
- -1.1849098652601242e-001 1.2649086117744446e-001
- <_>
-
- 0 -1 738 -6.9736450910568237e-002
-
- 5.4316484928131104e-001 -2.8468221426010132e-002
- <_>
-
- 0 -1 166 -4.1691556572914124e-002
-
- 1.8529292941093445e-001 -7.9085260629653931e-002
- <_>
-
- 0 -1 72 3.0405964702367783e-002
-
- -6.7499466240406036e-002 2.3227298259735107e-001
- <_>
-
- 0 -1 202 1.6526731848716736e-001
-
- 2.3192871361970901e-002 -6.6413503885269165e-001
- <_>
-
- 0 -1 244 -7.9902745783329010e-003
-
- 1.6699096560478210e-001 -8.0209225416183472e-002
- <_>
-
- 0 -1 435 -8.4093026816844940e-003
-
- 3.8385570049285889e-001 -3.3093310892581940e-002
- <_>
-
- 0 -1 580 -6.2388582155108452e-003
-
- 2.2031579911708832e-001 -5.9756781905889511e-002
- <_>
-
- 0 -1 416 2.2657278925180435e-002
-
- 2.9750887304544449e-002 -4.3571525812149048e-001
- <_>
-
- 0 -1 245 -3.3273398876190186e-002
-
- -7.2214579582214355e-001 1.7277766019105911e-002
- <_>
-
- 0 -1 805 -7.5985761359333992e-003
-
- -4.8032435774803162e-001 2.3796260356903076e-002
- <_>
-
- 0 -1 490 1.4554752968251705e-002
-
- 2.0614990964531898e-002 -5.7951718568801880e-001
- <_>
-
- 0 -1 348 -2.4409522302448750e-003
-
- 1.5682564675807953e-001 -8.2513608038425446e-002
- <_>
-
- 0 -1 216 -2.7174502611160278e-002
-
- -5.4916822910308838e-001 2.3511687293648720e-002
- <_>
-
- 0 -1 599 1.8674493767321110e-003
-
- 3.5896647721529007e-002 -3.5593807697296143e-001
- <_>
-
- 0 -1 599 -1.7106164013966918e-003
-
- -2.9658839106559753e-001 4.5083675533533096e-002
- <_>
-
- 0 -1 698 -1.2188366800546646e-001
-
- -6.8481236696243286e-001 1.6469523310661316e-002
- <_>
-
- 0 -1 206 1.6452776268124580e-002
-
- 1.6632448881864548e-002 -6.3031005859375000e-001
- <_>
-
- 0 -1 913 3.3029774203896523e-003
-
- 5.2817359566688538e-002 -2.3288796842098236e-001
- <_>
-
- 0 -1 678 6.5974113531410694e-003
-
- -5.9827085584402084e-002 2.2615881264209747e-001
- <_>
-
- 0 -1 947 -2.2020633332431316e-003
-
- 2.2270961105823517e-001 -5.8337379246950150e-002
- <_>
-
- 0 -1 582 -8.9172367006540298e-003
-
- 2.3682470619678497e-001 -5.5845208466053009e-002
- <_>
-
- 0 -1 100 -3.8233667612075806e-002
-
- 1.9340702891349792e-001 -7.3905274271965027e-002
- <_>
-
- 0 -1 214 -5.8171510696411133e-002
-
- -3.3873862028121948e-001 3.6934167146682739e-002
- <_>
-
- 0 -1 142 1.3129880651831627e-002
-
- -5.7335916906595230e-002 2.4769510328769684e-001
- <_>
-
- 0 -1 606 -2.3510225117206573e-002
-
- -7.3440921306610107e-001 2.1062126383185387e-002
- <_>
-
- 0 -1 180 -3.2106369733810425e-002
-
- 1.9888436794281006e-001 -6.8882115185260773e-002
- <_>
-
- 0 -1 798 1.0653462260961533e-002
-
- -3.1876940280199051e-002 3.7958627939224243e-001
- <_>
-
- 0 -1 325 2.5438904762268066e-002
-
- -2.5426354259252548e-002 4.6004450321197510e-001
- <_>
-
- 0 -1 239 2.6357024908065796e-002
-
- -4.9807246774435043e-002 2.5959959626197815e-001
- <_>
-
- 0 -1 525 5.6436131708323956e-003
-
- -4.5353759080171585e-002 2.8858882188796997e-001
- <_>
-
- 0 -1 267 -4.3369065970182419e-003
-
- 1.4867325127124786e-001 -8.8411331176757813e-002
- <_>
-
- 0 -1 215 -1.9298204779624939e-001
-
- -5.3079867362976074e-001 2.5263534858822823e-002
- <_>
-
- 0 -1 734 5.7046163827180862e-002
-
- 1.1847544461488724e-002 -8.2090246677398682e-001
- <_>
-
- 0 -1 352 4.9701407551765442e-002
-
- 1.3225952163338661e-002 -6.8998688459396362e-001
- <_>
-
- 0 -1 278 -2.8292792849242687e-003
-
- 1.7430420219898224e-001 -6.6152326762676239e-002
- <_>
-
- 0 -1 476 -1.4506326988339424e-002
-
- -3.1870725750923157e-001 3.8834158331155777e-002
- <_>
-
- 0 -1 859 3.5564824938774109e-002
-
- -5.6947514414787292e-002 2.1859169006347656e-001
- <_>
-
- 0 -1 98 2.0967530086636543e-002
-
- -5.9812918305397034e-002 2.2214832901954651e-001
- <_>
-
- 0 -1 127 7.3756486177444458e-002
-
- 2.5129400193691254e-002 -4.9916529655456543e-001
-
- <_>
- 100
- -2.2359671592712402e+000
-
- <_>
-
- 0 -1 285 -9.3501225113868713e-002
-
- -4.6586804091930389e-002 -7.2199982404708862e-001
- <_>
-
- 0 -1 238 4.9442616291344166e-003
-
- -3.9842179417610168e-001 2.1402300894260406e-001
- <_>
-
- 0 -1 799 1.0407378897070885e-002
-
- -1.3988684117794037e-001 3.9579308032989502e-001
- <_>
-
- 0 -1 322 -1.4162844978272915e-002
-
- 6.4931660890579224e-001 -5.7302106171846390e-002
- <_>
-
- 0 -1 449 9.8008674103766680e-004
-
- -1.7719046771526337e-001 2.0141038298606873e-001
- <_>
-
- 0 -1 218 1.4206364750862122e-002
-
- -9.3258224427700043e-002 3.4144768118858337e-001
- <_>
-
- 0 -1 879 2.5848676450550556e-003
-
- -1.4990748465061188e-001 2.2581319510936737e-001
- <_>
-
- 0 -1 22 8.0643901601433754e-003
-
- -8.8275857269763947e-002 2.8663924336433411e-001
- <_>
-
- 0 -1 881 -8.6236204952001572e-003
-
- 3.3490571379661560e-001 -8.2069411873817444e-002
- <_>
-
- 0 -1 723 1.2022950686514378e-002
-
- -6.3569039106369019e-002 3.9191362261772156e-001
- <_>
-
- 0 -1 665 -1.5419950708746910e-002
-
- 4.4637352228164673e-001 -6.6652692854404449e-002
- <_>
-
- 0 -1 735 -6.3524805009365082e-003
-
- 1.8987259268760681e-001 -1.2892219424247742e-001
- <_>
-
- 0 -1 408 6.9541163742542267e-002
-
- 4.3989829719066620e-002 -4.4642734527587891e-001
- <_>
-
- 0 -1 368 7.4983224272727966e-002
-
- -5.2028596401214600e-002 5.7951992750167847e-001
- <_>
-
- 0 -1 486 2.0330501720309258e-003
-
- -1.3492821156978607e-001 2.0830303430557251e-001
- <_>
-
- 0 -1 28 1.8707301467657089e-002
-
- 3.0162446200847626e-002 -7.5620234012603760e-001
- <_>
-
- 0 -1 33 9.1869030147790909e-003
-
- -1.5992332994937897e-001 1.3838322460651398e-001
- <_>
-
- 0 -1 473 -2.0068701356649399e-002
-
- 4.9636912345886230e-001 -3.8212534040212631e-002
- <_>
-
- 0 -1 32 9.3690613284707069e-003
-
- 2.7963882312178612e-002 -7.0575749874114990e-001
- <_>
-
- 0 -1 63 -9.2746205627918243e-003
-
- 1.7214477062225342e-001 -1.1743877083063126e-001
- <_>
-
- 0 -1 671 -3.7561631761491299e-003
-
- 1.9893965125083923e-001 -1.0429763048887253e-001
- <_>
-
- 0 -1 642 -2.8749569319188595e-003
-
- -3.7584275007247925e-001 4.6344734728336334e-002
- <_>
-
- 0 -1 145 -1.1727647855877876e-002
-
- -4.4696572422981262e-001 4.0343362838029861e-002
- <_>
-
- 0 -1 590 1.0945920832455158e-002
-
- 5.6218206882476807e-002 -2.9916441440582275e-001
- <_>
-
- 0 -1 341 -1.2209227308630943e-002
-
- 3.9286783337593079e-001 -4.2874403297901154e-002
- <_>
-
- 0 -1 447 -2.5397611781954765e-002
-
- -3.8478189706802368e-001 4.3343432247638702e-002
- <_>
-
- 0 -1 746 -4.5675365254282951e-003
-
- 2.3299069702625275e-001 -7.3202215135097504e-002
- <_>
-
- 0 -1 935 -6.0586854815483093e-003
-
- 2.2465232014656067e-001 -7.7056594192981720e-002
- <_>
-
- 0 -1 131 1.5789955854415894e-002
-
- -8.7083600461483002e-002 1.9742278754711151e-001
- <_>
-
- 0 -1 759 -1.7314129509031773e-003
-
- 2.0412902534008026e-001 -8.9147895574569702e-002
- <_>
-
- 0 -1 939 7.3486715555191040e-003
-
- -4.5228123664855957e-002 3.5152116417884827e-001
- <_>
-
- 0 -1 246 1.6278622671961784e-002
-
- 5.0431668758392334e-002 -3.4917074441909790e-001
- <_>
-
- 0 -1 151 -4.9730124883353710e-003
-
- 1.8474133312702179e-001 -9.4716101884841919e-002
- <_>
-
- 0 -1 334 1.3617072254419327e-002
-
- -3.4493431448936462e-002 5.1511102914810181e-001
- <_>
-
- 0 -1 516 -3.5471074283123016e-002
-
- -3.9388224482536316e-001 4.3496731668710709e-002
- <_>
-
- 0 -1 103 5.2554365247488022e-003
-
- -1.2609277665615082e-001 1.2129900604486465e-001
- <_>
-
- 0 -1 489 -4.1965182870626450e-002
-
- -6.2069499492645264e-001 2.4282006546854973e-002
- <_>
-
- 0 -1 61 9.6745520830154419e-002
-
- 3.0231734737753868e-002 -4.6271669864654541e-001
- <_>
-
- 0 -1 661 -6.8811019882559776e-003
-
- 2.8159707784652710e-001 -5.7276148349046707e-002
- <_>
-
- 0 -1 616 1.0784192010760307e-002
-
- -4.8847943544387817e-002 3.2464641332626343e-001
- <_>
-
- 0 -1 466 -3.3961618319153786e-003
-
- 4.0418368577957153e-001 -4.2481750249862671e-002
- <_>
-
- 0 -1 420 -6.9079827517271042e-003
-
- 1.1404169350862503e-001 -1.2768752872943878e-001
- <_>
-
- 0 -1 167 1.4355555176734924e-001
-
- -3.9203863590955734e-002 3.9233651757240295e-001
- <_>
-
- 0 -1 210 -3.5771834664046764e-003
-
- 1.4706018567085266e-001 -1.3173283636569977e-001
- <_>
-
- 0 -1 439 3.0234435573220253e-002
-
- 1.8946202471852303e-002 -8.0503576993942261e-001
- <_>
-
- 0 -1 567 7.8391470015048981e-004
-
- 8.7953150272369385e-002 -1.6678945720195770e-001
- <_>
-
- 0 -1 42 -2.2085051983594894e-002
-
- -3.8623884320259094e-001 4.2284723371267319e-002
- <_>
-
- 0 -1 818 -2.6205494999885559e-002
-
- 1.6326524317264557e-001 -1.0225085169076920e-001
- <_>
-
- 0 -1 581 -9.5918308943510056e-003
-
- 2.5218212604522705e-001 -6.0809265822172165e-002
- <_>
-
- 0 -1 242 -2.6144424453377724e-002
-
- -6.9495695829391479e-001 2.2685619071125984e-002
- <_>
-
- 0 -1 424 9.2253191396594048e-003
-
- -8.8936053216457367e-002 1.6087681055068970e-001
- <_>
-
- 0 -1 843 -3.1533516012132168e-003
-
- 2.2563895583152771e-001 -6.3495889306068420e-002
- <_>
-
- 0 -1 56 -6.6996468231081963e-003
-
- -2.4251624941825867e-001 6.1135187745094299e-002
- <_>
-
- 0 -1 282 -1.2584788724780083e-002
-
- 2.9776036739349365e-001 -4.9212120473384857e-002
- <_>
-
- 0 -1 903 -4.2148698121309280e-003
-
- 3.0259734392166138e-001 -4.4676482677459717e-002
- <_>
-
- 0 -1 653 -9.4317561015486717e-003
-
- 1.1043215543031693e-001 -1.2356746196746826e-001
- <_>
-
- 0 -1 654 2.1886886097490788e-003
-
- -6.1201002448797226e-002 2.2712202370166779e-001
- <_>
-
- 0 -1 398 2.4963401257991791e-002
-
- 2.4292556568980217e-002 -5.4634368419647217e-001
- <_>
-
- 0 -1 205 -8.7548848241567612e-003
-
- 2.5255405902862549e-001 -5.4619345813989639e-002
- <_>
-
- 0 -1 487 7.0049557834863663e-003
-
- 3.9875753223896027e-002 -3.8009002804756165e-001
- <_>
-
- 0 -1 258 3.7140229251235723e-003
-
- -9.3989297747612000e-002 1.5871012210845947e-001
- <_>
-
- 0 -1 565 -8.4969010204076767e-003
-
- 2.0674896240234375e-001 -6.4190469682216644e-002
- <_>
-
- 0 -1 147 -5.0333619117736816e-002
-
- 3.0274888873100281e-001 -4.3931342661380768e-002
- <_>
-
- 0 -1 80 7.2737382724881172e-003
-
- -8.7947271764278412e-002 1.5312801301479340e-001
- <_>
-
- 0 -1 58 9.9609624594449997e-003
-
- 4.6528778970241547e-002 -2.9576960206031799e-001
- <_>
-
- 0 -1 909 -1.3673231005668640e-002
-
- 3.2159554958343506e-001 -4.6024739742279053e-002
- <_>
-
- 0 -1 460 2.4796918034553528e-002
-
- 2.3450840264558792e-002 -6.3208627700805664e-001
- <_>
-
- 0 -1 790 -8.9704394340515137e-003
-
- 1.7290446162223816e-001 -8.1694059073925018e-002
- <_>
-
- 0 -1 191 -2.3638601414859295e-003
-
- 1.0641085356473923e-001 -1.2656879425048828e-001
- <_>
-
- 0 -1 45 -3.0800779350101948e-003
-
- 1.4082619547843933e-001 -9.4026930630207062e-002
- <_>
-
- 0 -1 138 -1.0759308934211731e-002
-
- -4.0597277879714966e-001 3.1949173659086227e-002
- <_>
-
- 0 -1 176 7.2143180295825005e-003
-
- 1.2054420076310635e-002 -8.5538458824157715e-001
- <_>
-
- 0 -1 384 1.9637834280729294e-002
-
- -4.5702952891588211e-002 3.0082041025161743e-001
- <_>
-
- 0 -1 181 -2.6587650179862976e-002
-
- -4.8827502131462097e-001 2.5739965960383415e-002
- <_>
-
- 0 -1 429 -2.8913402929902077e-003
-
- 1.5120062232017517e-001 -8.3084680140018463e-002
- <_>
-
- 0 -1 462 -1.7486744036432356e-004
-
- -1.6527174413204193e-001 7.9318381845951080e-002
- <_>
-
- 0 -1 93 5.8025561273097992e-002
-
- -9.3625135719776154e-002 1.3428705930709839e-001
- <_>
-
- 0 -1 895 7.7226985013112426e-004
-
- 6.4624220132827759e-002 -1.9347991049289703e-001
- <_>
-
- 0 -1 506 -6.4398542046546936e-002
-
- -8.3100390434265137e-001 1.3259679079055786e-002
- <_>
-
- 0 -1 794 2.7848746627569199e-002
-
- 1.3673855923116207e-002 -7.1600478887557983e-001
- <_>
-
- 0 -1 308 -1.7273522913455963e-002
-
- -6.1328560113906860e-001 1.7129577696323395e-002
- <_>
-
- 0 -1 117 2.2771380841732025e-002
-
- 1.4634012244641781e-002 -6.9125133752822876e-001
- <_>
-
- 0 -1 155 1.7879681661725044e-002
-
- -6.6493585705757141e-002 1.8808430433273315e-001
- <_>
-
- 0 -1 188 -7.5980871915817261e-003
-
- 2.1208682656288147e-001 -6.9655627012252808e-002
- <_>
-
- 0 -1 468 8.3334632217884064e-003
-
- -4.5091670006513596e-002 2.5533476471900940e-001
- <_>
-
- 0 -1 451 9.5366090536117554e-003
-
- 3.3587828278541565e-002 -3.8594719767570496e-001
- <_>
-
- 0 -1 349 1.9022613763809204e-002
-
- -4.2280010879039764e-002 3.0593034625053406e-001
- <_>
-
- 0 -1 522 3.6582566797733307e-002
-
- -6.8928316235542297e-002 1.8224547803401947e-001
- <_>
-
- 0 -1 159 -2.5450623035430908e-001
-
- -7.9693830013275146e-001 1.6522107645869255e-002
- <_>
-
- 0 -1 905 -5.8933448046445847e-002
-
- 3.6613103747367859e-001 -3.7511564791202545e-002
- <_>
-
- 0 -1 64 8.5881188511848450e-002
-
- 3.5934593528509140e-002 -3.7825050950050354e-001
- <_>
-
- 0 -1 810 -6.8585649132728577e-002
-
- -5.4236054420471191e-001 2.0104518160223961e-002
- <_>
-
- 0 -1 529 4.8160655423998833e-003
-
- -4.3085236102342606e-002 2.8620475530624390e-001
- <_>
-
- 0 -1 498 6.1599753098562360e-004
-
- 5.0022143870592117e-002 -2.7295649051666260e-001
- <_>
-
- 0 -1 710 7.4446541257202625e-003
-
- -6.7837722599506378e-002 1.9111913442611694e-001
- <_>
-
- 0 -1 333 1.3981198891997337e-002
-
- 2.1413592621684074e-002 -6.2269157171249390e-001
- <_>
-
- 0 -1 941 -1.4853913336992264e-002
-
- 4.0018329024314880e-001 -3.4097265452146530e-002
- <_>
-
- 0 -1 3 1.3497969135642052e-002
-
- 3.0796987935900688e-002 -4.2009493708610535e-001
- <_>
-
- 0 -1 887 9.1592809185385704e-003
-
- 3.0317120254039764e-002 -3.5625258088111877e-001
- <_>
-
- 0 -1 11 2.9643373563885689e-002
-
- -1.1319724470376968e-001 1.0797596722841263e-001
-
- <_>
- 100
- -2.0808603763580322e+000
-
- <_>
-
- 0 -1 284 -7.5377658009529114e-002
-
- -1.0360029339790344e-001 -7.0443350076675415e-001
- <_>
-
- 0 -1 301 -4.6968553215265274e-003
-
- 2.6461517810821533e-001 -2.6632103323936462e-001
- <_>
-
- 0 -1 851 4.5106429606676102e-003
-
- -1.9236828386783600e-001 2.4530071020126343e-001
- <_>
-
- 0 -1 324 -1.3677397742867470e-002
-
- 4.8842102289199829e-001 -7.8666172921657562e-002
- <_>
-
- 0 -1 621 8.4240939468145370e-003
-
- -1.1324168741703033e-001 2.8638821840286255e-001
- <_>
-
- 0 -1 827 1.0163122788071632e-003
-
- -1.7518180608749390e-001 1.6443368792533875e-001
- <_>
-
- 0 -1 375 3.2988777384161949e-003
-
- -7.6549887657165527e-002 2.8202313184738159e-001
- <_>
-
- 0 -1 85 1.4450255781412125e-002
-
- -1.4695851504802704e-001 1.9833040237426758e-001
- <_>
-
- 0 -1 328 5.9788756072521210e-002
-
- -2.7597570791840553e-002 6.0443407297134399e-001
- <_>
-
- 0 -1 668 -4.0823942981660366e-003
-
- 3.7376108765602112e-001 -6.6522486507892609e-002
- <_>
-
- 0 -1 651 9.4101820141077042e-003
-
- -7.5030580163002014e-002 3.3643370866775513e-001
- <_>
-
- 0 -1 770 1.2895615771412849e-002
-
- -6.6736064851284027e-002 3.4388977289199829e-001
- <_>
-
- 0 -1 0 1.8281452357769012e-003
-
- -7.6577022671699524e-002 3.0855756998062134e-001
- <_>
-
- 0 -1 811 1.2842542491853237e-002
-
- -6.6831089556217194e-002 3.5320571064949036e-001
- <_>
-
- 0 -1 556 2.6731539517641068e-002
-
- 4.3738048523664474e-002 -5.4744714498519897e-001
- <_>
-
- 0 -1 593 -2.1810945123434067e-002
-
- -4.9039456248283386e-001 3.5305779427289963e-002
- <_>
-
- 0 -1 397 1.4120168052613735e-003
-
- -1.7367108166217804e-001 1.1572990566492081e-001
- <_>
-
- 0 -1 494 1.5707452548667789e-003
-
- -1.1095841974020004e-001 1.6702808439731598e-001
- <_>
-
- 0 -1 869 -7.3387438897043467e-004
-
- 1.8617554008960724e-001 -9.1079324483871460e-002
- <_>
-
- 0 -1 495 -6.4388057217001915e-004
-
- -2.6845857501029968e-001 6.1447944492101669e-002
- <_>
-
- 0 -1 427 1.1414934694766998e-001
-
- 2.0975470542907715e-002 -7.1357190608978271e-001
- <_>
-
- 0 -1 931 1.3404923956841230e-003
-
- -9.0797364711761475e-002 1.8696101009845734e-001
- <_>
-
- 0 -1 46 2.3350983858108521e-002
-
- 2.9028130695223808e-002 -5.2345710992813110e-001
- <_>
-
- 0 -1 143 1.5429967083036900e-002
-
- -9.4941243529319763e-002 1.6368669271469116e-001
- <_>
-
- 0 -1 357 1.0943166911602020e-002
-
- -3.1125182285904884e-002 5.9323889017105103e-001
- <_>
-
- 0 -1 705 2.6839743368327618e-003
-
- -7.5778268277645111e-002 2.1814092993736267e-001
- <_>
-
- 0 -1 39 -6.2261838465929031e-003
-
- -2.8783807158470154e-001 5.5791638791561127e-002
- <_>
-
- 0 -1 207 1.0724554955959320e-001
-
- 2.4116434156894684e-002 -5.8035951852798462e-001
- <_>
-
- 0 -1 199 -6.5348353236913681e-003
-
- -2.8312593698501587e-001 5.1936011761426926e-002
- <_>
-
- 0 -1 415 -1.1670710518956184e-003
-
- -1.8463888764381409e-001 8.3705939352512360e-002
- <_>
-
- 0 -1 808 -1.4070876641198993e-003
-
- 1.5036344528198242e-001 -1.0249616205692291e-001
- <_>
-
- 0 -1 122 -3.9912573993206024e-002
-
- -3.8639402389526367e-001 3.9821352809667587e-002
- <_>
-
- 0 -1 413 1.0381672531366348e-002
-
- -1.2079605460166931e-001 1.2945999205112457e-001
- <_>
-
- 0 -1 453 -9.9312573671340942e-002
-
- 6.0750687122344971e-001 -2.8503781184554100e-002
- <_>
-
- 0 -1 816 1.0430534370243549e-002
-
- -6.0343675315380096e-002 2.3242907226085663e-001
- <_>
-
- 0 -1 445 3.5891016013920307e-003
-
- 4.1434522718191147e-002 -3.4602153301239014e-001
- <_>
-
- 0 -1 788 1.0015227831900120e-002
-
- -5.6792665272951126e-002 2.6468506455421448e-001
- <_>
-
- 0 -1 749 -9.2321680858731270e-004
-
- -3.1470552086830139e-001 4.6375431120395660e-002
- <_>
-
- 0 -1 384 2.0065717399120331e-002
-
- -4.7381434589624405e-002 3.2506260275840759e-001
- <_>
-
- 0 -1 782 2.0691626705229282e-003
-
- -8.8068872690200806e-002 1.7662553489208221e-001
- <_>
-
- 0 -1 150 -2.0592920482158661e-002
-
- 2.1614389121532440e-001 -6.7837409675121307e-002
- <_>
-
- 0 -1 729 -2.5132454931735992e-002
-
- 2.9875260591506958e-001 -5.0642240792512894e-002
- <_>
-
- 0 -1 893 1.6763649880886078e-002
-
- -5.6825786828994751e-002 2.6688432693481445e-001
- <_>
-
- 0 -1 5 2.4304956197738647e-002
-
- -7.3691956698894501e-002 1.8922545015811920e-001
- <_>
-
- 0 -1 604 5.2945837378501892e-003
-
- -6.8203508853912354e-002 2.3238344490528107e-001
- <_>
-
- 0 -1 146 1.7194304615259171e-002
-
- -4.1591234505176544e-002 3.3211585879325867e-001
- <_>
-
- 0 -1 119 -1.0534466244280338e-002
-
- 2.0838305354118347e-001 -8.1538312137126923e-002
- <_>
-
- 0 -1 171 3.3360864967107773e-002
-
- -6.7458741366863251e-002 2.5852772593498230e-001
- <_>
-
- 0 -1 183 4.6436764299869537e-002
-
- 1.9892208278179169e-002 -8.1141030788421631e-001
- <_>
-
- 0 -1 8 -4.1056036949157715e-002
-
- -4.9327704310417175e-001 2.3769956082105637e-002
- <_>
-
- 0 -1 514 -1.8552202731370926e-002
-
- -5.7725781202316284e-001 2.1620772778987885e-002
- <_>
-
- 0 -1 310 -1.5498932916671038e-003
-
- 1.3356749713420868e-001 -1.0274448245763779e-001
- <_>
-
- 0 -1 144 -1.2870179489254951e-002
-
- -6.8844175338745117e-001 1.6567943617701530e-002
- <_>
-
- 0 -1 162 1.1060645803809166e-002
-
- -6.5967611968517303e-002 2.0074956119060516e-001
- <_>
-
- 0 -1 737 -1.9628754816949368e-003
-
- 1.7064040899276733e-001 -7.5410693883895874e-002
- <_>
-
- 0 -1 118 3.2771207392215729e-002
-
- 1.7548711970448494e-002 -7.5103056430816650e-001
- <_>
-
- 0 -1 62 -5.6525086984038353e-004
-
- 1.0811340808868408e-001 -1.1322978138923645e-001
- <_>
-
- 0 -1 920 6.6395318135619164e-003
-
- -4.8233803361654282e-002 2.5985202193260193e-001
- <_>
-
- 0 -1 933 5.3288890048861504e-003
-
- -5.8816779404878616e-002 2.0709130167961121e-001
- <_>
-
- 0 -1 30 9.5648169517517090e-002
-
- -2.3178230971097946e-002 5.3592687845230103e-001
- <_>
-
- 0 -1 505 2.3851044476032257e-002
-
- 3.9325568825006485e-002 -3.2090389728546143e-001
- <_>
-
- 0 -1 380 4.9215428531169891e-002
-
- -8.0275781452655792e-002 2.1604713797569275e-001
- <_>
-
- 0 -1 404 5.1129907369613647e-002
-
- 2.0917052403092384e-002 -6.7675739526748657e-001
- <_>
-
- 0 -1 470 -9.5789285842329264e-004
-
- 1.3741976022720337e-001 -9.2351287603378296e-002
- <_>
-
- 0 -1 38 4.3797735124826431e-002
-
- -5.2134189754724503e-002 2.3939897119998932e-001
- <_>
-
- 0 -1 177 -3.7566445767879486e-002
-
- -5.0337618589401245e-001 3.2042562961578369e-002
- <_>
-
- 0 -1 293 -6.6379196941852570e-003
-
- 2.3610880970954895e-001 -5.9629496186971664e-002
- <_>
-
- 0 -1 569 4.4785980135202408e-003
-
- -6.9053784012794495e-002 1.8493640422821045e-001
- <_>
-
- 0 -1 680 -1.9650494214147329e-003
-
- -5.0821167230606079e-001 2.3264253512024879e-002
- <_>
-
- 0 -1 826 -8.4884336683899164e-004
-
- 1.7365188896656036e-001 -7.3235429823398590e-002
- <_>
-
- 0 -1 421 -5.7333573698997498e-002
-
- -3.1190565228462219e-001 4.1780386120080948e-002
- <_>
-
- 0 -1 599 1.8632253631949425e-003
-
- 3.1603202223777771e-002 -3.6946067214012146e-001
- <_>
-
- 0 -1 336 -2.0456001162528992e-002
-
- 3.0203589797019958e-001 -4.1565753519535065e-002
- <_>
-
- 0 -1 938 5.5945245549082756e-003
-
- -3.2002035528421402e-002 3.7638634443283081e-001
- <_>
-
- 0 -1 152 -1.8559835851192474e-002
-
- 2.4045053124427795e-001 -5.1895260810852051e-002
- <_>
-
- 0 -1 706 -1.0816272348165512e-002
-
- -4.1922396421432495e-001 3.0057143419981003e-002
- <_>
-
- 0 -1 717 -1.5897199045866728e-003
-
- -3.8717699050903320e-001 2.7556220069527626e-002
- <_>
-
- 0 -1 337 -1.8832697533071041e-003
-
- 1.8341954052448273e-001 -6.8402133882045746e-002
- <_>
-
- 0 -1 107 -6.8602010607719421e-002
-
- -4.3040940165519714e-001 2.7811320498585701e-002
- <_>
-
- 0 -1 605 3.1656727194786072e-002
-
- 1.4831826090812683e-002 -6.9200241565704346e-001
- <_>
-
- 0 -1 178 -1.1699689552187920e-002
-
- -4.7378033399581909e-001 2.2049939259886742e-002
- <_>
-
- 0 -1 175 -4.9252226948738098e-002
-
- 2.0226360857486725e-001 -5.8283366262912750e-002
- <_>
-
- 0 -1 200 -1.4749905094504356e-002
-
- -6.3420587778091431e-001 1.7177773639559746e-002
- <_>
-
- 0 -1 594 1.3355823233723640e-002
-
- -5.3626276552677155e-002 2.3158134520053864e-001
- <_>
-
- 0 -1 688 2.7912877500057220e-002
-
- -3.2106213271617889e-002 3.9656600356101990e-001
- <_>
-
- 0 -1 433 -1.8341368064284325e-002
-
- 3.0023518204689026e-001 -3.9390310645103455e-002
- <_>
-
- 0 -1 320 3.3382259309291840e-002
-
- -5.0307501107454300e-002 2.3759432137012482e-001
- <_>
-
- 0 -1 414 2.2881597280502319e-002
-
- 2.9198208823800087e-002 -4.3145897984504700e-001
- <_>
-
- 0 -1 271 1.7183616757392883e-001
-
- 1.9492210820317268e-002 -5.7107782363891602e-001
- <_>
-
- 0 -1 889 4.3015915900468826e-002
-
- 1.8091753125190735e-002 -5.8863103389739990e-001
- <_>
-
- 0 -1 545 -1.2893548235297203e-002
-
- 1.4482001960277557e-001 -8.2013383507728577e-002
- <_>
-
- 0 -1 910 5.9737069532275200e-003
-
- -7.2960324585437775e-002 1.6368763148784637e-001
- <_>
-
- 0 -1 664 1.1285657994449139e-002
-
- -4.4454183429479599e-002 2.5658103823661804e-001
- <_>
-
- 0 -1 951 -9.9752098321914673e-004
-
- -2.6904699206352234e-001 4.0726143866777420e-002
- <_>
-
- 0 -1 111 2.1743077784776688e-002
-
- 1.7429182305932045e-002 -6.2877011299133301e-001
- <_>
-
- 0 -1 866 3.7145437672734261e-003
-
- -8.1450186669826508e-002 1.3246190547943115e-001
- <_>
-
- 0 -1 888 -1.5904067084193230e-002
-
- 3.2105255126953125e-001 -3.4731235355138779e-002
- <_>
-
- 0 -1 907 -2.6992281898856163e-002
-
- -6.8835800886154175e-001 1.6344616189599037e-002
- <_>
-
- 0 -1 830 6.8261945853009820e-004
-
- -1.1232791095972061e-001 9.8401591181755066e-002
- <_>
-
- 0 -1 807 -2.5938652455806732e-002
-
- -5.0289982557296753e-001 2.3814825341105461e-002
-
- <_>
-
- <_>
- 0 0 2 2 -1.
- <_>
- 1 0 1 2 2.
- 0
- <_>
-
- <_>
- 0 0 1 6 -1.
- <_>
- 0 2 1 2 3.
- 0
- <_>
-
- <_>
- 0 0 2 4 -1.
- <_>
- 1 0 1 4 2.
- 0
- <_>
-
- <_>
- 0 0 2 6 -1.
- <_>
- 0 2 2 2 3.
- 0
- <_>
-
- <_>
- 0 0 8 7 -1.
- <_>
- 2 0 4 7 2.
- 0
- <_>
-
- <_>
- 0 0 8 8 -1.
- <_>
- 2 0 4 8 2.
- 0
- <_>
-
- <_>
- 0 0 6 13 -1.
- <_>
- 2 0 2 13 3.
- 0
- <_>
-
- <_>
- 0 0 12 13 -1.
- <_>
- 3 0 6 13 2.
- 0
- <_>
-
- <_>
- 0 0 12 4 -1.
- <_>
- 4 0 4 4 3.
- 0
- <_>
-
- <_>
- 0 0 18 4 -1.
- <_>
- 6 0 6 4 3.
- 0
- <_>
-
- <_>
- 0 0 36 11 -1.
- <_>
- 12 0 12 11 3.
- 0
- <_>
-
- <_>
- 0 0 17 12 -1.
- <_>
- 0 4 17 4 3.
- 0
- <_>
-
- <_>
- 0 0 36 13 -1.
- <_>
- 18 0 18 13 2.
- 0
- <_>
-
- <_>
- 0 0 22 2 -1.
- <_>
- 0 1 22 1 2.
- 0
- <_>
-
- <_>
- 0 0 24 9 -1.
- <_>
- 0 3 24 3 3.
- 0
- <_>
-
- <_>
- 0 0 29 2 -1.
- <_>
- 0 1 29 1 2.
- 0
- <_>
-
- <_>
- 0 0 34 2 -1.
- <_>
- 0 1 34 1 2.
- 0
- <_>
-
- <_>
- 0 0 36 8 -1.
- <_>
- 0 2 36 4 2.
- 0
- <_>
-
- <_>
- 0 0 42 6 -1.
- <_>
- 0 3 42 3 2.
- 0
- <_>
-
- <_>
- 0 0 44 2 -1.
- <_>
- 0 1 44 1 2.
- 0
- <_>
-
- <_>
- 0 0 51 8 -1.
- <_>
- 0 2 51 4 2.
- 0
- <_>
-
- <_>
- 0 1 2 9 -1.
- <_>
- 1 1 1 9 2.
- 0
- <_>
-
- <_>
- 0 1 2 12 -1.
- <_>
- 1 1 1 12 2.
- 0
- <_>
-
- <_>
- 0 1 2 12 -1.
- <_>
- 0 7 2 6 2.
- 0
- <_>
-
- <_>
- 0 1 8 10 -1.
- <_>
- 0 1 4 5 2.
- <_>
- 4 6 4 5 2.
- 0
- <_>
-
- <_>
- 0 1 7 12 -1.
- <_>
- 0 4 7 6 2.
- 0
- <_>
-
- <_>
- 0 1 12 12 -1.
- <_>
- 0 5 12 4 3.
- 0
- <_>
-
- <_>
- 0 1 17 12 -1.
- <_>
- 0 5 17 4 3.
- 0
- <_>
-
- <_>
- 0 2 6 2 -1.
- <_>
- 2 2 2 2 3.
- 0
- <_>
-
- <_>
- 0 2 4 6 -1.
- <_>
- 2 2 2 6 2.
- 0
- <_>
-
- <_>
- 0 2 20 7 -1.
- <_>
- 5 2 10 7 2.
- 0
- <_>
-
- <_>
- 0 3 1 4 -1.
- <_>
- 0 5 1 2 2.
- 0
- <_>
-
- <_>
- 0 3 4 2 -1.
- <_>
- 1 3 2 2 2.
- 0
- <_>
-
- <_>
- 0 3 6 9 -1.
- <_>
- 2 3 2 9 3.
- 0
- <_>
-
- <_>
- 0 3 4 10 -1.
- <_>
- 2 3 2 10 2.
- 0
- <_>
-
- <_>
- 0 3 6 10 -1.
- <_>
- 2 3 2 10 3.
- 0
- <_>
-
- <_>
- 0 3 9 3 -1.
- <_>
- 3 3 3 3 3.
- 0
- <_>
-
- <_>
- 0 3 3 9 -1.
- <_>
- 0 6 3 3 3.
- 0
- <_>
-
- <_>
- 0 3 9 6 -1.
- <_>
- 3 3 3 6 3.
- 0
- <_>
-
- <_>
- 0 3 8 4 -1.
- <_>
- 0 3 4 2 2.
- <_>
- 4 5 4 2 2.
- 0
- <_>
-
- <_>
- 0 3 8 6 -1.
- <_>
- 0 3 4 3 2.
- <_>
- 4 6 4 3 2.
- 0
- <_>
-
- <_>
- 0 3 16 10 -1.
- <_>
- 4 3 8 10 2.
- 0
- <_>
-
- <_>
- 0 3 10 6 -1.
- <_>
- 0 5 10 2 3.
- 0
- <_>
-
- <_>
- 0 3 16 8 -1.
- <_>
- 0 7 16 4 2.
- 0
- <_>
-
- <_>
- 0 3 51 8 -1.
- <_>
- 0 7 51 4 2.
- 0
- <_>
-
- <_>
- 0 4 3 3 -1.
- <_>
- 1 5 1 1 9.
- 0
- <_>
-
- <_>
- 0 4 3 9 -1.
- <_>
- 0 7 3 3 3.
- 0
- <_>
-
- <_>
- 0 4 20 7 -1.
- <_>
- 10 4 10 7 2.
- 0
- <_>
-
- <_>
- 0 4 34 9 -1.
- <_>
- 17 4 17 9 2.
- 0
- <_>
-
- <_>
- 0 5 1 4 -1.
- <_>
- 0 7 1 2 2.
- 0
- <_>
-
- <_>
- 0 5 2 8 -1.
- <_>
- 1 5 1 8 2.
- 0
- <_>
-
- <_>
- 0 5 10 4 -1.
- <_>
- 0 7 10 2 2.
- 0
- <_>
-
- <_>
- 0 5 22 6 -1.
- <_>
- 0 8 22 3 2.
- 0
- <_>
-
- <_>
- 0 6 2 7 -1.
- <_>
- 1 6 1 7 2.
- 0
- <_>
-
- <_>
- 0 6 4 2 -1.
- <_>
- 2 6 2 2 2.
- 0
- <_>
-
- <_>
- 0 6 6 5 -1.
- <_>
- 2 6 2 5 3.
- 0
- <_>
-
- <_>
- 0 6 3 6 -1.
- <_>
- 0 8 3 2 3.
- 0
- <_>
-
- <_>
- 0 6 4 6 -1.
- <_>
- 0 9 4 3 2.
- 0
- <_>
-
- <_>
- 0 6 13 4 -1.
- <_>
- 0 8 13 2 2.
- 0
- <_>
-
- <_>
- 0 6 14 4 -1.
- <_>
- 0 8 14 2 2.
- 0
- <_>
-
- <_>
- 0 6 33 4 -1.
- <_>
- 0 8 33 2 2.
- 0
- <_>
-
- <_>
- 0 6 44 6 -1.
- <_>
- 0 8 44 2 3.
- 0
- <_>
-
- <_>
- 0 7 1 6 -1.
- <_>
- 0 10 1 3 2.
- 0
- <_>
-
- <_>
- 0 7 7 6 -1.
- <_>
- 0 10 7 3 2.
- 0
- <_>
-
- <_>
- 0 7 25 6 -1.
- <_>
- 0 9 25 2 3.
- 0
- <_>
-
- <_>
- 0 7 32 3 -1.
- <_>
- 0 8 32 1 3.
- 0
- <_>
-
- <_>
- 0 8 12 5 -1.
- <_>
- 3 8 6 5 2.
- 0
- <_>
-
- <_>
- 0 8 12 2 -1.
- <_>
- 6 8 6 2 2.
- 0
- <_>
-
- <_>
- 0 8 21 4 -1.
- <_>
- 7 8 7 4 3.
- 0
- <_>
-
- <_>
- 0 8 25 4 -1.
- <_>
- 0 9 25 2 2.
- 0
- <_>
-
- <_>
- 0 9 15 4 -1.
- <_>
- 5 9 5 4 3.
- 0
- <_>
-
- <_>
- 0 9 28 4 -1.
- <_>
- 7 9 14 4 2.
- 0
- <_>
-
- <_>
- 0 9 28 4 -1.
- <_>
- 14 9 14 4 2.
- 0
- <_>
-
- <_>
- 0 9 46 2 -1.
- <_>
- 0 10 46 1 2.
- 0
- <_>
-
- <_>
- 0 9 50 2 -1.
- <_>
- 0 10 50 1 2.
- 0
- <_>
-
- <_>
- 0 10 6 3 -1.
- <_>
- 3 10 3 3 2.
- 0
- <_>
-
- <_>
- 0 10 12 3 -1.
- <_>
- 3 10 6 3 2.
- 0
- <_>
-
- <_>
- 0 10 10 3 -1.
- <_>
- 5 10 5 3 2.
- 0
- <_>
-
- <_>
- 0 10 12 3 -1.
- <_>
- 6 10 6 3 2.
- 0
- <_>
-
- <_>
- 0 11 5 2 -1.
- <_>
- 0 12 5 1 2.
- 0
- <_>
-
- <_>
- 0 11 26 2 -1.
- <_>
- 13 11 13 2 2.
- 0
- <_>
-
- <_>
- 0 11 28 2 -1.
- <_>
- 14 11 14 2 2.
- 0
- <_>
-
- <_>
- 0 11 42 2 -1.
- <_>
- 14 11 14 2 3.
- 0
- <_>
-
- <_>
- 0 11 19 2 -1.
- <_>
- 0 12 19 1 2.
- 0
- <_>
-
- <_>
- 0 11 23 2 -1.
- <_>
- 0 12 23 1 2.
- 0
- <_>
-
- <_>
- 1 0 5 12 -1.
- <_>
- 1 3 5 6 2.
- 0
- <_>
-
- <_>
- 1 0 15 4 -1.
- <_>
- 6 0 5 4 3.
- 0
- <_>
-
- <_>
- 1 0 14 1 -1.
- <_>
- 8 0 7 1 2.
- 0
- <_>
-
- <_>
- 1 0 8 2 -1.
- <_>
- 1 1 8 1 2.
- 0
- <_>
-
- <_>
- 1 0 9 2 -1.
- <_>
- 1 1 9 1 2.
- 0
- <_>
-
- <_>
- 1 0 11 2 -1.
- <_>
- 1 1 11 1 2.
- 0
- <_>
-
- <_>
- 1 0 17 9 -1.
- <_>
- 1 3 17 3 3.
- 0
- <_>
-
- <_>
- 1 0 21 2 -1.
- <_>
- 1 1 21 1 2.
- 0
- <_>
-
- <_>
- 1 0 41 6 -1.
- <_>
- 1 3 41 3 2.
- 0
- <_>
-
- <_>
- 1 0 47 2 -1.
- <_>
- 1 1 47 1 2.
- 0
- <_>
-
- <_>
- 1 1 6 8 -1.
- <_>
- 3 1 2 8 3.
- 0
- <_>
-
- <_>
- 1 1 6 9 -1.
- <_>
- 3 1 2 9 3.
- 0
- <_>
-
- <_>
- 1 1 6 11 -1.
- <_>
- 3 1 2 11 3.
- 0
- <_>
-
- <_>
- 1 1 9 5 -1.
- <_>
- 4 1 3 5 3.
- 0
- <_>
-
- <_>
- 1 1 20 7 -1.
- <_>
- 6 1 10 7 2.
- 0
- <_>
-
- <_>
- 1 1 20 8 -1.
- <_>
- 6 1 10 8 2.
- 0
- <_>
-
- <_>
- 1 1 9 9 -1.
- <_>
- 1 4 9 3 3.
- 0
- <_>
-
- <_>
- 1 1 27 10 -1.
- <_>
- 10 1 9 10 3.
- 0
- <_>
-
- <_>
- 1 1 10 6 -1.
- <_>
- 1 3 10 2 3.
- 0
- <_>
-
- <_>
- 1 2 4 6 -1.
- <_>
- 1 2 2 3 2.
- <_>
- 3 5 2 3 2.
- 0
- <_>
-
- <_>
- 1 2 20 8 -1.
- <_>
- 6 2 10 8 2.
- 0
- <_>
-
- <_>
- 1 2 13 10 -1.
- <_>
- 1 7 13 5 2.
- 0
- <_>
-
- <_>
- 1 2 34 7 -1.
- <_>
- 18 2 17 7 2.
- 0
- <_>
-
- <_>
- 1 3 4 3 -1.
- <_>
- 2 3 2 3 2.
- 0
- <_>
-
- <_>
- 1 3 6 8 -1.
- <_>
- 3 3 2 8 3.
- 0
- <_>
-
- <_>
- 1 3 6 4 -1.
- <_>
- 1 3 3 2 2.
- <_>
- 4 5 3 2 2.
- 0
- <_>
-
- <_>
- 1 3 6 8 -1.
- <_>
- 1 3 3 4 2.
- <_>
- 4 7 3 4 2.
- 0
- <_>
-
- <_>
- 1 3 6 5 -1.
- <_>
- 4 3 3 5 2.
- 0
- <_>
-
- <_>
- 1 3 15 3 -1.
- <_>
- 6 3 5 3 3.
- 0
- <_>
-
- <_>
- 1 3 36 9 -1.
- <_>
- 13 3 12 9 3.
- 0
- <_>
-
- <_>
- 1 3 36 10 -1.
- <_>
- 13 3 12 10 3.
- 0
- <_>
-
- <_>
- 1 4 4 2 -1.
- <_>
- 2 4 2 2 2.
- 0
- <_>
-
- <_>
- 1 4 6 2 -1.
- <_>
- 3 4 2 2 3.
- 0
- <_>
-
- <_>
- 1 4 6 3 -1.
- <_>
- 3 4 2 3 3.
- 0
- <_>
-
- <_>
- 1 4 6 4 -1.
- <_>
- 4 4 3 4 2.
- 0
- <_>
-
- <_>
- 1 4 6 6 -1.
- <_>
- 4 4 3 6 2.
- 0
- <_>
-
- <_>
- 1 4 9 4 -1.
- <_>
- 1 6 9 2 2.
- 0
- <_>
-
- <_>
- 1 5 12 3 -1.
- <_>
- 5 6 4 1 9.
- 0
- <_>
-
- <_>
- 1 7 16 6 -1.
- <_>
- 1 7 8 3 2.
- <_>
- 9 10 8 3 2.
- 0
- <_>
-
- <_>
- 1 11 46 2 -1.
- <_>
- 1 12 46 1 2.
- 0
- <_>
-
- <_>
- 1 11 50 2 -1.
- <_>
- 1 12 50 1 2.
- 0
- <_>
-
- <_>
- 1 12 50 1 -1.
- <_>
- 26 12 25 1 2.
- 0
- <_>
-
- <_>
- 2 0 6 13 -1.
- <_>
- 4 0 2 13 3.
- 0
- <_>
-
- <_>
- 2 0 24 3 -1.
- <_>
- 8 0 12 3 2.
- 0
- <_>
-
- <_>
- 2 0 12 10 -1.
- <_>
- 8 0 6 10 2.
- 0
- <_>
-
- <_>
- 2 0 33 11 -1.
- <_>
- 13 0 11 11 3.
- 0
- <_>
-
- <_>
- 2 0 20 2 -1.
- <_>
- 2 1 20 1 2.
- 0
- <_>
-
- <_>
- 2 0 48 12 -1.
- <_>
- 26 0 24 12 2.
- 0
- <_>
-
- <_>
- 2 1 4 6 -1.
- <_>
- 2 1 2 3 2.
- <_>
- 4 4 2 3 2.
- 0
- <_>
-
- <_>
- 2 1 16 9 -1.
- <_>
- 10 1 8 9 2.
- 0
- <_>
-
- <_>
- 2 1 11 9 -1.
- <_>
- 2 4 11 3 3.
- 0
- <_>
-
- <_>
- 2 1 18 10 -1.
- <_>
- 2 6 18 5 2.
- 0
- <_>
-
- <_>
- 2 2 3 2 -1.
- <_>
- 3 3 1 2 3.
- 1
- <_>
-
- <_>
- 2 3 16 1 -1.
- <_>
- 6 3 8 1 2.
- 0
- <_>
-
- <_>
- 2 3 25 6 -1.
- <_>
- 2 6 25 3 2.
- 0
- <_>
-
- <_>
- 2 4 4 2 -1.
- <_>
- 3 4 2 2 2.
- 0
- <_>
-
- <_>
- 2 5 2 8 -1.
- <_>
- 2 5 1 4 2.
- <_>
- 3 9 1 4 2.
- 0
- <_>
-
- <_>
- 2 5 6 4 -1.
- <_>
- 5 5 3 4 2.
- 0
- <_>
-
- <_>
- 2 5 10 8 -1.
- <_>
- 2 7 10 4 2.
- 0
- <_>
-
- <_>
- 2 7 4 6 -1.
- <_>
- 2 7 2 3 2.
- <_>
- 4 10 2 3 2.
- 0
- <_>
-
- <_>
- 2 7 4 4 -1.
- <_>
- 2 9 4 2 2.
- 0
- <_>
-
- <_>
- 2 8 14 2 -1.
- <_>
- 9 8 7 2 2.
- 0
- <_>
-
- <_>
- 2 8 24 5 -1.
- <_>
- 14 8 12 5 2.
- 0
- <_>
-
- <_>
- 2 9 8 3 -1.
- <_>
- 6 9 4 3 2.
- 0
- <_>
-
- <_>
- 2 9 12 4 -1.
- <_>
- 6 9 4 4 3.
- 0
- <_>
-
- <_>
- 2 9 32 4 -1.
- <_>
- 2 9 16 2 2.
- <_>
- 18 11 16 2 2.
- 0
- <_>
-
- <_>
- 2 10 12 2 -1.
- <_>
- 2 10 6 1 2.
- <_>
- 8 11 6 1 2.
- 0
- <_>
-
- <_>
- 2 11 38 1 -1.
- <_>
- 21 11 19 1 2.
- 0
- <_>
-
- <_>
- 2 12 32 1 -1.
- <_>
- 18 12 16 1 2.
- 0
- <_>
-
- <_>
- 3 0 1 2 -1.
- <_>
- 3 1 1 1 2.
- 0
- <_>
-
- <_>
- 3 0 3 9 -1.
- <_>
- 4 3 1 3 9.
- 0
- <_>
-
- <_>
- 3 0 6 11 -1.
- <_>
- 5 0 2 11 3.
- 0
- <_>
-
- <_>
- 3 0 6 12 -1.
- <_>
- 5 0 2 12 3.
- 0
- <_>
-
- <_>
- 3 0 16 10 -1.
- <_>
- 11 0 8 10 2.
- 0
- <_>
-
- <_>
- 3 0 42 9 -1.
- <_>
- 17 3 14 3 9.
- 0
- <_>
-
- <_>
- 3 0 15 6 -1.
- <_>
- 3 3 15 3 2.
- 0
- <_>
-
- <_>
- 3 0 30 13 -1.
- <_>
- 18 0 15 13 2.
- 0
- <_>
-
- <_>
- 3 1 3 9 -1.
- <_>
- 4 1 1 9 3.
- 0
- <_>
-
- <_>
- 3 1 6 10 -1.
- <_>
- 5 1 2 10 3.
- 0
- <_>
-
- <_>
- 3 1 15 12 -1.
- <_>
- 8 5 5 4 9.
- 0
- <_>
-
- <_>
- 3 1 21 3 -1.
- <_>
- 10 1 7 3 3.
- 0
- <_>
-
- <_>
- 3 1 32 7 -1.
- <_>
- 11 1 16 7 2.
- 0
- <_>
-
- <_>
- 3 1 33 11 -1.
- <_>
- 14 1 11 11 3.
- 0
- <_>
-
- <_>
- 3 1 42 9 -1.
- <_>
- 17 4 14 3 9.
- 0
- <_>
-
- <_>
- 3 1 29 10 -1.
- <_>
- 3 6 29 5 2.
- 0
- <_>
-
- <_>
- 3 2 1 2 -1.
- <_>
- 3 2 1 1 2.
- 1
- <_>
-
- <_>
- 3 2 6 11 -1.
- <_>
- 5 2 2 11 3.
- 0
- <_>
-
- <_>
- 3 2 16 3 -1.
- <_>
- 7 2 8 3 2.
- 0
- <_>
-
- <_>
- 3 2 46 6 -1.
- <_>
- 3 5 46 3 2.
- 0
- <_>
-
- <_>
- 3 3 14 10 -1.
- <_>
- 10 3 7 10 2.
- 0
- <_>
-
- <_>
- 3 3 40 5 -1.
- <_>
- 13 3 20 5 2.
- 0
- <_>
-
- <_>
- 3 5 2 2 -1.
- <_>
- 4 5 1 2 2.
- 0
- <_>
-
- <_>
- 3 5 16 5 -1.
- <_>
- 7 5 8 5 2.
- 0
- <_>
-
- <_>
- 3 5 16 2 -1.
- <_>
- 3 5 8 1 2.
- <_>
- 11 6 8 1 2.
- 0
- <_>
-
- <_>
- 3 6 8 3 -1.
- <_>
- 7 6 4 3 2.
- 0
- <_>
-
- <_>
- 3 7 16 6 -1.
- <_>
- 11 7 8 6 2.
- 0
- <_>
-
- <_>
- 3 7 45 2 -1.
- <_>
- 3 8 45 1 2.
- 0
- <_>
-
- <_>
- 3 9 9 4 -1.
- <_>
- 6 9 3 4 3.
- 0
- <_>
-
- <_>
- 3 10 6 3 -1.
- <_>
- 5 11 2 1 9.
- 0
- <_>
-
- <_>
- 3 11 9 2 -1.
- <_>
- 3 12 9 1 2.
- 0
- <_>
-
- <_>
- 3 11 48 2 -1.
- <_>
- 3 12 48 1 2.
- 0
- <_>
-
- <_>
- 4 0 4 1 -1.
- <_>
- 4 0 2 1 2.
- 1
- <_>
-
- <_>
- 4 0 6 11 -1.
- <_>
- 6 0 2 11 3.
- 0
- <_>
-
- <_>
- 4 0 4 12 -1.
- <_>
- 4 3 4 6 2.
- 0
- <_>
-
- <_>
- 4 0 18 4 -1.
- <_>
- 10 0 6 4 3.
- 0
- <_>
-
- <_>
- 4 1 6 9 -1.
- <_>
- 6 1 2 9 3.
- 0
- <_>
-
- <_>
- 4 1 14 2 -1.
- <_>
- 11 1 7 2 2.
- 0
- <_>
-
- <_>
- 4 1 36 4 -1.
- <_>
- 22 1 18 4 2.
- 0
- <_>
-
- <_>
- 4 2 3 11 -1.
- <_>
- 5 2 1 11 3.
- 0
- <_>
-
- <_>
- 4 2 6 5 -1.
- <_>
- 6 2 2 5 3.
- 0
- <_>
-
- <_>
- 4 2 6 10 -1.
- <_>
- 6 2 2 10 3.
- 0
- <_>
-
- <_>
- 4 2 10 10 -1.
- <_>
- 4 2 5 5 2.
- <_>
- 9 7 5 5 2.
- 0
- <_>
-
- <_>
- 4 2 21 3 -1.
- <_>
- 11 2 7 3 3.
- 0
- <_>
-
- <_>
- 4 2 27 8 -1.
- <_>
- 4 4 27 4 2.
- 0
- <_>
-
- <_>
- 4 3 3 2 -1.
- <_>
- 5 4 1 2 3.
- 1
- <_>
-
- <_>
- 4 3 2 6 -1.
- <_>
- 4 5 2 2 3.
- 0
- <_>
-
- <_>
- 4 3 6 5 -1.
- <_>
- 6 3 2 5 3.
- 0
- <_>
-
- <_>
- 4 3 30 6 -1.
- <_>
- 14 5 10 2 9.
- 0
- <_>
-
- <_>
- 4 3 37 8 -1.
- <_>
- 4 5 37 4 2.
- 0
- <_>
-
- <_>
- 4 4 4 2 -1.
- <_>
- 5 5 2 2 2.
- 1
- <_>
-
- <_>
- 4 4 4 2 -1.
- <_>
- 4 4 2 2 2.
- 1
- <_>
-
- <_>
- 4 4 7 3 -1.
- <_>
- 4 5 7 1 3.
- 0
- <_>
-
- <_>
- 4 4 23 9 -1.
- <_>
- 4 7 23 3 3.
- 0
- <_>
-
- <_>
- 4 5 5 4 -1.
- <_>
- 4 7 5 2 2.
- 0
- <_>
-
- <_>
- 4 7 42 4 -1.
- <_>
- 4 8 42 2 2.
- 0
- <_>
-
- <_>
- 4 8 16 1 -1.
- <_>
- 12 8 8 1 2.
- 0
- <_>
-
- <_>
- 4 9 24 4 -1.
- <_>
- 10 9 12 4 2.
- 0
- <_>
-
- <_>
- 4 10 10 2 -1.
- <_>
- 4 10 5 1 2.
- <_>
- 9 11 5 1 2.
- 0
- <_>
-
- <_>
- 4 10 7 2 -1.
- <_>
- 4 11 7 1 2.
- 0
- <_>
-
- <_>
- 5 0 16 8 -1.
- <_>
- 9 0 8 8 2.
- 0
- <_>
-
- <_>
- 5 0 24 13 -1.
- <_>
- 13 0 8 13 3.
- 0
- <_>
-
- <_>
- 5 1 8 12 -1.
- <_>
- 5 1 4 6 2.
- <_>
- 9 7 4 6 2.
- 0
- <_>
-
- <_>
- 5 1 36 12 -1.
- <_>
- 5 7 36 6 2.
- 0
- <_>
-
- <_>
- 5 2 3 10 -1.
- <_>
- 6 2 1 10 3.
- 0
- <_>
-
- <_>
- 5 2 6 6 -1.
- <_>
- 7 2 2 6 3.
- 0
- <_>
-
- <_>
- 5 2 3 6 -1.
- <_>
- 5 5 3 3 2.
- 0
- <_>
-
- <_>
- 5 2 12 9 -1.
- <_>
- 5 5 12 3 3.
- 0
- <_>
-
- <_>
- 5 2 34 8 -1.
- <_>
- 5 6 34 4 2.
- 0
- <_>
-
- <_>
- 5 3 3 6 -1.
- <_>
- 6 3 1 6 3.
- 0
- <_>
-
- <_>
- 5 3 6 4 -1.
- <_>
- 7 3 2 4 3.
- 0
- <_>
-
- <_>
- 5 3 4 5 -1.
- <_>
- 7 3 2 5 2.
- 0
- <_>
-
- <_>
- 5 3 4 6 -1.
- <_>
- 7 3 2 6 2.
- 0
- <_>
-
- <_>
- 5 3 4 6 -1.
- <_>
- 5 6 4 3 2.
- 0
- <_>
-
- <_>
- 5 3 21 8 -1.
- <_>
- 12 3 7 8 3.
- 0
- <_>
-
- <_>
- 5 4 3 7 -1.
- <_>
- 6 4 1 7 3.
- 0
- <_>
-
- <_>
- 5 4 3 9 -1.
- <_>
- 6 4 1 9 3.
- 0
- <_>
-
- <_>
- 5 4 18 6 -1.
- <_>
- 11 6 6 2 9.
- 0
- <_>
-
- <_>
- 5 4 27 9 -1.
- <_>
- 14 7 9 3 9.
- 0
- <_>
-
- <_>
- 5 4 24 6 -1.
- <_>
- 17 4 12 6 2.
- 0
- <_>
-
- <_>
- 5 5 4 2 -1.
- <_>
- 6 5 2 2 2.
- 0
- <_>
-
- <_>
- 5 5 2 3 -1.
- <_>
- 6 5 1 3 2.
- 0
- <_>
-
- <_>
- 5 5 3 4 -1.
- <_>
- 6 5 1 4 3.
- 0
- <_>
-
- <_>
- 5 5 4 7 -1.
- <_>
- 6 5 2 7 2.
- 0
- <_>
-
- <_>
- 5 5 4 2 -1.
- <_>
- 5 5 2 2 2.
- 1
- <_>
-
- <_>
- 5 5 6 4 -1.
- <_>
- 7 5 2 4 3.
- 0
- <_>
-
- <_>
- 5 5 4 4 -1.
- <_>
- 5 7 4 2 2.
- 0
- <_>
-
- <_>
- 5 6 4 6 -1.
- <_>
- 6 6 2 6 2.
- 0
- <_>
-
- <_>
- 5 6 12 2 -1.
- <_>
- 11 6 6 2 2.
- 0
- <_>
-
- <_>
- 5 7 3 6 -1.
- <_>
- 5 9 3 2 3.
- 0
- <_>
-
- <_>
- 5 7 6 6 -1.
- <_>
- 5 7 3 3 2.
- <_>
- 8 10 3 3 2.
- 0
- <_>
-
- <_>
- 5 7 6 6 -1.
- <_>
- 8 7 3 6 2.
- 0
- <_>
-
- <_>
- 5 7 12 6 -1.
- <_>
- 5 10 12 3 2.
- 0
- <_>
-
- <_>
- 5 9 9 4 -1.
- <_>
- 8 9 3 4 3.
- 0
- <_>
-
- <_>
- 5 10 6 2 -1.
- <_>
- 5 10 3 1 2.
- <_>
- 8 11 3 1 2.
- 0
- <_>
-
- <_>
- 5 10 20 3 -1.
- <_>
- 10 10 10 3 2.
- 0
- <_>
-
- <_>
- 5 11 16 2 -1.
- <_>
- 5 12 16 1 2.
- 0
- <_>
-
- <_>
- 6 0 2 6 -1.
- <_>
- 4 2 2 2 3.
- 1
- <_>
-
- <_>
- 6 0 12 1 -1.
- <_>
- 9 3 6 1 2.
- 1
- <_>
-
- <_>
- 6 0 3 6 -1.
- <_>
- 4 2 3 2 3.
- 1
- <_>
-
- <_>
- 6 0 6 5 -1.
- <_>
- 6 0 3 5 2.
- 1
- <_>
-
- <_>
- 6 0 8 2 -1.
- <_>
- 6 0 4 1 2.
- <_>
- 10 1 4 1 2.
- 0
- <_>
-
- <_>
- 6 0 33 13 -1.
- <_>
- 17 0 11 13 3.
- 0
- <_>
-
- <_>
- 6 1 4 5 -1.
- <_>
- 7 1 2 5 2.
- 0
- <_>
-
- <_>
- 6 1 2 11 -1.
- <_>
- 7 1 1 11 2.
- 0
- <_>
-
- <_>
- 6 1 6 12 -1.
- <_>
- 8 1 2 12 3.
- 0
- <_>
-
- <_>
- 6 1 12 11 -1.
- <_>
- 12 1 6 11 2.
- 0
- <_>
-
- <_>
- 6 2 4 4 -1.
- <_>
- 7 2 2 4 2.
- 0
- <_>
-
- <_>
- 6 2 3 7 -1.
- <_>
- 7 2 1 7 3.
- 0
- <_>
-
- <_>
- 6 2 12 10 -1.
- <_>
- 12 2 6 10 2.
- 0
- <_>
-
- <_>
- 6 3 1 6 -1.
- <_>
- 6 6 1 3 2.
- 0
- <_>
-
- <_>
- 6 3 3 8 -1.
- <_>
- 7 3 1 8 3.
- 0
- <_>
-
- <_>
- 6 3 37 6 -1.
- <_>
- 6 6 37 3 2.
- 0
- <_>
-
- <_>
- 6 4 3 4 -1.
- <_>
- 7 4 1 4 3.
- 0
- <_>
-
- <_>
- 6 4 8 2 -1.
- <_>
- 8 4 4 2 2.
- 0
- <_>
-
- <_>
- 6 4 3 4 -1.
- <_>
- 6 6 3 2 2.
- 0
- <_>
-
- <_>
- 6 4 3 6 -1.
- <_>
- 6 6 3 2 3.
- 0
- <_>
-
- <_>
- 6 4 9 9 -1.
- <_>
- 9 7 3 3 9.
- 0
- <_>
-
- <_>
- 6 6 4 5 -1.
- <_>
- 7 6 2 5 2.
- 0
- <_>
-
- <_>
- 6 6 4 6 -1.
- <_>
- 7 6 2 6 2.
- 0
- <_>
-
- <_>
- 6 9 6 4 -1.
- <_>
- 6 9 3 2 2.
- <_>
- 9 11 3 2 2.
- 0
- <_>
-
- <_>
- 6 10 20 3 -1.
- <_>
- 11 10 10 3 2.
- 0
- <_>
-
- <_>
- 6 11 7 2 -1.
- <_>
- 6 12 7 1 2.
- 0
- <_>
-
- <_>
- 6 11 17 2 -1.
- <_>
- 6 12 17 1 2.
- 0
- <_>
-
- <_>
- 7 0 12 1 -1.
- <_>
- 10 0 6 1 2.
- 0
- <_>
-
- <_>
- 7 0 4 2 -1.
- <_>
- 7 1 4 1 2.
- 0
- <_>
-
- <_>
- 7 0 32 9 -1.
- <_>
- 23 0 16 9 2.
- 0
- <_>
-
- <_>
- 7 0 38 13 -1.
- <_>
- 26 0 19 13 2.
- 0
- <_>
-
- <_>
- 7 1 4 2 -1.
- <_>
- 8 2 2 2 2.
- 1
- <_>
-
- <_>
- 7 1 16 10 -1.
- <_>
- 11 1 8 10 2.
- 0
- <_>
-
- <_>
- 7 1 15 6 -1.
- <_>
- 12 1 5 6 3.
- 0
- <_>
-
- <_>
- 7 1 15 8 -1.
- <_>
- 12 1 5 8 3.
- 0
- <_>
-
- <_>
- 7 1 15 11 -1.
- <_>
- 12 1 5 11 3.
- 0
- <_>
-
- <_>
- 7 1 7 6 -1.
- <_>
- 7 4 7 3 2.
- 0
- <_>
-
- <_>
- 7 2 1 4 -1.
- <_>
- 6 3 1 2 2.
- 1
- <_>
-
- <_>
- 7 2 4 2 -1.
- <_>
- 8 3 2 2 2.
- 1
- <_>
-
- <_>
- 7 2 4 7 -1.
- <_>
- 8 3 2 7 2.
- 1
- <_>
-
- <_>
- 7 2 2 9 -1.
- <_>
- 8 2 1 9 2.
- 0
- <_>
-
- <_>
- 7 2 6 3 -1.
- <_>
- 9 3 2 1 9.
- 0
- <_>
-
- <_>
- 7 3 2 5 -1.
- <_>
- 8 3 1 5 2.
- 0
- <_>
-
- <_>
- 7 3 2 6 -1.
- <_>
- 8 3 1 6 2.
- 0
- <_>
-
- <_>
- 7 3 3 7 -1.
- <_>
- 8 3 1 7 3.
- 0
- <_>
-
- <_>
- 7 4 1 4 -1.
- <_>
- 7 5 1 2 2.
- 0
- <_>
-
- <_>
- 7 4 3 7 -1.
- <_>
- 8 4 1 7 3.
- 0
- <_>
-
- <_>
- 7 4 28 9 -1.
- <_>
- 21 4 14 9 2.
- 0
- <_>
-
- <_>
- 7 5 3 6 -1.
- <_>
- 8 5 1 6 3.
- 0
- <_>
-
- <_>
- 7 5 4 6 -1.
- <_>
- 8 5 2 6 2.
- 0
- <_>
-
- <_>
- 7 5 4 4 -1.
- <_>
- 7 5 2 2 2.
- <_>
- 9 7 2 2 2.
- 0
- <_>
-
- <_>
- 7 6 3 3 -1.
- <_>
- 8 6 1 3 3.
- 0
- <_>
-
- <_>
- 7 6 3 6 -1.
- <_>
- 8 6 1 6 3.
- 0
- <_>
-
- <_>
- 7 10 4 2 -1.
- <_>
- 7 10 2 1 2.
- <_>
- 9 11 2 1 2.
- 0
- <_>
-
- <_>
- 7 10 6 2 -1.
- <_>
- 7 11 6 1 2.
- 0
- <_>
-
- <_>
- 7 11 36 2 -1.
- <_>
- 7 11 18 1 2.
- <_>
- 25 12 18 1 2.
- 0
- <_>
-
- <_>
- 8 0 3 2 -1.
- <_>
- 9 1 1 2 3.
- 1
- <_>
-
- <_>
- 8 0 2 8 -1.
- <_>
- 8 0 1 8 2.
- 1
- <_>
-
- <_>
- 8 0 6 4 -1.
- <_>
- 8 0 3 2 2.
- <_>
- 11 2 3 2 2.
- 0
- <_>
-
- <_>
- 8 0 8 2 -1.
- <_>
- 8 0 4 1 2.
- <_>
- 12 1 4 1 2.
- 0
- <_>
-
- <_>
- 8 0 10 12 -1.
- <_>
- 13 0 5 12 2.
- 0
- <_>
-
- <_>
- 8 0 15 12 -1.
- <_>
- 13 0 5 12 3.
- 0
- <_>
-
- <_>
- 8 0 15 13 -1.
- <_>
- 13 0 5 13 3.
- 0
- <_>
-
- <_>
- 8 0 8 6 -1.
- <_>
- 8 3 8 3 2.
- 0
- <_>
-
- <_>
- 8 1 3 2 -1.
- <_>
- 9 2 1 2 3.
- 1
- <_>
-
- <_>
- 8 1 12 3 -1.
- <_>
- 12 1 4 3 3.
- 0
- <_>
-
- <_>
- 8 1 8 6 -1.
- <_>
- 12 1 4 6 2.
- 0
- <_>
-
- <_>
- 8 1 15 4 -1.
- <_>
- 13 1 5 4 3.
- 0
- <_>
-
- <_>
- 8 1 15 12 -1.
- <_>
- 13 1 5 12 3.
- 0
- <_>
-
- <_>
- 8 1 8 10 -1.
- <_>
- 8 6 8 5 2.
- 0
- <_>
-
- <_>
- 8 1 10 8 -1.
- <_>
- 8 3 10 4 2.
- 0
- <_>
-
- <_>
- 8 2 4 3 -1.
- <_>
- 9 2 2 3 2.
- 0
- <_>
-
- <_>
- 8 2 3 4 -1.
- <_>
- 9 2 1 4 3.
- 0
- <_>
-
- <_>
- 8 2 4 4 -1.
- <_>
- 9 2 2 4 2.
- 0
- <_>
-
- <_>
- 8 2 6 2 -1.
- <_>
- 10 2 2 2 3.
- 0
- <_>
-
- <_>
- 8 2 7 4 -1.
- <_>
- 8 4 7 2 2.
- 0
- <_>
-
- <_>
- 8 3 4 3 -1.
- <_>
- 9 3 2 3 2.
- 0
- <_>
-
- <_>
- 8 4 10 9 -1.
- <_>
- 13 4 5 9 2.
- 0
- <_>
-
- <_>
- 8 5 23 2 -1.
- <_>
- 8 6 23 1 2.
- 0
- <_>
-
- <_>
- 8 6 3 1 -1.
- <_>
- 9 7 1 1 3.
- 1
- <_>
-
- <_>
- 8 6 3 5 -1.
- <_>
- 9 6 1 5 3.
- 0
- <_>
-
- <_>
- 8 6 3 6 -1.
- <_>
- 9 6 1 6 3.
- 0
- <_>
-
- <_>
- 8 7 6 2 -1.
- <_>
- 11 7 3 2 2.
- 0
- <_>
-
- <_>
- 8 9 4 4 -1.
- <_>
- 8 11 4 2 2.
- 0
- <_>
-
- <_>
- 8 10 8 2 -1.
- <_>
- 8 11 8 1 2.
- 0
- <_>
-
- <_>
- 9 0 4 10 -1.
- <_>
- 10 0 2 10 2.
- 0
- <_>
-
- <_>
- 9 0 6 1 -1.
- <_>
- 11 0 2 1 3.
- 0
- <_>
-
- <_>
- 9 0 6 3 -1.
- <_>
- 11 1 2 1 9.
- 0
- <_>
-
- <_>
- 9 0 4 4 -1.
- <_>
- 9 0 2 2 2.
- <_>
- 11 2 2 2 2.
- 0
- <_>
-
- <_>
- 9 0 12 12 -1.
- <_>
- 13 0 4 12 3.
- 0
- <_>
-
- <_>
- 9 1 3 2 -1.
- <_>
- 10 2 1 2 3.
- 1
- <_>
-
- <_>
- 9 1 12 2 -1.
- <_>
- 13 1 4 2 3.
- 0
- <_>
-
- <_>
- 9 1 12 4 -1.
- <_>
- 13 1 4 4 3.
- 0
- <_>
-
- <_>
- 9 1 12 11 -1.
- <_>
- 13 1 4 11 3.
- 0
- <_>
-
- <_>
- 9 1 8 12 -1.
- <_>
- 13 1 4 12 2.
- 0
- <_>
-
- <_>
- 9 1 12 12 -1.
- <_>
- 13 1 4 12 3.
- 0
- <_>
-
- <_>
- 9 2 12 10 -1.
- <_>
- 13 2 4 10 3.
- 0
- <_>
-
- <_>
- 9 3 4 8 -1.
- <_>
- 9 7 4 4 2.
- 0
- <_>
-
- <_>
- 9 3 6 8 -1.
- <_>
- 9 7 6 4 2.
- 0
- <_>
-
- <_>
- 9 4 33 4 -1.
- <_>
- 9 5 33 2 2.
- 0
- <_>
-
- <_>
- 9 5 4 6 -1.
- <_>
- 9 5 2 3 2.
- <_>
- 11 8 2 3 2.
- 0
- <_>
-
- <_>
- 9 7 8 6 -1.
- <_>
- 9 9 8 2 3.
- 0
- <_>
-
- <_>
- 9 8 3 3 -1.
- <_>
- 10 9 1 1 9.
- 0
- <_>
-
- <_>
- 9 8 3 2 -1.
- <_>
- 10 9 1 2 3.
- 1
- <_>
-
- <_>
- 9 8 8 4 -1.
- <_>
- 13 8 4 4 2.
- 0
- <_>
-
- <_>
- 9 8 20 1 -1.
- <_>
- 19 8 10 1 2.
- 0
- <_>
-
- <_>
- 9 9 2 4 -1.
- <_>
- 9 11 2 2 2.
- 0
- <_>
-
- <_>
- 9 10 6 2 -1.
- <_>
- 9 10 3 1 2.
- <_>
- 12 11 3 1 2.
- 0
- <_>
-
- <_>
- 9 10 16 3 -1.
- <_>
- 13 10 8 3 2.
- 0
- <_>
-
- <_>
- 9 10 42 3 -1.
- <_>
- 30 10 21 3 2.
- 0
- <_>
-
- <_>
- 9 12 42 1 -1.
- <_>
- 23 12 14 1 3.
- 0
- <_>
-
- <_>
- 10 0 12 2 -1.
- <_>
- 10 0 6 1 2.
- <_>
- 16 1 6 1 2.
- 0
- <_>
-
- <_>
- 10 0 8 2 -1.
- <_>
- 10 1 8 1 2.
- 0
- <_>
-
- <_>
- 10 1 9 11 -1.
- <_>
- 13 1 3 11 3.
- 0
- <_>
-
- <_>
- 10 1 12 2 -1.
- <_>
- 14 1 4 2 3.
- 0
- <_>
-
- <_>
- 10 2 3 9 -1.
- <_>
- 11 5 1 3 9.
- 0
- <_>
-
- <_>
- 10 2 4 5 -1.
- <_>
- 11 2 2 5 2.
- 0
- <_>
-
- <_>
- 10 2 12 11 -1.
- <_>
- 13 2 6 11 2.
- 0
- <_>
-
- <_>
- 10 2 4 3 -1.
- <_>
- 9 3 4 1 3.
- 1
- <_>
-
- <_>
- 10 3 2 4 -1.
- <_>
- 10 3 1 2 2.
- <_>
- 11 5 1 2 2.
- 0
- <_>
-
- <_>
- 10 4 8 1 -1.
- <_>
- 10 4 4 1 2.
- 1
- <_>
-
- <_>
- 10 6 4 4 -1.
- <_>
- 10 6 2 2 2.
- <_>
- 12 8 2 2 2.
- 0
- <_>
-
- <_>
- 10 6 6 5 -1.
- <_>
- 13 6 3 5 2.
- 0
- <_>
-
- <_>
- 10 7 2 6 -1.
- <_>
- 10 9 2 2 3.
- 0
- <_>
-
- <_>
- 10 9 2 3 -1.
- <_>
- 10 10 2 1 3.
- 0
- <_>
-
- <_>
- 10 10 1 2 -1.
- <_>
- 10 11 1 1 2.
- 0
- <_>
-
- <_>
- 10 11 3 2 -1.
- <_>
- 10 12 3 1 2.
- 0
- <_>
-
- <_>
- 10 11 6 2 -1.
- <_>
- 10 12 6 1 2.
- 0
- <_>
-
- <_>
- 11 0 3 8 -1.
- <_>
- 11 4 3 4 2.
- 0
- <_>
-
- <_>
- 11 0 12 12 -1.
- <_>
- 15 0 4 12 3.
- 0
- <_>
-
- <_>
- 11 0 10 4 -1.
- <_>
- 11 0 5 2 2.
- <_>
- 16 2 5 2 2.
- 0
- <_>
-
- <_>
- 11 0 6 6 -1.
- <_>
- 11 3 6 3 2.
- 0
- <_>
-
- <_>
- 11 0 21 7 -1.
- <_>
- 18 0 7 7 3.
- 0
- <_>
-
- <_>
- 11 0 10 3 -1.
- <_>
- 10 1 10 1 3.
- 1
- <_>
-
- <_>
- 11 0 36 9 -1.
- <_>
- 29 0 18 9 2.
- 0
- <_>
-
- <_>
- 11 1 2 3 -1.
- <_>
- 10 2 2 1 3.
- 1
- <_>
-
- <_>
- 11 1 9 11 -1.
- <_>
- 14 1 3 11 3.
- 0
- <_>
-
- <_>
- 11 1 12 11 -1.
- <_>
- 15 1 4 11 3.
- 0
- <_>
-
- <_>
- 11 2 9 9 -1.
- <_>
- 14 5 3 3 9.
- 0
- <_>
-
- <_>
- 11 2 12 5 -1.
- <_>
- 14 2 6 5 2.
- 0
- <_>
-
- <_>
- 11 3 6 9 -1.
- <_>
- 13 6 2 3 9.
- 0
- <_>
-
- <_>
- 11 3 3 3 -1.
- <_>
- 10 4 3 1 3.
- 1
- <_>
-
- <_>
- 11 3 27 6 -1.
- <_>
- 11 6 27 3 2.
- 0
- <_>
-
- <_>
- 11 4 6 9 -1.
- <_>
- 13 7 2 3 9.
- 0
- <_>
-
- <_>
- 11 4 26 6 -1.
- <_>
- 11 7 26 3 2.
- 0
- <_>
-
- <_>
- 11 4 27 6 -1.
- <_>
- 11 7 27 3 2.
- 0
- <_>
-
- <_>
- 11 4 31 2 -1.
- <_>
- 11 5 31 1 2.
- 0
- <_>
-
- <_>
- 11 4 35 2 -1.
- <_>
- 11 5 35 1 2.
- 0
- <_>
-
- <_>
- 11 7 30 3 -1.
- <_>
- 21 8 10 1 9.
- 0
- <_>
-
- <_>
- 11 8 8 4 -1.
- <_>
- 13 8 4 4 2.
- 0
- <_>
-
- <_>
- 11 8 6 4 -1.
- <_>
- 11 10 6 2 2.
- 0
- <_>
-
- <_>
- 11 9 8 2 -1.
- <_>
- 13 9 4 2 2.
- 0
- <_>
-
- <_>
- 12 0 4 1 -1.
- <_>
- 14 0 2 1 2.
- 0
- <_>
-
- <_>
- 12 0 16 5 -1.
- <_>
- 16 0 8 5 2.
- 0
- <_>
-
- <_>
- 12 0 16 13 -1.
- <_>
- 16 0 8 13 2.
- 0
- <_>
-
- <_>
- 12 0 18 5 -1.
- <_>
- 18 0 6 5 3.
- 0
- <_>
-
- <_>
- 12 0 7 2 -1.
- <_>
- 12 1 7 1 2.
- 0
- <_>
-
- <_>
- 12 1 6 12 -1.
- <_>
- 14 5 2 4 9.
- 0
- <_>
-
- <_>
- 12 1 10 2 -1.
- <_>
- 17 1 5 2 2.
- 0
- <_>
-
- <_>
- 12 2 2 3 -1.
- <_>
- 12 2 1 3 2.
- 1
- <_>
-
- <_>
- 12 2 9 2 -1.
- <_>
- 15 2 3 2 3.
- 0
- <_>
-
- <_>
- 12 2 12 4 -1.
- <_>
- 16 2 4 4 3.
- 0
- <_>
-
- <_>
- 12 2 28 2 -1.
- <_>
- 19 2 14 2 2.
- 0
- <_>
-
- <_>
- 12 3 6 2 -1.
- <_>
- 14 5 2 2 3.
- 1
- <_>
-
- <_>
- 12 4 4 5 -1.
- <_>
- 13 5 2 5 2.
- 1
- <_>
-
- <_>
- 12 4 4 3 -1.
- <_>
- 12 4 2 3 2.
- 1
- <_>
-
- <_>
- 12 4 6 6 -1.
- <_>
- 14 4 2 6 3.
- 0
- <_>
-
- <_>
- 12 4 5 2 -1.
- <_>
- 12 5 5 1 2.
- 0
- <_>
-
- <_>
- 12 4 18 9 -1.
- <_>
- 18 7 6 3 9.
- 0
- <_>
-
- <_>
- 12 5 6 5 -1.
- <_>
- 14 5 2 5 3.
- 0
- <_>
-
- <_>
- 12 5 18 6 -1.
- <_>
- 18 7 6 2 9.
- 0
- <_>
-
- <_>
- 12 7 21 3 -1.
- <_>
- 19 8 7 1 9.
- 0
- <_>
-
- <_>
- 12 12 6 1 -1.
- <_>
- 14 12 2 1 3.
- 0
- <_>
-
- <_>
- 12 12 39 1 -1.
- <_>
- 25 12 13 1 3.
- 0
- <_>
-
- <_>
- 13 0 16 5 -1.
- <_>
- 17 0 8 5 2.
- 0
- <_>
-
- <_>
- 13 0 5 8 -1.
- <_>
- 11 2 5 4 2.
- 1
- <_>
-
- <_>
- 13 0 24 10 -1.
- <_>
- 19 0 12 10 2.
- 0
- <_>
-
- <_>
- 13 0 36 3 -1.
- <_>
- 22 0 18 3 2.
- 0
- <_>
-
- <_>
- 13 0 28 1 -1.
- <_>
- 27 0 14 1 2.
- 0
- <_>
-
- <_>
- 13 1 8 3 -1.
- <_>
- 17 1 4 3 2.
- 0
- <_>
-
- <_>
- 13 1 8 6 -1.
- <_>
- 17 1 4 6 2.
- 0
- <_>
-
- <_>
- 13 1 20 7 -1.
- <_>
- 18 1 10 7 2.
- 0
- <_>
-
- <_>
- 13 1 36 1 -1.
- <_>
- 31 1 18 1 2.
- 0
- <_>
-
- <_>
- 13 1 20 3 -1.
- <_>
- 13 2 20 1 3.
- 0
- <_>
-
- <_>
- 13 2 14 1 -1.
- <_>
- 20 2 7 1 2.
- 0
- <_>
-
- <_>
- 13 3 3 8 -1.
- <_>
- 13 5 3 4 2.
- 0
- <_>
-
- <_>
- 13 3 4 2 -1.
- <_>
- 13 4 4 1 2.
- 0
- <_>
-
- <_>
- 13 4 5 2 -1.
- <_>
- 13 5 5 1 2.
- 0
- <_>
-
- <_>
- 13 5 4 3 -1.
- <_>
- 13 5 2 3 2.
- 1
- <_>
-
- <_>
- 13 5 24 6 -1.
- <_>
- 19 5 12 6 2.
- 0
- <_>
-
- <_>
- 13 5 32 6 -1.
- <_>
- 13 8 32 3 2.
- 0
- <_>
-
- <_>
- 13 6 1 3 -1.
- <_>
- 12 7 1 1 3.
- 1
- <_>
-
- <_>
- 13 6 3 6 -1.
- <_>
- 13 8 3 2 3.
- 0
- <_>
-
- <_>
- 13 7 3 4 -1.
- <_>
- 13 9 3 2 2.
- 0
- <_>
-
- <_>
- 13 8 6 2 -1.
- <_>
- 13 9 6 1 2.
- 0
- <_>
-
- <_>
- 13 9 10 4 -1.
- <_>
- 18 9 5 4 2.
- 0
- <_>
-
- <_>
- 13 9 18 4 -1.
- <_>
- 19 9 6 4 3.
- 0
- <_>
-
- <_>
- 14 0 4 1 -1.
- <_>
- 15 0 2 1 2.
- 0
- <_>
-
- <_>
- 14 0 1 8 -1.
- <_>
- 14 4 1 4 2.
- 0
- <_>
-
- <_>
- 14 0 1 12 -1.
- <_>
- 14 4 1 4 3.
- 0
- <_>
-
- <_>
- 14 0 1 12 -1.
- <_>
- 14 6 1 6 2.
- 0
- <_>
-
- <_>
- 14 0 8 4 -1.
- <_>
- 14 0 4 2 2.
- <_>
- 18 2 4 2 2.
- 0
- <_>
-
- <_>
- 14 0 12 6 -1.
- <_>
- 18 2 4 2 9.
- 0
- <_>
-
- <_>
- 14 0 16 4 -1.
- <_>
- 18 0 8 4 2.
- 0
- <_>
-
- <_>
- 14 1 1 4 -1.
- <_>
- 14 3 1 2 2.
- 0
- <_>
-
- <_>
- 14 1 2 4 -1.
- <_>
- 14 2 2 2 2.
- 0
- <_>
-
- <_>
- 14 1 2 12 -1.
- <_>
- 14 7 2 6 2.
- 0
- <_>
-
- <_>
- 14 2 2 8 -1.
- <_>
- 14 4 2 4 2.
- 0
- <_>
-
- <_>
- 14 2 2 9 -1.
- <_>
- 14 5 2 3 3.
- 0
- <_>
-
- <_>
- 14 2 18 4 -1.
- <_>
- 14 2 9 2 2.
- <_>
- 23 4 9 2 2.
- 0
- <_>
-
- <_>
- 14 3 12 9 -1.
- <_>
- 14 6 12 3 3.
- 0
- <_>
-
- <_>
- 14 4 2 1 -1.
- <_>
- 15 4 1 1 2.
- 0
- <_>
-
- <_>
- 14 4 16 1 -1.
- <_>
- 22 4 8 1 2.
- 0
- <_>
-
- <_>
- 14 5 2 4 -1.
- <_>
- 14 6 2 2 2.
- 0
- <_>
-
- <_>
- 14 5 2 6 -1.
- <_>
- 14 8 2 3 2.
- 0
- <_>
-
- <_>
- 14 5 3 4 -1.
- <_>
- 14 6 3 2 2.
- 0
- <_>
-
- <_>
- 14 5 3 6 -1.
- <_>
- 14 8 3 3 2.
- 0
- <_>
-
- <_>
- 14 5 4 3 -1.
- <_>
- 13 6 4 1 3.
- 1
- <_>
-
- <_>
- 14 6 3 4 -1.
- <_>
- 14 8 3 2 2.
- 0
- <_>
-
- <_>
- 14 7 3 2 -1.
- <_>
- 14 8 3 1 2.
- 0
- <_>
-
- <_>
- 14 8 2 3 -1.
- <_>
- 15 8 1 3 2.
- 0
- <_>
-
- <_>
- 14 8 9 2 -1.
- <_>
- 17 8 3 2 3.
- 0
- <_>
-
- <_>
- 14 8 6 4 -1.
- <_>
- 17 8 3 4 2.
- 0
- <_>
-
- <_>
- 14 9 2 2 -1.
- <_>
- 14 10 2 1 2.
- 0
- <_>
-
- <_>
- 14 9 16 4 -1.
- <_>
- 18 9 8 4 2.
- 0
- <_>
-
- <_>
- 14 11 15 2 -1.
- <_>
- 19 11 5 2 3.
- 0
- <_>
-
- <_>
- 14 12 2 1 -1.
- <_>
- 15 12 1 1 2.
- 0
- <_>
-
- <_>
- 14 12 3 1 -1.
- <_>
- 15 12 1 1 3.
- 0
- <_>
-
- <_>
- 15 0 4 1 -1.
- <_>
- 16 0 2 1 2.
- 0
- <_>
-
- <_>
- 15 0 10 2 -1.
- <_>
- 20 0 5 2 2.
- 0
- <_>
-
- <_>
- 15 0 15 2 -1.
- <_>
- 20 0 5 2 3.
- 0
- <_>
-
- <_>
- 15 0 33 9 -1.
- <_>
- 15 3 33 3 3.
- 0
- <_>
-
- <_>
- 15 1 1 12 -1.
- <_>
- 15 7 1 6 2.
- 0
- <_>
-
- <_>
- 15 1 2 6 -1.
- <_>
- 15 3 2 2 3.
- 0
- <_>
-
- <_>
- 15 1 36 2 -1.
- <_>
- 33 1 18 2 2.
- 0
- <_>
-
- <_>
- 15 2 1 9 -1.
- <_>
- 15 5 1 3 3.
- 0
- <_>
-
- <_>
- 15 2 3 4 -1.
- <_>
- 15 4 3 2 2.
- 0
- <_>
-
- <_>
- 15 2 9 9 -1.
- <_>
- 18 5 3 3 9.
- 0
- <_>
-
- <_>
- 15 2 24 6 -1.
- <_>
- 15 2 12 3 2.
- <_>
- 27 5 12 3 2.
- 0
- <_>
-
- <_>
- 15 3 4 3 -1.
- <_>
- 16 4 2 3 2.
- 1
- <_>
-
- <_>
- 15 3 4 6 -1.
- <_>
- 15 6 4 3 2.
- 0
- <_>
-
- <_>
- 15 4 3 4 -1.
- <_>
- 15 6 3 2 2.
- 0
- <_>
-
- <_>
- 15 4 6 3 -1.
- <_>
- 14 5 6 1 3.
- 1
- <_>
-
- <_>
- 15 6 4 4 -1.
- <_>
- 15 6 2 2 2.
- <_>
- 17 8 2 2 2.
- 0
- <_>
-
- <_>
- 15 8 1 3 -1.
- <_>
- 15 9 1 1 3.
- 0
- <_>
-
- <_>
- 15 8 15 5 -1.
- <_>
- 20 8 5 5 3.
- 0
- <_>
-
- <_>
- 15 9 1 2 -1.
- <_>
- 15 10 1 1 2.
- 0
- <_>
-
- <_>
- 15 9 2 2 -1.
- <_>
- 15 9 1 1 2.
- <_>
- 16 10 1 1 2.
- 0
- <_>
-
- <_>
- 15 10 13 3 -1.
- <_>
- 15 11 13 1 3.
- 0
- <_>
-
- <_>
- 15 10 34 3 -1.
- <_>
- 15 11 34 1 3.
- 0
- <_>
-
- <_>
- 15 11 35 2 -1.
- <_>
- 15 12 35 1 2.
- 0
- <_>
-
- <_>
- 16 0 1 2 -1.
- <_>
- 16 0 1 1 2.
- 1
- <_>
-
- <_>
- 16 0 4 8 -1.
- <_>
- 16 0 2 8 2.
- 1
- <_>
-
- <_>
- 16 0 12 1 -1.
- <_>
- 19 0 6 1 2.
- 0
- <_>
-
- <_>
- 16 0 6 6 -1.
- <_>
- 14 2 6 2 3.
- 1
- <_>
-
- <_>
- 16 0 26 4 -1.
- <_>
- 29 0 13 4 2.
- 0
- <_>
-
- <_>
- 16 1 18 12 -1.
- <_>
- 22 1 6 12 3.
- 0
- <_>
-
- <_>
- 16 1 18 2 -1.
- <_>
- 16 2 18 1 2.
- 0
- <_>
-
- <_>
- 16 2 4 5 -1.
- <_>
- 16 2 2 5 2.
- 1
- <_>
-
- <_>
- 16 3 1 2 -1.
- <_>
- 16 4 1 1 2.
- 0
- <_>
-
- <_>
- 16 5 5 3 -1.
- <_>
- 15 6 5 1 3.
- 1
- <_>
-
- <_>
- 16 9 15 4 -1.
- <_>
- 21 9 5 4 3.
- 0
- <_>
-
- <_>
- 16 9 18 4 -1.
- <_>
- 22 9 6 4 3.
- 0
- <_>
-
- <_>
- 17 0 1 6 -1.
- <_>
- 15 2 1 2 3.
- 1
- <_>
-
- <_>
- 17 0 6 2 -1.
- <_>
- 17 1 6 1 2.
- 0
- <_>
-
- <_>
- 17 0 18 5 -1.
- <_>
- 23 0 6 5 3.
- 0
- <_>
-
- <_>
- 17 0 8 2 -1.
- <_>
- 17 1 8 1 2.
- 0
- <_>
-
- <_>
- 17 0 11 4 -1.
- <_>
- 17 2 11 2 2.
- 0
- <_>
-
- <_>
- 17 0 16 3 -1.
- <_>
- 17 1 16 1 3.
- 0
- <_>
-
- <_>
- 17 0 17 3 -1.
- <_>
- 17 1 17 1 3.
- 0
- <_>
-
- <_>
- 17 0 19 2 -1.
- <_>
- 17 1 19 1 2.
- 0
- <_>
-
- <_>
- 17 0 20 4 -1.
- <_>
- 17 1 20 2 2.
- 0
- <_>
-
- <_>
- 17 0 32 8 -1.
- <_>
- 17 4 32 4 2.
- 0
- <_>
-
- <_>
- 17 4 1 2 -1.
- <_>
- 17 5 1 1 2.
- 0
- <_>
-
- <_>
- 17 7 8 1 -1.
- <_>
- 21 7 4 1 2.
- 0
- <_>
-
- <_>
- 17 7 21 3 -1.
- <_>
- 17 8 21 1 3.
- 0
- <_>
-
- <_>
- 17 7 28 6 -1.
- <_>
- 17 9 28 2 3.
- 0
- <_>
-
- <_>
- 18 0 3 1 -1.
- <_>
- 19 0 1 1 3.
- 0
- <_>
-
- <_>
- 18 0 2 5 -1.
- <_>
- 18 0 1 5 2.
- 1
- <_>
-
- <_>
- 18 0 3 4 -1.
- <_>
- 18 2 3 2 2.
- 0
- <_>
-
- <_>
- 18 0 11 2 -1.
- <_>
- 18 1 11 1 2.
- 0
- <_>
-
- <_>
- 18 0 18 3 -1.
- <_>
- 18 1 18 1 3.
- 0
- <_>
-
- <_>
- 18 1 17 2 -1.
- <_>
- 18 2 17 1 2.
- 0
- <_>
-
- <_>
- 18 2 4 4 -1.
- <_>
- 19 2 2 4 2.
- 0
- <_>
-
- <_>
- 18 2 2 6 -1.
- <_>
- 16 4 2 2 3.
- 1
- <_>
-
- <_>
- 18 2 6 4 -1.
- <_>
- 20 2 2 4 3.
- 0
- <_>
-
- <_>
- 18 3 3 2 -1.
- <_>
- 19 3 1 2 3.
- 0
- <_>
-
- <_>
- 18 7 4 3 -1.
- <_>
- 19 7 2 3 2.
- 0
- <_>
-
- <_>
- 18 8 4 2 -1.
- <_>
- 19 8 2 2 2.
- 0
- <_>
-
- <_>
- 18 8 4 3 -1.
- <_>
- 19 8 2 3 2.
- 0
- <_>
-
- <_>
- 18 10 27 3 -1.
- <_>
- 18 11 27 1 3.
- 0
- <_>
-
- <_>
- 19 0 2 1 -1.
- <_>
- 20 0 1 1 2.
- 0
- <_>
-
- <_>
- 19 0 3 1 -1.
- <_>
- 20 0 1 1 3.
- 0
- <_>
-
- <_>
- 19 0 3 8 -1.
- <_>
- 20 1 1 8 3.
- 1
- <_>
-
- <_>
- 19 1 3 6 -1.
- <_>
- 20 3 1 2 9.
- 0
- <_>
-
- <_>
- 19 1 9 12 -1.
- <_>
- 22 1 3 12 3.
- 0
- <_>
-
- <_>
- 19 1 17 2 -1.
- <_>
- 19 2 17 1 2.
- 0
- <_>
-
- <_>
- 19 3 6 2 -1.
- <_>
- 21 3 2 2 3.
- 0
- <_>
-
- <_>
- 19 4 4 4 -1.
- <_>
- 19 4 2 2 2.
- <_>
- 21 6 2 2 2.
- 0
- <_>
-
- <_>
- 19 12 2 1 -1.
- <_>
- 20 12 1 1 2.
- 0
- <_>
-
- <_>
- 20 0 4 1 -1.
- <_>
- 21 0 2 1 2.
- 0
- <_>
-
- <_>
- 20 0 4 11 -1.
- <_>
- 21 0 2 11 2.
- 0
- <_>
-
- <_>
- 20 0 6 1 -1.
- <_>
- 22 0 2 1 3.
- 0
- <_>
-
- <_>
- 20 0 12 12 -1.
- <_>
- 24 0 4 12 3.
- 0
- <_>
-
- <_>
- 20 0 12 3 -1.
- <_>
- 26 0 6 3 2.
- 0
- <_>
-
- <_>
- 20 0 18 3 -1.
- <_>
- 26 0 6 3 3.
- 0
- <_>
-
- <_>
- 20 0 18 4 -1.
- <_>
- 29 0 9 4 2.
- 0
- <_>
-
- <_>
- 20 0 26 1 -1.
- <_>
- 33 0 13 1 2.
- 0
- <_>
-
- <_>
- 20 0 22 4 -1.
- <_>
- 20 1 22 2 2.
- 0
- <_>
-
- <_>
- 20 2 3 2 -1.
- <_>
- 21 3 1 2 3.
- 1
- <_>
-
- <_>
- 20 3 4 8 -1.
- <_>
- 21 3 2 8 2.
- 0
- <_>
-
- <_>
- 20 4 3 9 -1.
- <_>
- 21 7 1 3 9.
- 0
- <_>
-
- <_>
- 20 5 3 5 -1.
- <_>
- 21 5 1 5 3.
- 0
- <_>
-
- <_>
- 20 5 4 8 -1.
- <_>
- 22 5 2 8 2.
- 0
- <_>
-
- <_>
- 20 6 3 2 -1.
- <_>
- 21 7 1 2 3.
- 1
- <_>
-
- <_>
- 20 6 4 2 -1.
- <_>
- 21 7 2 2 2.
- 1
- <_>
-
- <_>
- 20 6 24 6 -1.
- <_>
- 20 9 24 3 2.
- 0
- <_>
-
- <_>
- 20 8 4 2 -1.
- <_>
- 21 8 2 2 2.
- 0
- <_>
-
- <_>
- 20 9 4 4 -1.
- <_>
- 20 9 2 2 2.
- <_>
- 22 11 2 2 2.
- 0
- <_>
-
- <_>
- 20 9 18 4 -1.
- <_>
- 26 9 6 4 3.
- 0
- <_>
-
- <_>
- 20 12 4 1 -1.
- <_>
- 21 12 2 1 2.
- 0
- <_>
-
- <_>
- 21 0 2 6 -1.
- <_>
- 21 0 1 3 2.
- <_>
- 22 3 1 3 2.
- 0
- <_>
-
- <_>
- 21 0 4 2 -1.
- <_>
- 21 1 4 1 2.
- 0
- <_>
-
- <_>
- 21 0 28 1 -1.
- <_>
- 28 0 14 1 2.
- 0
- <_>
-
- <_>
- 21 0 21 4 -1.
- <_>
- 28 0 7 4 3.
- 0
- <_>
-
- <_>
- 21 0 14 5 -1.
- <_>
- 28 0 7 5 2.
- 0
- <_>
-
- <_>
- 21 1 4 11 -1.
- <_>
- 22 1 2 11 2.
- 0
- <_>
-
- <_>
- 21 2 25 9 -1.
- <_>
- 21 5 25 3 3.
- 0
- <_>
-
- <_>
- 21 3 4 9 -1.
- <_>
- 22 3 2 9 2.
- 0
- <_>
-
- <_>
- 21 3 6 1 -1.
- <_>
- 23 3 2 1 3.
- 0
- <_>
-
- <_>
- 21 6 4 2 -1.
- <_>
- 22 7 2 2 2.
- 1
- <_>
-
- <_>
- 21 7 3 2 -1.
- <_>
- 22 8 1 2 3.
- 1
- <_>
-
- <_>
- 21 7 3 3 -1.
- <_>
- 22 8 1 3 3.
- 1
- <_>
-
- <_>
- 21 7 6 4 -1.
- <_>
- 23 7 2 4 3.
- 0
- <_>
-
- <_>
- 21 10 21 3 -1.
- <_>
- 28 10 7 3 3.
- 0
- <_>
-
- <_>
- 21 10 18 3 -1.
- <_>
- 21 11 18 1 3.
- 0
- <_>
-
- <_>
- 21 12 30 1 -1.
- <_>
- 36 12 15 1 2.
- 0
- <_>
-
- <_>
- 22 0 4 1 -1.
- <_>
- 23 0 2 1 2.
- 0
- <_>
-
- <_>
- 22 0 8 1 -1.
- <_>
- 24 0 4 1 2.
- 0
- <_>
-
- <_>
- 22 0 12 4 -1.
- <_>
- 25 0 6 4 2.
- 0
- <_>
-
- <_>
- 22 0 15 2 -1.
- <_>
- 27 0 5 2 3.
- 0
- <_>
-
- <_>
- 22 0 28 2 -1.
- <_>
- 36 0 14 2 2.
- 0
- <_>
-
- <_>
- 22 1 15 2 -1.
- <_>
- 27 1 5 2 3.
- 0
- <_>
-
- <_>
- 22 1 8 3 -1.
- <_>
- 21 2 8 1 3.
- 1
- <_>
-
- <_>
- 22 2 3 3 -1.
- <_>
- 23 2 1 3 3.
- 0
- <_>
-
- <_>
- 22 2 3 9 -1.
- <_>
- 23 2 1 9 3.
- 0
- <_>
-
- <_>
- 22 2 3 10 -1.
- <_>
- 23 2 1 10 3.
- 0
- <_>
-
- <_>
- 22 5 3 3 -1.
- <_>
- 22 6 3 1 3.
- 0
- <_>
-
- <_>
- 22 6 2 3 -1.
- <_>
- 22 7 2 1 3.
- 0
- <_>
-
- <_>
- 22 7 2 3 -1.
- <_>
- 22 8 2 1 3.
- 0
- <_>
-
- <_>
- 22 8 3 2 -1.
- <_>
- 23 8 1 2 3.
- 0
- <_>
-
- <_>
- 22 8 3 2 -1.
- <_>
- 23 9 1 2 3.
- 1
- <_>
-
- <_>
- 22 8 2 2 -1.
- <_>
- 22 9 2 1 2.
- 0
- <_>
-
- <_>
- 22 9 4 4 -1.
- <_>
- 22 9 2 2 2.
- <_>
- 24 11 2 2 2.
- 0
- <_>
-
- <_>
- 22 9 9 2 -1.
- <_>
- 25 9 3 2 3.
- 0
- <_>
-
- <_>
- 22 9 6 4 -1.
- <_>
- 25 9 3 4 2.
- 0
- <_>
-
- <_>
- 22 9 9 4 -1.
- <_>
- 25 9 3 4 3.
- 0
- <_>
-
- <_>
- 22 10 6 2 -1.
- <_>
- 22 10 3 1 2.
- <_>
- 25 11 3 1 2.
- 0
- <_>
-
- <_>
- 23 0 3 1 -1.
- <_>
- 24 0 1 1 3.
- 0
- <_>
-
- <_>
- 23 0 6 1 -1.
- <_>
- 25 0 2 1 3.
- 0
- <_>
-
- <_>
- 23 0 4 4 -1.
- <_>
- 23 0 2 2 2.
- <_>
- 25 2 2 2 2.
- 0
- <_>
-
- <_>
- 23 0 8 12 -1.
- <_>
- 25 0 4 12 2.
- 0
- <_>
-
- <_>
- 23 0 12 1 -1.
- <_>
- 26 0 6 1 2.
- 0
- <_>
-
- <_>
- 23 0 21 2 -1.
- <_>
- 23 1 21 1 2.
- 0
- <_>
-
- <_>
- 23 2 12 10 -1.
- <_>
- 29 2 6 10 2.
- 0
- <_>
-
- <_>
- 23 3 4 2 -1.
- <_>
- 24 3 2 2 2.
- 0
- <_>
-
- <_>
- 23 4 2 4 -1.
- <_>
- 22 5 2 2 2.
- 1
- <_>
-
- <_>
- 23 4 12 9 -1.
- <_>
- 27 4 4 9 3.
- 0
- <_>
-
- <_>
- 23 5 1 3 -1.
- <_>
- 23 6 1 1 3.
- 0
- <_>
-
- <_>
- 23 6 9 1 -1.
- <_>
- 26 6 3 1 3.
- 0
- <_>
-
- <_>
- 23 8 4 3 -1.
- <_>
- 24 8 2 3 2.
- 0
- <_>
-
- <_>
- 23 9 4 1 -1.
- <_>
- 24 9 2 1 2.
- 0
- <_>
-
- <_>
- 23 9 8 4 -1.
- <_>
- 25 9 4 4 2.
- 0
- <_>
-
- <_>
- 23 9 12 4 -1.
- <_>
- 26 9 6 4 2.
- 0
- <_>
-
- <_>
- 23 11 6 2 -1.
- <_>
- 23 11 3 1 2.
- <_>
- 26 12 3 1 2.
- 0
- <_>
-
- <_>
- 24 0 3 1 -1.
- <_>
- 25 0 1 1 3.
- 0
- <_>
-
- <_>
- 24 0 4 1 -1.
- <_>
- 25 0 2 1 2.
- 0
- <_>
-
- <_>
- 24 0 4 6 -1.
- <_>
- 24 0 2 3 2.
- <_>
- 26 3 2 3 2.
- 0
- <_>
-
- <_>
- 24 0 17 2 -1.
- <_>
- 24 1 17 1 2.
- 0
- <_>
-
- <_>
- 24 0 22 2 -1.
- <_>
- 24 1 22 1 2.
- 0
- <_>
-
- <_>
- 24 1 4 4 -1.
- <_>
- 24 1 2 2 2.
- <_>
- 26 3 2 2 2.
- 0
- <_>
-
- <_>
- 24 1 13 2 -1.
- <_>
- 24 2 13 1 2.
- 0
- <_>
-
- <_>
- 24 2 2 2 -1.
- <_>
- 24 2 1 1 2.
- <_>
- 25 3 1 1 2.
- 0
- <_>
-
- <_>
- 24 6 6 1 -1.
- <_>
- 26 6 2 1 3.
- 0
- <_>
-
- <_>
- 24 7 4 6 -1.
- <_>
- 24 7 2 3 2.
- <_>
- 26 10 2 3 2.
- 0
- <_>
-
- <_>
- 24 8 2 5 -1.
- <_>
- 25 8 1 5 2.
- 0
- <_>
-
- <_>
- 24 9 15 4 -1.
- <_>
- 29 9 5 4 3.
- 0
- <_>
-
- <_>
- 24 10 27 3 -1.
- <_>
- 24 11 27 1 3.
- 0
- <_>
-
- <_>
- 25 0 3 1 -1.
- <_>
- 26 0 1 1 3.
- 0
- <_>
-
- <_>
- 25 0 3 2 -1.
- <_>
- 26 1 1 2 3.
- 1
- <_>
-
- <_>
- 25 0 4 1 -1.
- <_>
- 27 0 2 1 2.
- 0
- <_>
-
- <_>
- 25 0 8 1 -1.
- <_>
- 27 0 4 1 2.
- 0
- <_>
-
- <_>
- 25 0 26 3 -1.
- <_>
- 25 1 26 1 3.
- 0
- <_>
-
- <_>
- 25 1 2 4 -1.
- <_>
- 25 1 1 2 2.
- <_>
- 26 3 1 2 2.
- 0
- <_>
-
- <_>
- 25 1 3 2 -1.
- <_>
- 26 2 1 2 3.
- 1
- <_>
-
- <_>
- 25 2 3 2 -1.
- <_>
- 26 3 1 2 3.
- 1
- <_>
-
- <_>
- 25 4 4 1 -1.
- <_>
- 26 4 2 1 2.
- 0
- <_>
-
- <_>
- 25 4 4 6 -1.
- <_>
- 25 4 2 3 2.
- <_>
- 27 7 2 3 2.
- 0
- <_>
-
- <_>
- 25 6 3 6 -1.
- <_>
- 26 8 1 2 9.
- 0
- <_>
-
- <_>
- 25 7 4 2 -1.
- <_>
- 26 7 2 2 2.
- 0
- <_>
-
- <_>
- 25 8 4 2 -1.
- <_>
- 26 8 2 2 2.
- 0
- <_>
-
- <_>
- 25 9 3 3 -1.
- <_>
- 26 9 1 3 3.
- 0
- <_>
-
- <_>
- 25 9 13 4 -1.
- <_>
- 25 11 13 2 2.
- 0
- <_>
-
- <_>
- 25 10 2 2 -1.
- <_>
- 25 11 2 1 2.
- 0
- <_>
-
- <_>
- 26 0 3 1 -1.
- <_>
- 27 0 1 1 3.
- 0
- <_>
-
- <_>
- 26 0 4 1 -1.
- <_>
- 27 0 2 1 2.
- 0
- <_>
-
- <_>
- 26 0 1 12 -1.
- <_>
- 23 3 1 6 2.
- 1
- <_>
-
- <_>
- 26 0 18 13 -1.
- <_>
- 32 0 6 13 3.
- 0
- <_>
-
- <_>
- 26 0 18 2 -1.
- <_>
- 35 0 9 2 2.
- 0
- <_>
-
- <_>
- 26 2 1 6 -1.
- <_>
- 26 4 1 2 3.
- 0
- <_>
-
- <_>
- 26 2 2 2 -1.
- <_>
- 26 2 1 2 2.
- 1
- <_>
-
- <_>
- 26 2 3 2 -1.
- <_>
- 27 3 1 2 3.
- 1
- <_>
-
- <_>
- 26 2 5 3 -1.
- <_>
- 25 3 5 1 3.
- 1
- <_>
-
- <_>
- 26 2 10 4 -1.
- <_>
- 26 3 10 2 2.
- 0
- <_>
-
- <_>
- 26 3 4 6 -1.
- <_>
- 26 3 2 3 2.
- <_>
- 28 6 2 3 2.
- 0
- <_>
-
- <_>
- 26 3 5 3 -1.
- <_>
- 25 4 5 1 3.
- 1
- <_>
-
- <_>
- 26 4 4 6 -1.
- <_>
- 26 4 2 3 2.
- <_>
- 28 7 2 3 2.
- 0
- <_>
-
- <_>
- 26 5 4 2 -1.
- <_>
- 26 5 2 1 2.
- <_>
- 28 6 2 1 2.
- 0
- <_>
-
- <_>
- 26 5 4 4 -1.
- <_>
- 26 5 2 2 2.
- <_>
- 28 7 2 2 2.
- 0
- <_>
-
- <_>
- 26 6 1 6 -1.
- <_>
- 26 8 1 2 3.
- 0
- <_>
-
- <_>
- 26 6 4 1 -1.
- <_>
- 28 6 2 1 2.
- 0
- <_>
-
- <_>
- 26 7 4 3 -1.
- <_>
- 27 7 2 3 2.
- 0
- <_>
-
- <_>
- 26 7 4 6 -1.
- <_>
- 26 7 2 3 2.
- <_>
- 28 10 2 3 2.
- 0
- <_>
-
- <_>
- 26 7 18 6 -1.
- <_>
- 32 7 6 6 3.
- 0
- <_>
-
- <_>
- 26 7 17 6 -1.
- <_>
- 26 10 17 3 2.
- 0
- <_>
-
- <_>
- 26 8 3 1 -1.
- <_>
- 27 8 1 1 3.
- 0
- <_>
-
- <_>
- 26 9 12 4 -1.
- <_>
- 29 9 6 4 2.
- 0
- <_>
-
- <_>
- 26 11 20 1 -1.
- <_>
- 36 11 10 1 2.
- 0
- <_>
-
- <_>
- 27 0 2 1 -1.
- <_>
- 28 0 1 1 2.
- 0
- <_>
-
- <_>
- 27 0 3 1 -1.
- <_>
- 28 0 1 1 3.
- 0
- <_>
-
- <_>
- 27 0 4 1 -1.
- <_>
- 29 0 2 1 2.
- 0
- <_>
-
- <_>
- 27 0 18 2 -1.
- <_>
- 27 0 9 1 2.
- <_>
- 36 1 9 1 2.
- 0
- <_>
-
- <_>
- 27 1 3 3 -1.
- <_>
- 28 2 1 3 3.
- 1
- <_>
-
- <_>
- 27 1 6 11 -1.
- <_>
- 29 1 2 11 3.
- 0
- <_>
-
- <_>
- 27 1 14 10 -1.
- <_>
- 34 1 7 10 2.
- 0
- <_>
-
- <_>
- 27 2 3 2 -1.
- <_>
- 28 3 1 2 3.
- 1
- <_>
-
- <_>
- 27 2 3 9 -1.
- <_>
- 28 2 1 9 3.
- 0
- <_>
-
- <_>
- 27 2 5 4 -1.
- <_>
- 26 3 5 2 2.
- 1
- <_>
-
- <_>
- 27 3 3 6 -1.
- <_>
- 28 3 1 6 3.
- 0
- <_>
-
- <_>
- 27 3 3 9 -1.
- <_>
- 28 3 1 9 3.
- 0
- <_>
-
- <_>
- 27 3 13 4 -1.
- <_>
- 27 5 13 2 2.
- 0
- <_>
-
- <_>
- 27 6 3 2 -1.
- <_>
- 28 7 1 2 3.
- 1
- <_>
-
- <_>
- 27 7 3 2 -1.
- <_>
- 28 7 1 2 3.
- 0
- <_>
-
- <_>
- 27 7 3 2 -1.
- <_>
- 28 8 1 2 3.
- 1
- <_>
-
- <_>
- 28 0 3 1 -1.
- <_>
- 29 0 1 1 3.
- 0
- <_>
-
- <_>
- 28 0 4 12 -1.
- <_>
- 29 0 2 12 2.
- 0
- <_>
-
- <_>
- 28 0 10 3 -1.
- <_>
- 28 0 5 3 2.
- 1
- <_>
-
- <_>
- 28 0 15 13 -1.
- <_>
- 33 0 5 13 3.
- 0
- <_>
-
- <_>
- 28 1 2 10 -1.
- <_>
- 29 1 1 10 2.
- 0
- <_>
-
- <_>
- 28 1 4 11 -1.
- <_>
- 29 1 2 11 2.
- 0
- <_>
-
- <_>
- 28 2 4 10 -1.
- <_>
- 29 2 2 10 2.
- 0
- <_>
-
- <_>
- 28 2 7 3 -1.
- <_>
- 27 3 7 1 3.
- 1
- <_>
-
- <_>
- 28 3 4 9 -1.
- <_>
- 29 3 2 9 2.
- 0
- <_>
-
- <_>
- 28 3 23 8 -1.
- <_>
- 28 5 23 4 2.
- 0
- <_>
-
- <_>
- 28 4 1 6 -1.
- <_>
- 28 7 1 3 2.
- 0
- <_>
-
- <_>
- 28 4 3 6 -1.
- <_>
- 28 6 3 2 3.
- 0
- <_>
-
- <_>
- 28 5 4 2 -1.
- <_>
- 30 5 2 2 2.
- 0
- <_>
-
- <_>
- 28 5 20 6 -1.
- <_>
- 28 8 20 3 2.
- 0
- <_>
-
- <_>
- 28 6 1 4 -1.
- <_>
- 27 7 1 2 2.
- 1
- <_>
-
- <_>
- 28 6 3 3 -1.
- <_>
- 29 7 1 3 3.
- 1
- <_>
-
- <_>
- 28 7 3 1 -1.
- <_>
- 29 8 1 1 3.
- 1
- <_>
-
- <_>
- 28 7 4 3 -1.
- <_>
- 28 8 4 1 3.
- 0
- <_>
-
- <_>
- 28 7 12 2 -1.
- <_>
- 28 8 12 1 2.
- 0
- <_>
-
- <_>
- 28 8 2 1 -1.
- <_>
- 28 8 1 1 2.
- 1
- <_>
-
- <_>
- 28 8 3 1 -1.
- <_>
- 29 9 1 1 3.
- 1
- <_>
-
- <_>
- 28 11 14 2 -1.
- <_>
- 28 11 7 1 2.
- <_>
- 35 12 7 1 2.
- 0
- <_>
-
- <_>
- 29 0 3 1 -1.
- <_>
- 30 0 1 1 3.
- 0
- <_>
-
- <_>
- 29 0 4 1 -1.
- <_>
- 30 0 2 1 2.
- 0
- <_>
-
- <_>
- 29 2 3 8 -1.
- <_>
- 30 2 1 8 3.
- 0
- <_>
-
- <_>
- 29 3 3 9 -1.
- <_>
- 30 3 1 9 3.
- 0
- <_>
-
- <_>
- 29 5 2 3 -1.
- <_>
- 29 6 2 1 3.
- 0
- <_>
-
- <_>
- 29 5 3 4 -1.
- <_>
- 29 6 3 2 2.
- 0
- <_>
-
- <_>
- 29 7 3 2 -1.
- <_>
- 30 8 1 2 3.
- 1
- <_>
-
- <_>
- 29 7 3 3 -1.
- <_>
- 30 8 1 3 3.
- 1
- <_>
-
- <_>
- 29 8 4 2 -1.
- <_>
- 30 8 2 2 2.
- 0
- <_>
-
- <_>
- 29 8 2 2 -1.
- <_>
- 29 8 1 2 2.
- 1
- <_>
-
- <_>
- 29 8 3 2 -1.
- <_>
- 30 9 1 2 3.
- 1
- <_>
-
- <_>
- 29 9 15 4 -1.
- <_>
- 34 9 5 4 3.
- 0
- <_>
-
- <_>
- 29 11 22 2 -1.
- <_>
- 40 11 11 2 2.
- 0
- <_>
-
- <_>
- 29 12 2 1 -1.
- <_>
- 30 12 1 1 2.
- 0
- <_>
-
- <_>
- 29 12 3 1 -1.
- <_>
- 30 12 1 1 3.
- 0
- <_>
-
- <_>
- 30 0 3 1 -1.
- <_>
- 31 0 1 1 3.
- 0
- <_>
-
- <_>
- 30 0 4 1 -1.
- <_>
- 31 0 2 1 2.
- 0
- <_>
-
- <_>
- 30 0 9 2 -1.
- <_>
- 33 3 3 2 3.
- 1
- <_>
-
- <_>
- 30 0 20 3 -1.
- <_>
- 35 0 10 3 2.
- 0
- <_>
-
- <_>
- 30 0 16 2 -1.
- <_>
- 30 1 16 1 2.
- 0
- <_>
-
- <_>
- 30 1 4 2 -1.
- <_>
- 30 1 2 1 2.
- <_>
- 32 2 2 1 2.
- 0
- <_>
-
- <_>
- 30 1 8 12 -1.
- <_>
- 32 1 4 12 2.
- 0
- <_>
-
- <_>
- 30 2 8 1 -1.
- <_>
- 32 2 4 1 2.
- 0
- <_>
-
- <_>
- 30 2 6 2 -1.
- <_>
- 32 2 2 2 3.
- 0
- <_>
-
- <_>
- 30 2 7 3 -1.
- <_>
- 29 3 7 1 3.
- 1
- <_>
-
- <_>
- 30 4 4 4 -1.
- <_>
- 31 4 2 4 2.
- 0
- <_>
-
- <_>
- 30 6 3 4 -1.
- <_>
- 30 6 3 2 2.
- 1
- <_>
-
- <_>
- 30 7 12 6 -1.
- <_>
- 33 7 6 6 2.
- 0
- <_>
-
- <_>
- 30 8 18 3 -1.
- <_>
- 36 9 6 1 9.
- 0
- <_>
-
- <_>
- 30 9 4 2 -1.
- <_>
- 31 9 2 2 2.
- 0
- <_>
-
- <_>
- 30 9 12 4 -1.
- <_>
- 33 9 6 4 2.
- 0
- <_>
-
- <_>
- 30 12 3 1 -1.
- <_>
- 31 12 1 1 3.
- 0
- <_>
-
- <_>
- 31 0 3 1 -1.
- <_>
- 32 0 1 1 3.
- 0
- <_>
-
- <_>
- 31 0 4 1 -1.
- <_>
- 32 0 2 1 2.
- 0
- <_>
-
- <_>
- 31 0 5 2 -1.
- <_>
- 31 1 5 1 2.
- 0
- <_>
-
- <_>
- 31 0 12 2 -1.
- <_>
- 31 0 6 1 2.
- <_>
- 37 1 6 1 2.
- 0
- <_>
-
- <_>
- 31 0 12 3 -1.
- <_>
- 31 1 12 1 3.
- 0
- <_>
-
- <_>
- 31 2 4 4 -1.
- <_>
- 31 2 2 2 2.
- <_>
- 33 4 2 2 2.
- 0
- <_>
-
- <_>
- 31 3 3 9 -1.
- <_>
- 31 6 3 3 3.
- 0
- <_>
-
- <_>
- 31 3 8 2 -1.
- <_>
- 31 3 4 2 2.
- 1
- <_>
-
- <_>
- 31 5 3 6 -1.
- <_>
- 32 7 1 2 9.
- 0
- <_>
-
- <_>
- 31 7 3 3 -1.
- <_>
- 32 7 1 3 3.
- 0
- <_>
-
- <_>
- 31 9 2 4 -1.
- <_>
- 31 9 1 2 2.
- <_>
- 32 11 1 2 2.
- 0
- <_>
-
- <_>
- 32 0 3 1 -1.
- <_>
- 33 0 1 1 3.
- 0
- <_>
-
- <_>
- 32 0 3 2 -1.
- <_>
- 33 0 1 2 3.
- 0
- <_>
-
- <_>
- 32 0 3 3 -1.
- <_>
- 33 1 1 3 3.
- 1
- <_>
-
- <_>
- 32 0 3 4 -1.
- <_>
- 32 1 3 2 2.
- 0
- <_>
-
- <_>
- 32 0 8 1 -1.
- <_>
- 36 0 4 1 2.
- 0
- <_>
-
- <_>
- 32 0 17 3 -1.
- <_>
- 32 1 17 1 3.
- 0
- <_>
-
- <_>
- 32 0 17 4 -1.
- <_>
- 32 1 17 2 2.
- 0
- <_>
-
- <_>
- 32 0 18 3 -1.
- <_>
- 32 1 18 1 3.
- 0
- <_>
-
- <_>
- 32 0 19 3 -1.
- <_>
- 32 1 19 1 3.
- 0
- <_>
-
- <_>
- 32 1 3 6 -1.
- <_>
- 33 3 1 2 9.
- 0
- <_>
-
- <_>
- 32 1 3 2 -1.
- <_>
- 33 2 1 2 3.
- 1
- <_>
-
- <_>
- 32 1 12 1 -1.
- <_>
- 36 1 4 1 3.
- 0
- <_>
-
- <_>
- 32 1 8 2 -1.
- <_>
- 32 1 4 1 2.
- <_>
- 36 2 4 1 2.
- 0
- <_>
-
- <_>
- 32 1 19 9 -1.
- <_>
- 32 4 19 3 3.
- 0
- <_>
-
- <_>
- 32 2 2 2 -1.
- <_>
- 32 3 2 1 2.
- 0
- <_>
-
- <_>
- 32 3 4 3 -1.
- <_>
- 33 3 2 3 2.
- 0
- <_>
-
- <_>
- 32 7 4 2 -1.
- <_>
- 33 7 2 2 2.
- 0
- <_>
-
- <_>
- 32 9 3 1 -1.
- <_>
- 33 9 1 1 3.
- 0
- <_>
-
- <_>
- 32 9 3 3 -1.
- <_>
- 33 10 1 1 9.
- 0
- <_>
-
- <_>
- 32 11 3 2 -1.
- <_>
- 32 12 3 1 2.
- 0
- <_>
-
- <_>
- 33 0 3 3 -1.
- <_>
- 34 1 1 3 3.
- 1
- <_>
-
- <_>
- 33 0 3 4 -1.
- <_>
- 34 1 1 4 3.
- 1
- <_>
-
- <_>
- 33 0 12 1 -1.
- <_>
- 37 0 4 1 3.
- 0
- <_>
-
- <_>
- 33 0 16 1 -1.
- <_>
- 37 0 8 1 2.
- 0
- <_>
-
- <_>
- 33 0 10 1 -1.
- <_>
- 38 0 5 1 2.
- 0
- <_>
-
- <_>
- 33 0 9 2 -1.
- <_>
- 33 1 9 1 2.
- 0
- <_>
-
- <_>
- 33 0 17 4 -1.
- <_>
- 33 1 17 2 2.
- 0
- <_>
-
- <_>
- 33 1 1 2 -1.
- <_>
- 33 2 1 1 2.
- 0
- <_>
-
- <_>
- 33 1 3 2 -1.
- <_>
- 34 2 1 2 3.
- 1
- <_>
-
- <_>
- 33 1 4 2 -1.
- <_>
- 34 2 2 2 2.
- 1
- <_>
-
- <_>
- 33 1 17 2 -1.
- <_>
- 33 2 17 1 2.
- 0
- <_>
-
- <_>
- 33 2 1 3 -1.
- <_>
- 33 3 1 1 3.
- 0
- <_>
-
- <_>
- 33 2 3 2 -1.
- <_>
- 34 3 1 2 3.
- 1
- <_>
-
- <_>
- 33 2 13 9 -1.
- <_>
- 33 5 13 3 3.
- 0
- <_>
-
- <_>
- 33 5 3 3 -1.
- <_>
- 34 6 1 1 9.
- 0
- <_>
-
- <_>
- 33 5 1 8 -1.
- <_>
- 33 7 1 4 2.
- 0
- <_>
-
- <_>
- 33 6 3 1 -1.
- <_>
- 34 7 1 1 3.
- 1
- <_>
-
- <_>
- 33 7 3 1 -1.
- <_>
- 34 8 1 1 3.
- 1
- <_>
-
- <_>
- 33 7 4 4 -1.
- <_>
- 33 7 2 2 2.
- <_>
- 35 9 2 2 2.
- 0
- <_>
-
- <_>
- 33 8 2 3 -1.
- <_>
- 32 9 2 1 3.
- 1
- <_>
-
- <_>
- 33 8 6 3 -1.
- <_>
- 35 8 2 3 3.
- 0
- <_>
-
- <_>
- 33 8 16 4 -1.
- <_>
- 33 10 16 2 2.
- 0
- <_>
-
- <_>
- 33 9 2 4 -1.
- <_>
- 33 11 2 2 2.
- 0
- <_>
-
- <_>
- 33 9 4 4 -1.
- <_>
- 33 9 2 2 2.
- <_>
- 35 11 2 2 2.
- 0
- <_>
-
- <_>
- 33 10 1 2 -1.
- <_>
- 33 11 1 1 2.
- 0
- <_>
-
- <_>
- 34 0 1 3 -1.
- <_>
- 33 1 1 1 3.
- 1
- <_>
-
- <_>
- 34 0 3 11 -1.
- <_>
- 35 0 1 11 3.
- 0
- <_>
-
- <_>
- 34 0 4 4 -1.
- <_>
- 34 0 2 4 2.
- 1
- <_>
-
- <_>
- 34 0 16 1 -1.
- <_>
- 38 0 8 1 2.
- 0
- <_>
-
- <_>
- 34 0 14 1 -1.
- <_>
- 41 0 7 1 2.
- 0
- <_>
-
- <_>
- 34 1 15 6 -1.
- <_>
- 39 1 5 6 3.
- 0
- <_>
-
- <_>
- 34 2 3 2 -1.
- <_>
- 35 3 1 2 3.
- 1
- <_>
-
- <_>
- 34 2 3 8 -1.
- <_>
- 35 2 1 8 3.
- 0
- <_>
-
- <_>
- 34 3 4 4 -1.
- <_>
- 35 3 2 4 2.
- 0
- <_>
-
- <_>
- 34 3 4 7 -1.
- <_>
- 35 3 2 7 2.
- 0
- <_>
-
- <_>
- 34 5 3 2 -1.
- <_>
- 35 6 1 2 3.
- 1
- <_>
-
- <_>
- 34 5 4 2 -1.
- <_>
- 35 6 2 2 2.
- 1
- <_>
-
- <_>
- 34 5 3 4 -1.
- <_>
- 35 5 1 4 3.
- 0
- <_>
-
- <_>
- 34 5 6 8 -1.
- <_>
- 36 5 2 8 3.
- 0
- <_>
-
- <_>
- 34 6 3 1 -1.
- <_>
- 35 7 1 1 3.
- 1
- <_>
-
- <_>
- 34 6 3 2 -1.
- <_>
- 35 7 1 2 3.
- 1
- <_>
-
- <_>
- 34 6 6 5 -1.
- <_>
- 36 6 2 5 3.
- 0
- <_>
-
- <_>
- 34 7 4 2 -1.
- <_>
- 35 7 2 2 2.
- 0
- <_>
-
- <_>
- 34 7 3 2 -1.
- <_>
- 35 8 1 2 3.
- 1
- <_>
-
- <_>
- 34 7 4 3 -1.
- <_>
- 35 7 2 3 2.
- 0
- <_>
-
- <_>
- 35 0 3 12 -1.
- <_>
- 36 0 1 12 3.
- 0
- <_>
-
- <_>
- 35 0 4 1 -1.
- <_>
- 37 0 2 1 2.
- 0
- <_>
-
- <_>
- 35 0 12 1 -1.
- <_>
- 41 0 6 1 2.
- 0
- <_>
-
- <_>
- 35 0 14 4 -1.
- <_>
- 35 0 7 2 2.
- <_>
- 42 2 7 2 2.
- 0
- <_>
-
- <_>
- 35 1 4 12 -1.
- <_>
- 36 1 2 12 2.
- 0
- <_>
-
- <_>
- 35 2 3 4 -1.
- <_>
- 36 3 1 4 3.
- 1
- <_>
-
- <_>
- 35 2 4 6 -1.
- <_>
- 36 2 2 6 2.
- 0
- <_>
-
- <_>
- 35 4 3 3 -1.
- <_>
- 35 5 3 1 3.
- 0
- <_>
-
- <_>
- 35 5 2 4 -1.
- <_>
- 36 5 1 4 2.
- 0
- <_>
-
- <_>
- 35 5 4 7 -1.
- <_>
- 36 5 2 7 2.
- 0
- <_>
-
- <_>
- 35 5 15 5 -1.
- <_>
- 40 5 5 5 3.
- 0
- <_>
-
- <_>
- 35 7 3 1 -1.
- <_>
- 36 8 1 1 3.
- 1
- <_>
-
- <_>
- 35 7 3 2 -1.
- <_>
- 36 8 1 2 3.
- 1
- <_>
-
- <_>
- 35 8 2 2 -1.
- <_>
- 35 8 1 2 2.
- 1
- <_>
-
- <_>
- 35 10 15 3 -1.
- <_>
- 35 11 15 1 3.
- 0
- <_>
-
- <_>
- 35 11 5 2 -1.
- <_>
- 35 12 5 1 2.
- 0
- <_>
-
- <_>
- 35 11 6 2 -1.
- <_>
- 35 12 6 1 2.
- 0
- <_>
-
- <_>
- 36 0 14 1 -1.
- <_>
- 43 0 7 1 2.
- 0
- <_>
-
- <_>
- 36 1 4 2 -1.
- <_>
- 36 1 2 1 2.
- <_>
- 38 2 2 1 2.
- 0
- <_>
-
- <_>
- 36 2 4 10 -1.
- <_>
- 37 2 2 10 2.
- 0
- <_>
-
- <_>
- 36 4 4 6 -1.
- <_>
- 37 4 2 6 2.
- 0
- <_>
-
- <_>
- 36 4 3 6 -1.
- <_>
- 36 4 3 3 2.
- 1
- <_>
-
- <_>
- 36 4 6 3 -1.
- <_>
- 35 5 6 1 3.
- 1
- <_>
-
- <_>
- 36 6 3 3 -1.
- <_>
- 37 7 1 3 3.
- 1
- <_>
-
- <_>
- 36 9 4 2 -1.
- <_>
- 38 9 2 2 2.
- 0
- <_>
-
- <_>
- 36 10 4 1 -1.
- <_>
- 37 10 2 1 2.
- 0
- <_>
-
- <_>
- 36 10 6 3 -1.
- <_>
- 39 10 3 3 2.
- 0
- <_>
-
- <_>
- 37 0 2 3 -1.
- <_>
- 36 1 2 1 3.
- 1
- <_>
-
- <_>
- 37 0 4 4 -1.
- <_>
- 37 0 2 2 2.
- <_>
- 39 2 2 2 2.
- 0
- <_>
-
- <_>
- 37 1 4 5 -1.
- <_>
- 38 2 2 5 2.
- 1
- <_>
-
- <_>
- 37 1 9 9 -1.
- <_>
- 37 4 9 3 3.
- 0
- <_>
-
- <_>
- 37 3 8 4 -1.
- <_>
- 37 5 8 2 2.
- 0
- <_>
-
- <_>
- 37 4 4 1 -1.
- <_>
- 38 4 2 1 2.
- 0
- <_>
-
- <_>
- 37 4 4 4 -1.
- <_>
- 38 4 2 4 2.
- 0
- <_>
-
- <_>
- 37 5 8 8 -1.
- <_>
- 39 5 4 8 2.
- 0
- <_>
-
- <_>
- 37 9 6 4 -1.
- <_>
- 37 9 3 2 2.
- <_>
- 40 11 3 2 2.
- 0
- <_>
-
- <_>
- 37 10 4 2 -1.
- <_>
- 37 10 2 1 2.
- <_>
- 39 11 2 1 2.
- 0
- <_>
-
- <_>
- 37 10 8 3 -1.
- <_>
- 39 10 4 3 2.
- 0
- <_>
-
- <_>
- 37 10 5 3 -1.
- <_>
- 37 11 5 1 3.
- 0
- <_>
-
- <_>
- 38 0 4 1 -1.
- <_>
- 40 0 2 1 2.
- 0
- <_>
-
- <_>
- 38 1 12 2 -1.
- <_>
- 38 2 12 1 2.
- 0
- <_>
-
- <_>
- 38 4 6 1 -1.
- <_>
- 40 4 2 1 3.
- 0
- <_>
-
- <_>
- 38 6 6 6 -1.
- <_>
- 40 8 2 2 9.
- 0
- <_>
-
- <_>
- 38 9 6 1 -1.
- <_>
- 40 9 2 1 3.
- 0
- <_>
-
- <_>
- 38 11 1 2 -1.
- <_>
- 38 12 1 1 2.
- 0
- <_>
-
- <_>
- 39 0 2 4 -1.
- <_>
- 39 1 2 2 2.
- 0
- <_>
-
- <_>
- 39 0 10 3 -1.
- <_>
- 39 1 10 1 3.
- 0
- <_>
-
- <_>
- 39 1 11 2 -1.
- <_>
- 39 2 11 1 2.
- 0
- <_>
-
- <_>
- 39 4 4 4 -1.
- <_>
- 40 4 2 4 2.
- 0
- <_>
-
- <_>
- 39 6 3 6 -1.
- <_>
- 40 8 1 2 9.
- 0
- <_>
-
- <_>
- 39 7 4 3 -1.
- <_>
- 40 7 2 3 2.
- 0
- <_>
-
- <_>
- 39 8 4 2 -1.
- <_>
- 40 8 2 2 2.
- 0
- <_>
-
- <_>
- 39 11 12 2 -1.
- <_>
- 45 11 6 2 2.
- 0
- <_>
-
- <_>
- 40 0 1 3 -1.
- <_>
- 40 1 1 1 3.
- 0
- <_>
-
- <_>
- 40 0 3 3 -1.
- <_>
- 40 1 3 1 3.
- 0
- <_>
-
- <_>
- 40 0 5 2 -1.
- <_>
- 40 1 5 1 2.
- 0
- <_>
-
- <_>
- 40 0 8 3 -1.
- <_>
- 40 1 8 1 3.
- 0
- <_>
-
- <_>
- 40 5 4 2 -1.
- <_>
- 42 5 2 2 2.
- 0
- <_>
-
- <_>
- 40 6 4 1 -1.
- <_>
- 41 7 2 1 2.
- 1
- <_>
-
- <_>
- 40 8 4 2 -1.
- <_>
- 41 8 2 2 2.
- 0
- <_>
-
- <_>
- 40 10 9 2 -1.
- <_>
- 40 11 9 1 2.
- 0
- <_>
-
- <_>
- 41 0 6 12 -1.
- <_>
- 43 0 2 12 3.
- 0
- <_>
-
- <_>
- 41 0 4 2 -1.
- <_>
- 41 1 4 1 2.
- 0
- <_>
-
- <_>
- 41 1 3 4 -1.
- <_>
- 42 2 1 4 3.
- 1
- <_>
-
- <_>
- 41 1 6 9 -1.
- <_>
- 41 4 6 3 3.
- 0
- <_>
-
- <_>
- 41 5 4 5 -1.
- <_>
- 42 5 2 5 2.
- 0
- <_>
-
- <_>
- 41 5 4 6 -1.
- <_>
- 42 5 2 6 2.
- 0
- <_>
-
- <_>
- 41 6 3 2 -1.
- <_>
- 42 7 1 2 3.
- 1
- <_>
-
- <_>
- 41 6 4 5 -1.
- <_>
- 42 6 2 5 2.
- 0
- <_>
-
- <_>
- 41 7 3 1 -1.
- <_>
- 42 8 1 1 3.
- 1
- <_>
-
- <_>
- 41 7 2 3 -1.
- <_>
- 41 8 2 1 3.
- 0
- <_>
-
- <_>
- 41 8 3 1 -1.
- <_>
- 42 8 1 1 3.
- 0
- <_>
-
- <_>
- 41 8 3 2 -1.
- <_>
- 42 9 1 2 3.
- 1
- <_>
-
- <_>
- 41 8 4 4 -1.
- <_>
- 41 8 2 2 2.
- <_>
- 43 10 2 2 2.
- 0
- <_>
-
- <_>
- 41 10 1 2 -1.
- <_>
- 41 11 1 1 2.
- 0
- <_>
-
- <_>
- 42 7 3 2 -1.
- <_>
- 43 8 1 2 3.
- 1
- <_>
-
- <_>
- 42 7 3 3 -1.
- <_>
- 43 8 1 3 3.
- 1
- <_>
-
- <_>
- 42 8 2 2 -1.
- <_>
- 42 8 1 2 2.
- 1
- <_>
-
- <_>
- 42 9 2 4 -1.
- <_>
- 42 9 1 2 2.
- <_>
- 43 11 1 2 2.
- 0
- <_>
-
- <_>
- 42 9 2 2 -1.
- <_>
- 42 9 1 2 2.
- 1
- <_>
-
- <_>
- 43 4 8 9 -1.
- <_>
- 47 4 4 9 2.
- 0
- <_>
-
- <_>
- 43 5 2 3 -1.
- <_>
- 43 6 2 1 3.
- 0
- <_>
-
- <_>
- 43 5 4 4 -1.
- <_>
- 43 5 4 2 2.
- 1
- <_>
-
- <_>
- 43 5 8 8 -1.
- <_>
- 47 5 4 8 2.
- 0
- <_>
-
- <_>
- 43 7 3 3 -1.
- <_>
- 44 8 1 3 3.
- 1
- <_>
-
- <_>
- 43 9 8 2 -1.
- <_>
- 45 9 4 2 2.
- 0
- <_>
-
- <_>
- 43 10 8 3 -1.
- <_>
- 45 10 4 3 2.
- 0
- <_>
-
- <_>
- 43 12 3 1 -1.
- <_>
- 44 12 1 1 3.
- 0
- <_>
-
- <_>
- 44 2 1 10 -1.
- <_>
- 44 7 1 5 2.
- 0
- <_>
-
- <_>
- 44 2 4 4 -1.
- <_>
- 44 2 2 2 2.
- <_>
- 46 4 2 2 2.
- 0
- <_>
-
- <_>
- 44 2 5 6 -1.
- <_>
- 44 5 5 3 2.
- 0
- <_>
-
- <_>
- 44 4 6 2 -1.
- <_>
- 46 4 2 2 3.
- 0
- <_>
-
- <_>
- 44 7 4 2 -1.
- <_>
- 45 7 2 2 2.
- 0
- <_>
-
- <_>
- 44 7 4 4 -1.
- <_>
- 45 7 2 4 2.
- 0
- <_>
-
- <_>
- 45 5 4 4 -1.
- <_>
- 46 5 2 4 2.
- 0
- <_>
-
- <_>
- 45 5 4 4 -1.
- <_>
- 45 5 2 2 2.
- <_>
- 47 7 2 2 2.
- 0
- <_>
-
- <_>
- 45 6 6 3 -1.
- <_>
- 47 7 2 1 9.
- 0
- <_>
-
- <_>
- 45 8 6 1 -1.
- <_>
- 47 8 2 1 3.
- 0
- <_>
-
- <_>
- 46 0 1 3 -1.
- <_>
- 46 1 1 1 3.
- 0
- <_>
-
- <_>
- 46 0 2 2 -1.
- <_>
- 46 1 2 1 2.
- 0
- <_>
-
- <_>
- 46 0 2 4 -1.
- <_>
- 46 2 2 2 2.
- 0
- <_>
-
- <_>
- 46 1 3 4 -1.
- <_>
- 46 2 3 2 2.
- 0
- <_>
-
- <_>
- 46 3 3 3 -1.
- <_>
- 47 4 1 1 9.
- 0
- <_>
-
- <_>
- 46 5 3 3 -1.
- <_>
- 47 6 1 1 9.
- 0
- <_>
-
- <_>
- 46 5 2 6 -1.
- <_>
- 46 7 2 2 3.
- 0
- <_>
-
- <_>
- 46 6 3 6 -1.
- <_>
- 47 8 1 2 9.
- 0
- <_>
-
- <_>
- 47 0 2 2 -1.
- <_>
- 47 1 2 1 2.
- 0
- <_>
-
- <_>
- 47 1 1 4 -1.
- <_>
- 47 2 1 2 2.
- 0
- <_>
-
- <_>
- 47 2 1 6 -1.
- <_>
- 47 4 1 2 3.
- 0
- <_>
-
- <_>
- 47 4 1 6 -1.
- <_>
- 47 6 1 2 3.
- 0
- <_>
-
- <_>
- 47 4 4 2 -1.
- <_>
- 49 4 2 2 2.
- 0
- <_>
-
- <_>
- 47 4 2 6 -1.
- <_>
- 47 6 2 2 3.
- 0
- <_>
-
- <_>
- 47 8 3 1 -1.
- <_>
- 48 9 1 1 3.
- 1
- <_>
-
- <_>
- 47 9 1 4 -1.
- <_>
- 47 11 1 2 2.
- 0
- <_>
-
- <_>
- 47 9 2 4 -1.
- <_>
- 47 11 2 2 2.
- 0
- <_>
-
- <_>
- 48 0 3 6 -1.
- <_>
- 48 3 3 3 2.
- 0
- <_>
-
- <_>
- 48 1 3 2 -1.
- <_>
- 49 2 1 2 3.
- 1
- <_>
-
- <_>
- 48 1 3 12 -1.
- <_>
- 49 1 1 12 3.
- 0
- <_>
-
- <_>
- 48 5 3 7 -1.
- <_>
- 49 5 1 7 3.
- 0
- <_>
-
- <_>
- 48 5 3 8 -1.
- <_>
- 49 5 1 8 3.
- 0
- <_>
-
- <_>
- 48 6 3 2 -1.
- <_>
- 49 7 1 2 3.
- 1
- <_>
-
- <_>
- 48 8 3 2 -1.
- <_>
- 49 9 1 2 3.
- 1
- <_>
-
- <_>
- 49 0 2 2 -1.
- <_>
- 50 0 1 2 2.
- 0
- <_>
-
- <_>
- 49 0 2 8 -1.
- <_>
- 50 0 1 8 2.
- 0
- <_>
-
- <_>
- 49 11 2 2 -1.
- <_>
- 50 11 1 2 2.
- 0
- <_>
-
- <_>
- 50 1 1 3 -1.
- <_>
- 50 2 1 1 3.
- 0
- <_>
-
- <_>
- 50 4 1 3 -1.
- <_>
- 50 5 1 1 3.
- 0
-
diff --git a/Prj-Android/app/src/main/cpp/CMakeLists.txt b/Prj-Android/app/src/main/cpp/CMakeLists.txt
deleted file mode 100755
index 46848ed..0000000
--- a/Prj-Android/app/src/main/cpp/CMakeLists.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-# 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 jnigraphics ${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})
diff --git a/Prj-Android/app/src/main/cpp/Makefile b/Prj-Android/app/src/main/cpp/Makefile
deleted file mode 100755
index b388ec6..0000000
--- a/Prj-Android/app/src/main/cpp/Makefile
+++ /dev/null
@@ -1,418 +0,0 @@
-# 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
-
diff --git a/Prj-Android/app/src/main/cpp/cmake_install.cmake b/Prj-Android/app/src/main/cpp/cmake_install.cmake
deleted file mode 100755
index dcd0a73..0000000
--- a/Prj-Android/app/src/main/cpp/cmake_install.cmake
+++ /dev/null
@@ -1,44 +0,0 @@
-# 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}")
diff --git a/Prj-Android/app/src/main/cpp/include/CNNRecognizer.h b/Prj-Android/app/src/main/cpp/include/CNNRecognizer.h
deleted file mode 100755
index ad491a0..0000000
--- a/Prj-Android/app/src/main/cpp/include/CNNRecognizer.h
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// Created by 庾金科 on 21/10/2017.
-//
-
-#ifndef SWIFTPR_CNNRECOGNIZER_H
-#define SWIFTPR_CNNRECOGNIZER_H
-
-#include "Recognizer.h"
-namespace pr{
- class CNNRecognizer: public GeneralRecognizer{
- public:
- const int CHAR_INPUT_W = 14;
- const int CHAR_INPUT_H = 30;
-
- CNNRecognizer(std::string prototxt,std::string caffemodel);
- label recognizeCharacter(cv::Mat character);
- private:
- cv::dnn::Net net;
-
- };
-
-}
-
-#endif //SWIFTPR_CNNRECOGNIZER_H
diff --git a/Prj-Android/app/src/main/cpp/include/FastDeskew.h b/Prj-Android/app/src/main/cpp/include/FastDeskew.h
deleted file mode 100755
index 08359e5..0000000
--- a/Prj-Android/app/src/main/cpp/include/FastDeskew.h
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-// Created by 庾金科 on 22/09/2017.
-//
-
-#ifndef SWIFTPR_FASTDESKEW_H
-#define SWIFTPR_FASTDESKEW_H
-
-#include
-#include
-namespace pr{
-
- cv::Mat fastdeskew(cv::Mat skewImage,int blockSize);
-// cv::Mat spatialTransformer(cv::Mat skewImage);
-
-}//namepace pr
-
-
-#endif //SWIFTPR_FASTDESKEW_H
diff --git a/Prj-Android/app/src/main/cpp/include/FineMapping.h b/Prj-Android/app/src/main/cpp/include/FineMapping.h
deleted file mode 100755
index 352202e..0000000
--- a/Prj-Android/app/src/main/cpp/include/FineMapping.h
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// Created by 庾金科 on 22/09/2017.
-//
-
-#ifndef SWIFTPR_FINEMAPPING_H
-#define SWIFTPR_FINEMAPPING_H
-
-#include
-#include
-
-#include
-namespace pr{
- class FineMapping{
- public:
- FineMapping();
-
-
- FineMapping(std::string prototxt,std::string caffemodel);
- static cv::Mat FineMappingVertical(cv::Mat InputProposal,int sliceNum=15,int upper=0,int lower=-50,int windows_size=17);
- cv::Mat FineMappingHorizon(cv::Mat FinedVertical,int leftPadding,int rightPadding);
-
-
- private:
- cv::dnn::Net net;
-
- };
-
-
-
-
-}
-#endif //SWIFTPR_FINEMAPPING_H
diff --git a/Prj-Android/app/src/main/cpp/include/Pipeline.h b/Prj-Android/app/src/main/cpp/include/Pipeline.h
deleted file mode 100755
index c32976b..0000000
--- a/Prj-Android/app/src/main/cpp/include/Pipeline.h
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// Created by 庾金科 on 22/10/2017.
-//
-
-#ifndef SWIFTPR_PIPLINE_H
-#define SWIFTPR_PIPLINE_H
-
-#include "PlateDetection.h"
-#include "PlateSegmentation.h"
-#include "CNNRecognizer.h"
-#include "PlateInfo.h"
-#include "FastDeskew.h"
-#include "FineMapping.h"
-#include "Recognizer.h"
-#include "SegmentationFreeRecognizer.h"
-
-namespace pr{
-
- const std::vector CH_PLATE_CODE{"京", "沪", "津", "渝", "冀", "晋", "蒙", "辽", "吉", "黑", "苏", "浙", "皖", "闽", "赣", "鲁", "豫", "鄂", "湘", "粤", "桂",
- "琼", "川", "贵", "云", "藏", "陕", "甘", "青", "宁", "新", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A",
- "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X",
- "Y", "Z","港","学","使","警","澳","挂","军","北","南","广","沈","兰","成","济","海","民","航","空"};
-
- const int SEGMENTATION_FREE_METHOD = 0;
- const int SEGMENTATION_BASED_METHOD = 1;
-
- class PipelinePR{
- public:
- GeneralRecognizer *generalRecognizer;
- PlateDetection *plateDetection;
- PlateSegmentation *plateSegmentation;
- FineMapping *fineMapping;
- SegmentationFreeRecognizer *segmentationFreeRecognizer;
-
- PipelinePR(std::string detector_filename,
- std::string finemapping_prototxt,std::string finemapping_caffemodel,
- std::string segmentation_prototxt,std::string segmentation_caffemodel,
- std::string charRecognization_proto,std::string charRecognization_caffemodel,
- std::string segmentationfree_proto,std::string segmentationfree_caffemodel
- );
- ~PipelinePR();
-
- std::vector plateRes;
- std::vector RunPiplineAsImage(cv::Mat plateImage,int method);
-
- };
-}
-#endif //SWIFTPR_PIPLINE_H
diff --git a/Prj-Android/app/src/main/cpp/include/PlateDetection.h b/Prj-Android/app/src/main/cpp/include/PlateDetection.h
deleted file mode 100755
index ded7ef9..0000000
--- a/Prj-Android/app/src/main/cpp/include/PlateDetection.h
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// Created by 庾金科 on 20/09/2017.
-//
-
-#ifndef SWIFTPR_PLATEDETECTION_H
-#define SWIFTPR_PLATEDETECTION_H
-
-#include
-#include
-#include "PlateInfo.h"
-
-namespace pr{
- class PlateDetection{
- public:
- PlateDetection(std::string filename_cascade);
- PlateDetection();
- void LoadModel(std::string filename_cascade);
- void plateDetectionRough(cv::Mat InputImage,std::vector &plateInfos,int min_w=36,int max_w=800);
-// std::vector plateDetectionRough(cv::Mat InputImage,int min_w= 60,int max_h = 400);
-
-
-// std::vector plateDetectionRoughByMultiScaleEdge(cv::Mat InputImage);
-
-
-
- public:
- cv::CascadeClassifier cascade;
-
-
- };
-
-}// namespace pr
-
-#endif //SWIFTPR_PLATEDETECTION_H
diff --git a/Prj-Android/app/src/main/cpp/include/PlateInfo.h b/Prj-Android/app/src/main/cpp/include/PlateInfo.h
deleted file mode 100755
index f500bb5..0000000
--- a/Prj-Android/app/src/main/cpp/include/PlateInfo.h
+++ /dev/null
@@ -1,126 +0,0 @@
-//
-// Created by 庾金科 on 20/09/2017.
-//
-
-#ifndef SWIFTPR_PLATEINFO_H
-#define SWIFTPR_PLATEINFO_H
-#include
-namespace pr {
-
- typedef std::vector Character;
-
- enum PlateColor { BLUE, YELLOW, WHITE, GREEN, BLACK,UNKNOWN};
- enum CharType {CHINESE,LETTER,LETTER_NUMS,INVALID};
-
-
- class PlateInfo {
- public:
- std::vector> plateChars;
- std::vector> plateCoding;
- float confidence = 0;
- PlateInfo(const cv::Mat &plateData, std::string plateName, cv::Rect plateRect, PlateColor plateType) {
- licensePlate = plateData;
- name = plateName;
- ROI = plateRect;
- Type = plateType;
- }
- PlateInfo(const cv::Mat &plateData, cv::Rect plateRect, PlateColor plateType) {
- licensePlate = plateData;
- ROI = plateRect;
- Type = plateType;
- }
- PlateInfo(const cv::Mat &plateData, cv::Rect plateRect) {
- licensePlate = plateData;
- ROI = plateRect;
- }
- PlateInfo() {
-
- }
-
- cv::Mat getPlateImage() {
- return licensePlate;
- }
-
- void setPlateImage(cv::Mat plateImage){
- licensePlate = plateImage;
- }
-
- cv::Rect getPlateRect() {
- return ROI;
- }
-
- void setPlateRect(cv::Rect plateRect) {
- ROI = plateRect;
- }
- cv::String getPlateName() {
- return name;
-
- }
- void setPlateName(cv::String plateName) {
- name = plateName;
- }
- int getPlateType() {
- return Type;
- }
-
- void appendPlateChar(const std::pair &plateChar)
- {
- plateChars.push_back(plateChar);
- }
-
- void appendPlateCoding(const std::pair &charProb){
- plateCoding.push_back(charProb);
- }
-
- // cv::Mat getPlateChars(int id) {
- // if(id mappingTable) {
- std::string decode;
- for(auto plate:plateCoding) {
- float *prob = (float *)plate.second.data;
- if(plate.first == CHINESE) {
-
- decode += mappingTable[std::max_element(prob,prob+31) - prob];
- confidence+=*std::max_element(prob,prob+31);
-
-
-// std::cout<<*std::max_element(prob,prob+31)< &Char_rects);
-
- void segmentPlateBySlidingWindows(cv::Mat &plateImage,int windowsWidth,int stride,cv::Mat &respones);
- void templateMatchFinding(const cv::Mat &respones,int windowsWidth,std::pair> &candidatePts);
- void refineRegion(cv::Mat &plateImage,const std::vector &candidatePts,const int padding,std::vector &rects);
- void ExtractRegions(PlateInfo &plateInfo,std::vector &rects);
- cv::Mat classifyResponse(const cv::Mat &cropped);
- private:
- cv::dnn::Net net;
-
-
-// RefineRegion()
-
- };
-
-}//namespace pr
-
-#endif //SWIFTPR_PLATESEGMENTATION_H
diff --git a/Prj-Android/app/src/main/cpp/include/Recognizer.h b/Prj-Android/app/src/main/cpp/include/Recognizer.h
deleted file mode 100755
index 556e42e..0000000
--- a/Prj-Android/app/src/main/cpp/include/Recognizer.h
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-// Created by 庾金科 on 20/10/2017.
-//
-
-
-#ifndef SWIFTPR_RECOGNIZER_H
-#define SWIFTPR_RECOGNIZER_H
-
-#include "PlateInfo.h"
-#include "opencv2/dnn.hpp"
-namespace pr{
- typedef cv::Mat label;
- class GeneralRecognizer{
- public:
- virtual label recognizeCharacter(cv::Mat character) = 0;
-// virtual cv::Mat SegmentationFreeForSinglePlate(cv::Mat plate) = 0;
- void SegmentBasedSequenceRecognition(PlateInfo &plateinfo);
- void SegmentationFreeSequenceRecognition(PlateInfo &plateInfo);
-
- };
-
-}
-#endif //SWIFTPR_RECOGNIZER_H
diff --git a/Prj-Android/app/src/main/cpp/include/SegmentationFreeRecognizer.h b/Prj-Android/app/src/main/cpp/include/SegmentationFreeRecognizer.h
deleted file mode 100755
index 583899e..0000000
--- a/Prj-Android/app/src/main/cpp/include/SegmentationFreeRecognizer.h
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// Created by 庾金科 on 28/11/2017.
-//
-
-#ifndef SWIFTPR_SEGMENTATIONFREERECOGNIZER_H
-#define SWIFTPR_SEGMENTATIONFREERECOGNIZER_H
-
-#include "Recognizer.h"
-namespace pr{
-
-
- class SegmentationFreeRecognizer{
- public:
- const int CHAR_INPUT_W = 14;
- const int CHAR_INPUT_H = 30;
- const int CHAR_LEN = 84;
-
- SegmentationFreeRecognizer(std::string prototxt,std::string caffemodel);
- std::pair SegmentationFreeForSinglePlate(cv::Mat plate,std::vector mapping_table);
-
-
- private:
- cv::dnn::Net net;
-
- };
-
-}
-#endif //SWIFTPR_SEGMENTATIONFREERECOGNIZER_H
diff --git a/Prj-Android/app/src/main/cpp/include/niBlackThreshold.h b/Prj-Android/app/src/main/cpp/include/niBlackThreshold.h
deleted file mode 100755
index 5ad7e14..0000000
--- a/Prj-Android/app/src/main/cpp/include/niBlackThreshold.h
+++ /dev/null
@@ -1,107 +0,0 @@
-//
-// Created by 庾金科 on 26/10/2017.
-//
-
-#ifndef SWIFTPR_NIBLACKTHRESHOLD_H
-#define SWIFTPR_NIBLACKTHRESHOLD_H
-
-
-#include
-using namespace cv;
-
-enum LocalBinarizationMethods{
- BINARIZATION_NIBLACK = 0, //!< Classic Niblack binarization. See @cite Niblack1985 .
- BINARIZATION_SAUVOLA = 1, //!< Sauvola's technique. See @cite Sauvola1997 .
- BINARIZATION_WOLF = 2, //!< Wolf's technique. See @cite Wolf2004 .
- BINARIZATION_NICK = 3 //!< NICK technique. See @cite Khurshid2009 .
-};
-
-
-void niBlackThreshold( InputArray _src, OutputArray _dst, double maxValue,
- int type, int blockSize, double k, int binarizationMethod )
-{
- // Input grayscale image
- Mat src = _src.getMat();
- CV_Assert(src.channels() == 1);
- CV_Assert(blockSize % 2 == 1 && blockSize > 1);
- if (binarizationMethod == BINARIZATION_SAUVOLA) {
- CV_Assert(src.depth() == CV_8U);
- }
- type &= THRESH_MASK;
- // Compute local threshold (T = mean + k * stddev)
- // using mean and standard deviation in the neighborhood of each pixel
- // (intermediate calculations are done with floating-point precision)
- Mat test;
- Mat thresh;
- {
- // note that: Var[X] = E[X^2] - E[X]^2
- Mat mean, sqmean, variance, stddev, sqrtVarianceMeanSum;
- double srcMin, stddevMax;
- boxFilter(src, mean, CV_32F, Size(blockSize, blockSize),
- Point(-1,-1), true, BORDER_REPLICATE);
- sqrBoxFilter(src, sqmean, CV_32F, Size(blockSize, blockSize),
- Point(-1,-1), true, BORDER_REPLICATE);
- variance = sqmean - mean.mul(mean);
- sqrt(variance, stddev);
- switch (binarizationMethod)
- {
- case BINARIZATION_NIBLACK:
- thresh = mean + stddev * static_cast(k);
-
- break;
- case BINARIZATION_SAUVOLA:
- thresh = mean.mul(1. + static_cast(k) * (stddev / 128.0 - 1.));
- break;
- case BINARIZATION_WOLF:
- minMaxIdx(src, &srcMin,NULL);
- minMaxIdx(stddev, NULL, &stddevMax);
- thresh = mean - static_cast(k) * (mean - srcMin - stddev.mul(mean - srcMin) / stddevMax);
- break;
- case BINARIZATION_NICK:
- sqrt(variance + sqmean, sqrtVarianceMeanSum);
- thresh = mean + static_cast(k) * sqrtVarianceMeanSum;
- break;
- default:
- CV_Error( CV_StsBadArg, "Unknown binarization method" );
- break;
- }
- thresh.convertTo(thresh, src.depth());
-
- thresh.convertTo(test, src.depth());
-//
-// cv::imshow("imagex",test);
-// cv::waitKey(0);
-
- }
- // Prepare output image
- _dst.create(src.size(), src.type());
- Mat dst = _dst.getMat();
- CV_Assert(src.data != dst.data); // no inplace processing
- // Apply thresholding: ( pixel > threshold ) ? foreground : background
- Mat mask;
- switch (type)
- {
- case THRESH_BINARY: // dst = (src > thresh) ? maxval : 0
- case THRESH_BINARY_INV: // dst = (src > thresh) ? 0 : maxval
- compare(src, thresh, mask, (type == THRESH_BINARY ? CMP_GT : CMP_LE));
- dst.setTo(0);
- dst.setTo(maxValue, mask);
- break;
- case THRESH_TRUNC: // dst = (src > thresh) ? thresh : src
- compare(src, thresh, mask, CMP_GT);
- src.copyTo(dst);
- thresh.copyTo(dst, mask);
- break;
- case THRESH_TOZERO: // dst = (src > thresh) ? src : 0
- case THRESH_TOZERO_INV: // dst = (src > thresh) ? 0 : src
- compare(src, thresh, mask, (type == THRESH_TOZERO ? CMP_GT : CMP_LE));
- dst.setTo(0);
- src.copyTo(dst, mask);
- break;
- default:
- CV_Error( CV_StsBadArg, "Unknown threshold type" );
- break;
- }
-}
-
-#endif //SWIFTPR_NIBLACKTHRESHOLD_H
diff --git a/Prj-Android/app/src/main/cpp/javaWarpper.cpp b/Prj-Android/app/src/main/cpp/javaWarpper.cpp
deleted file mode 100755
index 24f81fd..0000000
--- a/Prj-Android/app/src/main/cpp/javaWarpper.cpp
+++ /dev/null
@@ -1,222 +0,0 @@
-#include
-#include
-#include "include/Pipeline.h"
-
-#include
-#include
-
-#include
-
-using namespace cv;
-#define LOG_TAG "System.out"
-#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
-#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
-#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
-jobject mat_to_bitmap(JNIEnv * env, Mat & src, bool needPremultiplyAlpha, jobject bitmap_config){
-
- jclass java_bitmap_class = (jclass)env->FindClass("android/graphics/Bitmap");
- jmethodID mid = env->GetStaticMethodID(java_bitmap_class,
- "createBitmap", "(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;");
-
- jobject bitmap = env->CallStaticObjectMethod(java_bitmap_class,
- mid, src.size().width, src.size().height, bitmap_config);
- AndroidBitmapInfo info;
- void* pixels = 0;
-
- try {
- //validate
- CV_Assert(AndroidBitmap_getInfo(env, bitmap, &info) >= 0);
- CV_Assert(src.type() == CV_8UC1 || src.type() == CV_8UC3 || src.type() == CV_8UC4);
- CV_Assert(AndroidBitmap_lockPixels(env, bitmap, &pixels) >= 0);
- CV_Assert(pixels);
-
- //type mat
- if(info.format == ANDROID_BITMAP_FORMAT_RGBA_8888){
- Mat tmp(info.height, info.width, CV_8UC4, pixels);
- if(src.type() == CV_8UC1){
- cvtColor(src, tmp, CV_GRAY2RGBA);
- } else if(src.type() == CV_8UC3){
- cvtColor(src, tmp, CV_RGB2RGBA);
- } else if(src.type() == CV_8UC4){
- if(needPremultiplyAlpha){
- cvtColor(src, tmp, COLOR_RGBA2mRGBA);
- }else{
- src.copyTo(tmp);
- }
- }
-
- } else{
- Mat tmp(info.height, info.width, CV_8UC2, pixels);
- if(src.type() == CV_8UC1){
- cvtColor(src, tmp, CV_GRAY2BGR565);
- } else if(src.type() == CV_8UC3){
- cvtColor(src, tmp, CV_RGB2BGR565);
- } else if(src.type() == CV_8UC4){
- cvtColor(src, tmp, CV_RGBA2BGR565);
- }
- }
- AndroidBitmap_unlockPixels(env, bitmap);
- return bitmap;
- } catch(cv::Exception e){
- AndroidBitmap_unlockPixels(env, bitmap);
- jclass je = env->FindClass("org/opencv/core/CvException");
- if(!je) je = env->FindClass("java/lang/Exception");
- env->ThrowNew(je, e.what());
- return bitmap;
- } catch (...){
- AndroidBitmap_unlockPixels(env, bitmap);
- jclass je = env->FindClass("java/lang/Exception");
- env->ThrowNew(je, "Unknown exception in JNI code {nMatToBitmap}");
- return bitmap;
- }
-}
-
-std::string jstring2str(JNIEnv* env, jstring jstr)
-{
- char* rtn = NULL;
- jclass clsstring = env->FindClass("java/lang/String");
- jstring strencode = env->NewStringUTF("GB2312");
- jmethodID mid = env->GetMethodID(clsstring, "getBytes", "(Ljava/lang/String;)[B");
- jbyteArray barr= (jbyteArray)env->CallObjectMethod(jstr,mid,strencode);
- jsize alen = env->GetArrayLength(barr);
- jbyte* ba = env->GetByteArrayElements(barr,JNI_FALSE);
- if(alen > 0)
- {
- rtn = (char*)malloc(alen+1);
- memcpy(rtn,ba,alen);
- rtn[alen]=0;
- }
- env->ReleaseByteArrayElements(barr,ba,0);
- std::string stemp(rtn);
- free(rtn);
- return stemp;
-}
-
-
-
-
-
-extern "C" {
-JNIEXPORT jlong JNICALL
-Java_pr_platerecognization_PlateRecognition_InitPlateRecognizer(
- JNIEnv *env, jobject obj,
- jstring detector_filename,
- jstring finemapping_prototxt, jstring finemapping_caffemodel,
- jstring segmentation_prototxt, jstring segmentation_caffemodel,
- jstring charRecognization_proto, jstring charRecognization_caffemodel,
- jstring segmentationfree_proto, jstring segmentationfree_caffemodel) {
-
- std::string detector_path = jstring2str(env, detector_filename);
- std::string finemapping_prototxt_path = jstring2str(env, finemapping_prototxt);
- std::string finemapping_caffemodel_path = jstring2str(env, finemapping_caffemodel);
- std::string segmentation_prototxt_path = jstring2str(env, segmentation_prototxt);
- std::string segmentation_caffemodel_path = jstring2str(env, segmentation_caffemodel);
- std::string charRecognization_proto_path = jstring2str(env, charRecognization_proto);
- std::string charRecognization_caffemodel_path = jstring2str(env, charRecognization_caffemodel);
- std::string segmentationfree_proto_path = jstring2str(env, segmentationfree_proto);
- std::string segmentationfree_caffemodel_path = jstring2str(env, segmentationfree_caffemodel);
-
-
- pr::PipelinePR *PR = new pr::PipelinePR(detector_path,
- finemapping_prototxt_path, finemapping_caffemodel_path,
- segmentation_prototxt_path, segmentation_caffemodel_path,
- charRecognization_proto_path, charRecognization_caffemodel_path,
- segmentationfree_proto_path, segmentationfree_caffemodel_path);
-
- return (jlong) PR;
-}
-
-
-JNIEXPORT jstring JNICALL
-Java_pr_platerecognization_PlateRecognition_SimpleRecognization(
- JNIEnv *env, jobject obj,
- jlong matPtr, jlong object_pr) {
- pr::PipelinePR *PR = (pr::PipelinePR *) object_pr;
- cv::Mat &mRgb = *(cv::Mat *) matPtr;
- cv::Mat rgb;
- cv::cvtColor(mRgb,rgb,cv::COLOR_RGBA2BGR);
-
-
- //1表示SEGMENTATION_BASED_METHOD在方法里有说明
- std::vector list_res= PR->RunPiplineAsImage(rgb,pr::SEGMENTATION_FREE_METHOD);
-// std::vector list_res= PR->RunPiplineAsImage(rgb,1);
- std::string concat_results;
- for(auto one:list_res)
- {
- //可信度
- if (one.confidence>0.7)
- concat_results+=one.getPlateName()+",";
- }
-
- concat_results = concat_results.substr(0,concat_results.size()-1);
-
- return env->NewStringUTF(concat_results.c_str());
-
-}
-
-/**
- * 车牌号的详细信息
- * @param env
- * @param obj
- * @param matPtr
- * @param object_pr
- * @return
- */
-JNIEXPORT jobject JNICALL
-Java_pr_platerecognization_PlateRecognition_PlateInfoRecognization(
- JNIEnv *env, jobject obj,
- jlong matPtr, jlong object_pr) {
- jclass plateInfo_class = env -> FindClass("pr/platerecognization/PlateInfo");
- jmethodID mid = env->GetMethodID(plateInfo_class,"","()V");
- jobject plateInfoObj = env->NewObject(plateInfo_class,mid);
-
- pr::PipelinePR *PR = (pr::PipelinePR *) object_pr;
- cv::Mat &mRgb = *(cv::Mat *) matPtr;
- cv::Mat rgb;
- cv::cvtColor(mRgb,rgb,cv::COLOR_RGBA2BGR);
-
- //1表示SEGMENTATION_BASED_METHOD在方法里有说明
- std::vector list_res= PR->RunPiplineAsImage(rgb,pr::SEGMENTATION_FREE_METHOD);
- std::string concat_results;
- pr::PlateInfo plateInfo;
- for(auto one:list_res)
- {
- //可信度
- if (one.confidence>0.7) {
- plateInfo = one;
- //车牌号
- jfieldID fid_plate_name = env->GetFieldID(plateInfo_class,"plateName","Ljava/lang/String;");
- env->SetObjectField(plateInfoObj,fid_plate_name,env->NewStringUTF(plateInfo.getPlateName().c_str()));
-
- //识别区域
- Mat src = plateInfo.getPlateImage();
-
- jclass java_bitmap_class = (jclass)env->FindClass("android/graphics/Bitmap$Config");
- jmethodID bitmap_mid = env->GetStaticMethodID(java_bitmap_class,
- "nativeToConfig", "(I)Landroid/graphics/Bitmap$Config;");
- jobject bitmap_config = env->CallStaticObjectMethod(java_bitmap_class, bitmap_mid, 5);
-
- jfieldID fid_bitmap = env->GetFieldID(plateInfo_class, "bitmap","Landroid/graphics/Bitmap;");
- jobject _bitmap = mat_to_bitmap(env, src, false, bitmap_config);
- env->SetObjectField(plateInfoObj,fid_bitmap, _bitmap);
- return plateInfoObj;
- }
- }
- return plateInfoObj;
-
-}
-
-
-JNIEXPORT void JNICALL
-Java_pr_platerecognization_PlateRecognition_ReleasePlateRecognizer(
- JNIEnv *env, jobject obj,
- jlong object_re) {
-// std::string hello = "Hello from C++";
- pr::PipelinePR *PR = (pr::PipelinePR *) object_re;
- delete PR;
-
-}
-}
-
-
-
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libIlmImf.a b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libIlmImf.a
deleted file mode 100755
index 1ccbb41..0000000
Binary files a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libIlmImf.a and /dev/null differ
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libcpufeatures.a b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libcpufeatures.a
deleted file mode 100755
index faf2993..0000000
Binary files a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libcpufeatures.a and /dev/null differ
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibjasper.a b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibjasper.a
deleted file mode 100755
index 2ac8acb..0000000
Binary files a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibjasper.a and /dev/null differ
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibjpeg-turbo.a b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibjpeg-turbo.a
deleted file mode 100755
index 529cfce..0000000
Binary files a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibjpeg-turbo.a and /dev/null differ
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibpng.a b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibpng.a
deleted file mode 100755
index bdbd570..0000000
Binary files a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibpng.a and /dev/null differ
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibprotobuf.a b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibprotobuf.a
deleted file mode 100755
index 7445257..0000000
Binary files a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibprotobuf.a and /dev/null differ
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibtiff.a b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibtiff.a
deleted file mode 100755
index d75a4c7..0000000
Binary files a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibtiff.a and /dev/null differ
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibwebp.a b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibwebp.a
deleted file mode 100755
index 616cbec..0000000
Binary files a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/liblibwebp.a and /dev/null differ
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libtbb.a b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libtbb.a
deleted file mode 100755
index cc0a34b..0000000
Binary files a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libtbb.a and /dev/null differ
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libtegra_hal.a b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libtegra_hal.a
deleted file mode 100755
index a5fd2e6..0000000
Binary files a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/3rdparty/libs/armeabi-v7a/libtegra_hal.a and /dev/null differ
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/OpenCV-armeabi-v7a.mk b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/OpenCV-armeabi-v7a.mk
deleted file mode 100755
index 776bfaf..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/OpenCV-armeabi-v7a.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-OPENCV_3RDPARTY_COMPONENTS:=libjpeg-turbo libwebp libpng libtiff libjasper IlmImf libprotobuf tbb cpufeatures tegra_hal
-OPENCV_EXTRA_COMPONENTS:=z dl m log
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/OpenCV.mk b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/OpenCV.mk
deleted file mode 100755
index 502641f..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/OpenCV.mk
+++ /dev/null
@@ -1,120 +0,0 @@
-# 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)
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/OpenCVConfig-version.cmake b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/OpenCVConfig-version.cmake
deleted file mode 100755
index a02d494..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/OpenCVConfig-version.cmake
+++ /dev/null
@@ -1,15 +0,0 @@
-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()
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/OpenCVConfig.cmake b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/OpenCVConfig.cmake
deleted file mode 100755
index 43f2d96..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/OpenCVConfig.cmake
+++ /dev/null
@@ -1,50 +0,0 @@
-# ===================================================================================
-# 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__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()
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/abi-armeabi-v7a/OpenCVConfig-version.cmake b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/abi-armeabi-v7a/OpenCVConfig-version.cmake
deleted file mode 100755
index a02d494..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/abi-armeabi-v7a/OpenCVConfig-version.cmake
+++ /dev/null
@@ -1,15 +0,0 @@
-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()
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/abi-armeabi-v7a/OpenCVConfig.cmake b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/abi-armeabi-v7a/OpenCVConfig.cmake
deleted file mode 100755
index da30bde..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/abi-armeabi-v7a/OpenCVConfig.cmake
+++ /dev/null
@@ -1,328 +0,0 @@
-# ===================================================================================
-# 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__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__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_ 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})
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/abi-armeabi-v7a/OpenCVModules-release.cmake b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/abi-armeabi-v7a/OpenCVModules-release.cmake
deleted file mode 100755
index ee00ef9..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/abi-armeabi-v7a/OpenCVModules-release.cmake
+++ /dev/null
@@ -1,285 +0,0 @@
-#----------------------------------------------------------------
-# 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)
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/abi-armeabi-v7a/OpenCVModules.cmake b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/abi-armeabi-v7a/OpenCVModules.cmake
deleted file mode 100755
index 1fee904..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/abi-armeabi-v7a/OpenCVModules.cmake
+++ /dev/null
@@ -1,263 +0,0 @@
-# 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 "$;$;$;$;$;$;$;$"
-)
-
-# Create imported target opencv_flann
-add_library(opencv_flann STATIC IMPORTED)
-
-set_target_properties(opencv_flann PROPERTIES
- INTERFACE_LINK_LIBRARIES "opencv_core;$;$;$;$"
-)
-
-# Create imported target opencv_imgproc
-add_library(opencv_imgproc STATIC IMPORTED)
-
-set_target_properties(opencv_imgproc PROPERTIES
- INTERFACE_LINK_LIBRARIES "opencv_core;$;$;$;$"
-)
-
-# Create imported target opencv_ml
-add_library(opencv_ml STATIC IMPORTED)
-
-set_target_properties(opencv_ml PROPERTIES
- INTERFACE_LINK_LIBRARIES "opencv_core;$;$;$;$"
-)
-
-# Create imported target opencv_objdetect
-add_library(opencv_objdetect STATIC IMPORTED)
-
-set_target_properties(opencv_objdetect PROPERTIES
- INTERFACE_LINK_LIBRARIES "opencv_core;opencv_imgproc;$;$;$;$"
-)
-
-# Create imported target opencv_photo
-add_library(opencv_photo STATIC IMPORTED)
-
-set_target_properties(opencv_photo PROPERTIES
- INTERFACE_LINK_LIBRARIES "opencv_core;opencv_imgproc;$;$;$;$"
-)
-
-# Create imported target opencv_video
-add_library(opencv_video STATIC IMPORTED)
-
-set_target_properties(opencv_video PROPERTIES
- INTERFACE_LINK_LIBRARIES "opencv_core;opencv_imgproc;$;$;$;$"
-)
-
-# Create imported target opencv_dnn
-add_library(opencv_dnn STATIC IMPORTED)
-
-set_target_properties(opencv_dnn PROPERTIES
- INTERFACE_LINK_LIBRARIES "opencv_core;opencv_imgproc;$;$;$;$;$"
-)
-
-# Create imported target opencv_imgcodecs
-add_library(opencv_imgcodecs STATIC IMPORTED)
-
-set_target_properties(opencv_imgcodecs PROPERTIES
- INTERFACE_LINK_LIBRARIES "opencv_core;opencv_imgproc;$;$;$;$;$;$;$;$;$;$;$"
-)
-
-# 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;$;$;$;$"
-)
-
-# 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;$;$;$;$"
-)
-
-# 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;$;$;$;$"
-)
-
-# 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;$;$;$;$"
-)
-
-# 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;$;$;$;$"
-)
-
-# 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;$;$;$;$"
-)
-
-# 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;$;$;$;$"
-)
-
-# 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;$;$;$;$"
-)
-
-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)
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/android.toolchain.cmake b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/android.toolchain.cmake
deleted file mode 100755
index b37dea0..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/android.toolchain.cmake
+++ /dev/null
@@ -1,1792 +0,0 @@
-# Copyright (c) 2010-2011, Ethan Rublee
-# Copyright (c) 2011-2014, Andrey Kamaev
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# 1. Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-#
-# 2. Redistributions 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.
-#
-# 3. Neither the name of the copyright holder nor the names of its
-# contributors may 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 COPYRIGHT HOLDER 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.
-
-# ------------------------------------------------------------------------------
-# Android CMake toolchain file, for use with the Android NDK r5-r10d
-# Requires cmake 2.6.3 or newer (2.8.9 or newer is recommended).
-# See home page: https://github.com/taka-no-me/android-cmake
-#
-# Usage Linux:
-# $ export ANDROID_NDK=/absolute/path/to/the/android-ndk
-# $ mkdir build && cd build
-# $ cmake -DCMAKE_TOOLCHAIN_FILE=path/to/the/android.toolchain.cmake ..
-# $ make -j8
-#
-# Usage Windows:
-# You need native port of make to build your project.
-# Android NDK r7 (and newer) already has make.exe on board.
-# For older NDK you have to install it separately.
-# For example, this one: http://gnuwin32.sourceforge.net/packages/make.htm
-#
-# $ SET ANDROID_NDK=C:\absolute\path\to\the\android-ndk
-# $ mkdir build && cd build
-# $ cmake.exe -G"MinGW Makefiles"
-# -DCMAKE_TOOLCHAIN_FILE=path\to\the\android.toolchain.cmake
-# -DCMAKE_MAKE_PROGRAM="%ANDROID_NDK%\prebuilt\windows\bin\make.exe" ..
-# $ cmake.exe --build .
-#
-#
-# Options (can be set as cmake parameters: -D=):
-# ANDROID_NDK=/opt/android-ndk - path to the NDK root.
-# Can be set as environment variable. Can be set only at first cmake run.
-#
-# ANDROID_ABI=armeabi-v7a - specifies the target Application Binary
-# Interface (ABI). This option nearly matches to the APP_ABI variable
-# used by ndk-build tool from Android NDK.
-#
-# Possible targets are:
-# "armeabi" - ARMv5TE based CPU with software floating point operations
-# "armeabi-v7a" - ARMv7 based devices with hardware FPU instructions
-# this ABI target is used by default
-# "armeabi-v7a-hard with NEON" - ARMv7 based devices with hardware FPU instructions and hardfp
-# "armeabi-v7a with NEON" - same as armeabi-v7a, but
-# sets NEON as floating-point unit
-# "armeabi-v7a with VFPV3" - same as armeabi-v7a, but
-# sets VFPV3 as floating-point unit (has 32 registers instead of 16)
-# "armeabi-v6 with VFP" - tuned for ARMv6 processors having VFP
-# "x86" - IA-32 instruction set
-# "mips" - MIPS32 instruction set
-#
-# 64-bit ABIs for NDK r10 and newer:
-# "arm64-v8a" - ARMv8 AArch64 instruction set
-# "x86_64" - Intel64 instruction set (r1)
-# "mips64" - MIPS64 instruction set (r6)
-#
-# ANDROID_NATIVE_API_LEVEL=android-8 - level of Android API compile for.
-# Option is read-only when standalone toolchain is used.
-# Note: building for "android-L" requires explicit configuration.
-#
-# ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-4.9 - the name of compiler
-# toolchain to be used. The list of possible values depends on the NDK
-# version. For NDK r10c the possible values are:
-#
-# * aarch64-linux-android-4.9
-# * aarch64-linux-android-clang3.4
-# * aarch64-linux-android-clang3.5
-# * arm-linux-androideabi-4.6
-# * arm-linux-androideabi-4.8
-# * arm-linux-androideabi-4.9 (default)
-# * arm-linux-androideabi-clang3.4
-# * arm-linux-androideabi-clang3.5
-# * mips64el-linux-android-4.9
-# * mips64el-linux-android-clang3.4
-# * mips64el-linux-android-clang3.5
-# * mipsel-linux-android-4.6
-# * mipsel-linux-android-4.8
-# * mipsel-linux-android-4.9
-# * mipsel-linux-android-clang3.4
-# * mipsel-linux-android-clang3.5
-# * x86-4.6
-# * x86-4.8
-# * x86-4.9
-# * x86-clang3.4
-# * x86-clang3.5
-# * x86_64-4.9
-# * x86_64-clang3.4
-# * x86_64-clang3.5
-#
-# ANDROID_FORCE_ARM_BUILD=OFF - set ON to generate 32-bit ARM instructions
-# instead of Thumb. Is not available for "armeabi-v6 with VFP"
-# (is forced to be ON) ABI.
-#
-# ANDROID_NO_UNDEFINED=ON - set ON to show all undefined symbols as linker
-# errors even if they are not used.
-#
-# ANDROID_SO_UNDEFINED=OFF - set ON to allow undefined symbols in shared
-# libraries. Automatically turned for NDK r5x and r6x due to GLESv2
-# problems.
-#
-# ANDROID_STL=gnustl_static - specify the runtime to use.
-#
-# Possible values are:
-# none -> Do not configure the runtime.
-# system -> Use the default minimal system C++ runtime library.
-# Implies -fno-rtti -fno-exceptions.
-# Is not available for standalone toolchain.
-# system_re -> Use the default minimal system C++ runtime library.
-# Implies -frtti -fexceptions.
-# Is not available for standalone toolchain.
-# gabi++_static -> Use the GAbi++ runtime as a static library.
-# Implies -frtti -fno-exceptions.
-# Available for NDK r7 and newer.
-# Is not available for standalone toolchain.
-# gabi++_shared -> Use the GAbi++ runtime as a shared library.
-# Implies -frtti -fno-exceptions.
-# Available for NDK r7 and newer.
-# Is not available for standalone toolchain.
-# stlport_static -> Use the STLport runtime as a static library.
-# Implies -fno-rtti -fno-exceptions for NDK before r7.
-# Implies -frtti -fno-exceptions for NDK r7 and newer.
-# Is not available for standalone toolchain.
-# stlport_shared -> Use the STLport runtime as a shared library.
-# Implies -fno-rtti -fno-exceptions for NDK before r7.
-# Implies -frtti -fno-exceptions for NDK r7 and newer.
-# Is not available for standalone toolchain.
-# gnustl_static -> Use the GNU STL as a static library.
-# Implies -frtti -fexceptions.
-# gnustl_shared -> Use the GNU STL as a shared library.
-# Implies -frtti -fno-exceptions.
-# Available for NDK r7b and newer.
-# Silently degrades to gnustl_static if not available.
-# c++_static -> Use the LLVM libc++ runtime as a static library.
-# Implies -frtti -fexceptions.
-# c++_shared -> Use the LLVM libc++ runtime as a shared library.
-# Implies -frtti -fno-exceptions.
-#
-# ANDROID_STL_FORCE_FEATURES=ON - turn rtti and exceptions support based on
-# chosen runtime. If disabled, then the user is responsible for settings
-# these options.
-#
-# What?:
-# android-cmake toolchain searches for NDK/toolchain in the following order:
-# ANDROID_NDK - cmake parameter
-# ANDROID_NDK - environment variable
-# ANDROID_STANDALONE_TOOLCHAIN - cmake parameter
-# ANDROID_STANDALONE_TOOLCHAIN - environment variable
-# ANDROID_NDK - default locations
-# ANDROID_STANDALONE_TOOLCHAIN - default locations
-#
-# Make sure to do the following in your scripts:
-# SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${my_cxx_flags}" )
-# SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${my_cxx_flags}" )
-# The flags will be prepopulated with critical flags, so don't loose them.
-# Also be aware that toolchain also sets configuration-specific compiler
-# flags and linker flags.
-#
-# ANDROID and BUILD_ANDROID will be set to true, you may test any of these
-# variables to make necessary Android-specific configuration changes.
-#
-# Also ARMEABI or ARMEABI_V7A or ARMEABI_V7A_HARD or X86 or MIPS or ARM64_V8A or X86_64 or MIPS64
-# will be set true, mutually exclusive. NEON option will be set true
-# if VFP is set to NEON.
-#
-# ------------------------------------------------------------------------------
-
-cmake_minimum_required( VERSION 2.6.3 )
-
-if( DEFINED CMAKE_CROSSCOMPILING )
- # subsequent toolchain loading is not really needed
- return()
-endif()
-
-if( CMAKE_TOOLCHAIN_FILE )
- # touch toolchain variable to suppress "unused variable" warning
-endif()
-
-# inherit settings in recursive loads
-get_property( _CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE )
-if( _CMAKE_IN_TRY_COMPILE )
- include( "${CMAKE_CURRENT_SOURCE_DIR}/../android.toolchain.config.cmake" OPTIONAL )
-endif()
-
-# this one is important
-if( CMAKE_VERSION VERSION_GREATER "3.0.99" )
- set( CMAKE_SYSTEM_NAME Android )
-else()
- set( CMAKE_SYSTEM_NAME Linux )
-endif()
-
-# this one not so much
-set( CMAKE_SYSTEM_VERSION 1 )
-
-# rpath makes low sense for Android
-set( CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "" )
-set( CMAKE_SKIP_RPATH TRUE CACHE BOOL "If set, runtime paths are not added when using shared libraries." )
-
-# NDK search paths
-set( ANDROID_SUPPORTED_NDK_VERSIONS ${ANDROID_EXTRA_NDK_VERSIONS} -r10d -r10c -r10b -r10 -r9d -r9c -r9b -r9 -r8e -r8d -r8c -r8b -r8 -r7c -r7b -r7 -r6b -r6 -r5c -r5b -r5 "" )
-if( NOT DEFINED ANDROID_NDK_SEARCH_PATHS )
- if( CMAKE_HOST_WIN32 )
- file( TO_CMAKE_PATH "$ENV{PROGRAMFILES}" ANDROID_NDK_SEARCH_PATHS )
- set( ANDROID_NDK_SEARCH_PATHS "${ANDROID_NDK_SEARCH_PATHS}" "$ENV{SystemDrive}/NVPACK" )
- else()
- file( TO_CMAKE_PATH "$ENV{HOME}" ANDROID_NDK_SEARCH_PATHS )
- set( ANDROID_NDK_SEARCH_PATHS /opt "${ANDROID_NDK_SEARCH_PATHS}/NVPACK" )
- endif()
-endif()
-if( NOT DEFINED ANDROID_STANDALONE_TOOLCHAIN_SEARCH_PATH )
- set( ANDROID_STANDALONE_TOOLCHAIN_SEARCH_PATH /opt/android-toolchain )
-endif()
-
-# known ABIs
-set( ANDROID_SUPPORTED_ABIS_arm "armeabi-v7a;armeabi;armeabi-v7a with NEON;armeabi-v7a-hard with NEON;armeabi-v7a with VFPV3;armeabi-v6 with VFP" )
-set( ANDROID_SUPPORTED_ABIS_arm64 "arm64-v8a" )
-set( ANDROID_SUPPORTED_ABIS_x86 "x86" )
-set( ANDROID_SUPPORTED_ABIS_x86_64 "x86_64" )
-set( ANDROID_SUPPORTED_ABIS_mips "mips" )
-set( ANDROID_SUPPORTED_ABIS_mips64 "mips64" )
-
-# API level defaults
-set( ANDROID_DEFAULT_NDK_API_LEVEL 9 )
-set( ANDROID_DEFAULT_NDK_API_LEVEL_arm64 21 )
-set( ANDROID_DEFAULT_NDK_API_LEVEL_x86 9 )
-set( ANDROID_DEFAULT_NDK_API_LEVEL_x86_64 21 )
-set( ANDROID_DEFAULT_NDK_API_LEVEL_mips 9 )
-set( ANDROID_DEFAULT_NDK_API_LEVEL_mips64 21 )
-
-
-macro( __LIST_FILTER listvar regex )
- if( ${listvar} )
- foreach( __val ${${listvar}} )
- if( __val MATCHES "${regex}" )
- list( REMOVE_ITEM ${listvar} "${__val}" )
- endif()
- endforeach()
- endif()
-endmacro()
-
-macro( __INIT_VARIABLE var_name )
- set( __test_path 0 )
- foreach( __var ${ARGN} )
- if( __var STREQUAL "PATH" )
- set( __test_path 1 )
- break()
- endif()
- endforeach()
-
- if( __test_path AND NOT EXISTS "${${var_name}}" )
- unset( ${var_name} CACHE )
- endif()
-
- if( " ${${var_name}}" STREQUAL " " )
- set( __values 0 )
- foreach( __var ${ARGN} )
- if( __var STREQUAL "VALUES" )
- set( __values 1 )
- elseif( NOT __var STREQUAL "PATH" )
- if( __var MATCHES "^ENV_.*$" )
- string( REPLACE "ENV_" "" __var "${__var}" )
- set( __value "$ENV{${__var}}" )
- elseif( DEFINED ${__var} )
- set( __value "${${__var}}" )
- elseif( __values )
- set( __value "${__var}" )
- else()
- set( __value "" )
- endif()
-
- if( NOT " ${__value}" STREQUAL " " AND (NOT __test_path OR EXISTS "${__value}") )
- set( ${var_name} "${__value}" )
- break()
- endif()
- endif()
- endforeach()
- unset( __value )
- unset( __values )
- endif()
-
- if( __test_path )
- file( TO_CMAKE_PATH "${${var_name}}" ${var_name} )
- endif()
- unset( __test_path )
-endmacro()
-
-macro( __DETECT_NATIVE_API_LEVEL _var _path )
- set( __ndkApiLevelRegex "^[\t ]*#define[\t ]+__ANDROID_API__[\t ]+([0-9]+)[\t ]*.*$" )
- file( STRINGS ${_path} __apiFileContent REGEX "${__ndkApiLevelRegex}" )
- if( NOT __apiFileContent )
- set( __ndkApiLevelRegex "^[\t ]*#define[\t ]+__ANDROID_API__[\t ]+__ANDROID_API_FUTURE__[\t ]*$" )
- file( STRINGS ${_path} __apiFileContent REGEX "${__ndkApiLevelRegex}" )
- if( __apiFileContent )
- set(${_var} 10000)
- else()
- message( SEND_ERROR "Could not get Android native API level. Probably you have specified invalid level value, or your copy of NDK/toolchain is broken." )
- endif()
- else()
- string( REGEX REPLACE "${__ndkApiLevelRegex}" "\\1" ${_var} "${__apiFileContent}" )
- endif()
- unset( __apiFileContent )
- unset( __ndkApiLevelRegex )
-endmacro()
-
-macro( __DETECT_TOOLCHAIN_MACHINE_NAME _var _root )
- if( EXISTS "${_root}" )
- file( GLOB __gccExePath RELATIVE "${_root}/bin/" "${_root}/bin/*-gcc${TOOL_OS_SUFFIX}" )
- __LIST_FILTER( __gccExePath "^[.].*" )
- list( LENGTH __gccExePath __gccExePathsCount )
- if( NOT __gccExePathsCount EQUAL 1 AND NOT _CMAKE_IN_TRY_COMPILE )
- message( WARNING "Could not determine machine name for compiler from ${_root}" )
- set( ${_var} "" )
- else()
- get_filename_component( __gccExeName "${__gccExePath}" NAME_WE )
- string( REPLACE "-gcc" "" ${_var} "${__gccExeName}" )
- endif()
- unset( __gccExePath )
- unset( __gccExePathsCount )
- unset( __gccExeName )
- else()
- set( ${_var} "" )
- endif()
-endmacro()
-
-
-# fight against cygwin
-set( ANDROID_FORBID_SYGWIN TRUE CACHE BOOL "Prevent cmake from working under cygwin and using cygwin tools")
-mark_as_advanced( ANDROID_FORBID_SYGWIN )
-if( ANDROID_FORBID_SYGWIN )
- if( CYGWIN )
- message( FATAL_ERROR "Android NDK and android-cmake toolchain are not welcome Cygwin. It is unlikely that this cmake toolchain will work under cygwin. But if you want to try then you can set cmake variable ANDROID_FORBID_SYGWIN to FALSE and rerun cmake." )
- endif()
-
- if( CMAKE_HOST_WIN32 )
- # remove cygwin from PATH
- set( __new_path "$ENV{PATH}")
- __LIST_FILTER( __new_path "cygwin" )
- set(ENV{PATH} "${__new_path}")
- unset(__new_path)
- endif()
-endif()
-
-
-# detect current host platform
-if( NOT DEFINED ANDROID_NDK_HOST_X64 AND (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64" OR CMAKE_HOST_APPLE) )
- set( ANDROID_NDK_HOST_X64 1 CACHE BOOL "Try to use 64-bit compiler toolchain" )
- mark_as_advanced( ANDROID_NDK_HOST_X64 )
-endif()
-
-set( TOOL_OS_SUFFIX "" )
-if( CMAKE_HOST_APPLE )
- set( ANDROID_NDK_HOST_SYSTEM_NAME "darwin-x86_64" )
- set( ANDROID_NDK_HOST_SYSTEM_NAME2 "darwin-x86" )
-elseif( CMAKE_HOST_WIN32 )
- set( ANDROID_NDK_HOST_SYSTEM_NAME "windows-x86_64" )
- set( ANDROID_NDK_HOST_SYSTEM_NAME2 "windows" )
- set( TOOL_OS_SUFFIX ".exe" )
-elseif( CMAKE_HOST_UNIX )
- set( ANDROID_NDK_HOST_SYSTEM_NAME "linux-x86_64" )
- set( ANDROID_NDK_HOST_SYSTEM_NAME2 "linux-x86" )
-else()
- message( FATAL_ERROR "Cross-compilation on your platform is not supported by this cmake toolchain" )
-endif()
-
-if( NOT ANDROID_NDK_HOST_X64 )
- set( ANDROID_NDK_HOST_SYSTEM_NAME ${ANDROID_NDK_HOST_SYSTEM_NAME2} )
-endif()
-
-# see if we have path to Android NDK
-if( NOT ANDROID_NDK AND NOT ANDROID_STANDALONE_TOOLCHAIN )
- __INIT_VARIABLE( ANDROID_NDK PATH ENV_ANDROID_NDK )
-endif()
-if( NOT ANDROID_NDK )
- # see if we have path to Android standalone toolchain
- __INIT_VARIABLE( ANDROID_STANDALONE_TOOLCHAIN PATH ENV_ANDROID_STANDALONE_TOOLCHAIN )
-
- if( NOT ANDROID_STANDALONE_TOOLCHAIN )
- #try to find Android NDK in one of the the default locations
- set( __ndkSearchPaths )
- foreach( __ndkSearchPath ${ANDROID_NDK_SEARCH_PATHS} )
- foreach( suffix ${ANDROID_SUPPORTED_NDK_VERSIONS} )
- list( APPEND __ndkSearchPaths "${__ndkSearchPath}/android-ndk${suffix}" )
- endforeach()
- endforeach()
- __INIT_VARIABLE( ANDROID_NDK PATH VALUES ${__ndkSearchPaths} )
- unset( __ndkSearchPaths )
-
- if( ANDROID_NDK )
- message( STATUS "Using default path for Android NDK: ${ANDROID_NDK}" )
- message( STATUS " If you prefer to use a different location, please define a cmake or environment variable: ANDROID_NDK" )
- else()
- #try to find Android standalone toolchain in one of the the default locations
- __INIT_VARIABLE( ANDROID_STANDALONE_TOOLCHAIN PATH ANDROID_STANDALONE_TOOLCHAIN_SEARCH_PATH )
-
- if( ANDROID_STANDALONE_TOOLCHAIN )
- message( STATUS "Using default path for standalone toolchain ${ANDROID_STANDALONE_TOOLCHAIN}" )
- message( STATUS " If you prefer to use a different location, please define the variable: ANDROID_STANDALONE_TOOLCHAIN" )
- endif( ANDROID_STANDALONE_TOOLCHAIN )
- endif( ANDROID_NDK )
- endif( NOT ANDROID_STANDALONE_TOOLCHAIN )
-endif( NOT ANDROID_NDK )
-
-# remember found paths
-if( ANDROID_NDK )
- get_filename_component( ANDROID_NDK "${ANDROID_NDK}" ABSOLUTE )
- set( ANDROID_NDK "${ANDROID_NDK}" CACHE INTERNAL "Path of the Android NDK" FORCE )
- set( BUILD_WITH_ANDROID_NDK True )
- if( EXISTS "${ANDROID_NDK}/RELEASE.TXT" )
- file( STRINGS "${ANDROID_NDK}/RELEASE.TXT" ANDROID_NDK_RELEASE_FULL LIMIT_COUNT 1 REGEX "r[0-9]+[a-z]?" )
- string( REGEX MATCH "r([0-9]+)([a-z]?)" ANDROID_NDK_RELEASE "${ANDROID_NDK_RELEASE_FULL}" )
- else()
- set( ANDROID_NDK_RELEASE "r1x" )
- set( ANDROID_NDK_RELEASE_FULL "unreleased" )
- endif()
- string( REGEX REPLACE "r([0-9]+)([a-z]?)" "\\1*1000" ANDROID_NDK_RELEASE_NUM "${ANDROID_NDK_RELEASE}" )
- string( FIND " abcdefghijklmnopqastuvwxyz" "${CMAKE_MATCH_2}" __ndkReleaseLetterNum )
- math( EXPR ANDROID_NDK_RELEASE_NUM "${ANDROID_NDK_RELEASE_NUM}+${__ndkReleaseLetterNum}" )
-elseif( ANDROID_STANDALONE_TOOLCHAIN )
- get_filename_component( ANDROID_STANDALONE_TOOLCHAIN "${ANDROID_STANDALONE_TOOLCHAIN}" ABSOLUTE )
- # try to detect change
- if( CMAKE_AR )
- string( LENGTH "${ANDROID_STANDALONE_TOOLCHAIN}" __length )
- string( SUBSTRING "${CMAKE_AR}" 0 ${__length} __androidStandaloneToolchainPreviousPath )
- if( NOT __androidStandaloneToolchainPreviousPath STREQUAL ANDROID_STANDALONE_TOOLCHAIN )
- message( FATAL_ERROR "It is not possible to change path to the Android standalone toolchain on subsequent run." )
- endif()
- unset( __androidStandaloneToolchainPreviousPath )
- unset( __length )
- endif()
- set( ANDROID_STANDALONE_TOOLCHAIN "${ANDROID_STANDALONE_TOOLCHAIN}" CACHE INTERNAL "Path of the Android standalone toolchain" FORCE )
- set( BUILD_WITH_STANDALONE_TOOLCHAIN True )
-else()
- list(GET ANDROID_NDK_SEARCH_PATHS 0 ANDROID_NDK_SEARCH_PATH)
- message( FATAL_ERROR "Could not find neither Android NDK nor Android standalone toolchain.
- You should either set an environment variable:
- export ANDROID_NDK=~/my-android-ndk
- or
- export ANDROID_STANDALONE_TOOLCHAIN=~/my-android-toolchain
- or put the toolchain or NDK in the default path:
- sudo ln -s ~/my-android-ndk ${ANDROID_NDK_SEARCH_PATH}/android-ndk
- sudo ln -s ~/my-android-toolchain ${ANDROID_STANDALONE_TOOLCHAIN_SEARCH_PATH}" )
-endif()
-
-# android NDK layout
-if( BUILD_WITH_ANDROID_NDK )
- if( NOT DEFINED ANDROID_NDK_LAYOUT )
- # try to automatically detect the layout
- if( EXISTS "${ANDROID_NDK}/RELEASE.TXT")
- set( ANDROID_NDK_LAYOUT "RELEASE" )
- elseif( EXISTS "${ANDROID_NDK}/../../linux-x86/toolchain/" )
- set( ANDROID_NDK_LAYOUT "LINARO" )
- elseif( EXISTS "${ANDROID_NDK}/../../gcc/" )
- set( ANDROID_NDK_LAYOUT "ANDROID" )
- endif()
- endif()
- set( ANDROID_NDK_LAYOUT "${ANDROID_NDK_LAYOUT}" CACHE STRING "The inner layout of NDK" )
- mark_as_advanced( ANDROID_NDK_LAYOUT )
- if( ANDROID_NDK_LAYOUT STREQUAL "LINARO" )
- set( ANDROID_NDK_HOST_SYSTEM_NAME ${ANDROID_NDK_HOST_SYSTEM_NAME2} ) # only 32-bit at the moment
- set( ANDROID_NDK_TOOLCHAINS_PATH "${ANDROID_NDK}/../../${ANDROID_NDK_HOST_SYSTEM_NAME}/toolchain" )
- set( ANDROID_NDK_TOOLCHAINS_SUBPATH "" )
- set( ANDROID_NDK_TOOLCHAINS_SUBPATH2 "" )
- elseif( ANDROID_NDK_LAYOUT STREQUAL "ANDROID" )
- set( ANDROID_NDK_HOST_SYSTEM_NAME ${ANDROID_NDK_HOST_SYSTEM_NAME2} ) # only 32-bit at the moment
- set( ANDROID_NDK_TOOLCHAINS_PATH "${ANDROID_NDK}/../../gcc/${ANDROID_NDK_HOST_SYSTEM_NAME}/arm" )
- set( ANDROID_NDK_TOOLCHAINS_SUBPATH "" )
- set( ANDROID_NDK_TOOLCHAINS_SUBPATH2 "" )
- else() # ANDROID_NDK_LAYOUT STREQUAL "RELEASE"
- set( ANDROID_NDK_TOOLCHAINS_PATH "${ANDROID_NDK}/toolchains" )
- set( ANDROID_NDK_TOOLCHAINS_SUBPATH "/prebuilt/${ANDROID_NDK_HOST_SYSTEM_NAME}" )
- set( ANDROID_NDK_TOOLCHAINS_SUBPATH2 "/prebuilt/${ANDROID_NDK_HOST_SYSTEM_NAME2}" )
- endif()
- get_filename_component( ANDROID_NDK_TOOLCHAINS_PATH "${ANDROID_NDK_TOOLCHAINS_PATH}" ABSOLUTE )
-
- # try to detect change of NDK
- if( CMAKE_AR )
- string( LENGTH "${ANDROID_NDK_TOOLCHAINS_PATH}" __length )
- string( SUBSTRING "${CMAKE_AR}" 0 ${__length} __androidNdkPreviousPath )
- if( NOT __androidNdkPreviousPath STREQUAL ANDROID_NDK_TOOLCHAINS_PATH )
- message( FATAL_ERROR "It is not possible to change the path to the NDK on subsequent CMake run. You must remove all generated files from your build folder first.
- " )
- endif()
- unset( __androidNdkPreviousPath )
- unset( __length )
- endif()
-endif()
-
-
-# get all the details about standalone toolchain
-if( BUILD_WITH_STANDALONE_TOOLCHAIN )
- __DETECT_NATIVE_API_LEVEL( ANDROID_SUPPORTED_NATIVE_API_LEVELS "${ANDROID_STANDALONE_TOOLCHAIN}/sysroot/usr/include/android/api-level.h" )
- set( ANDROID_STANDALONE_TOOLCHAIN_API_LEVEL ${ANDROID_SUPPORTED_NATIVE_API_LEVELS} )
- set( __availableToolchains "standalone" )
- __DETECT_TOOLCHAIN_MACHINE_NAME( __availableToolchainMachines "${ANDROID_STANDALONE_TOOLCHAIN}" )
- if( NOT __availableToolchainMachines )
- message( FATAL_ERROR "Could not determine machine name of your toolchain. Probably your Android standalone toolchain is broken." )
- endif()
- if( __availableToolchainMachines MATCHES x86_64 )
- set( __availableToolchainArchs "x86_64" )
- elseif( __availableToolchainMachines MATCHES i686 )
- set( __availableToolchainArchs "x86" )
- elseif( __availableToolchainMachines MATCHES aarch64 )
- set( __availableToolchainArchs "arm64" )
- elseif( __availableToolchainMachines MATCHES arm )
- set( __availableToolchainArchs "arm" )
- elseif( __availableToolchainMachines MATCHES mips64el )
- set( __availableToolchainArchs "mips64" )
- elseif( __availableToolchainMachines MATCHES mipsel )
- set( __availableToolchainArchs "mips" )
- endif()
- execute_process( COMMAND "${ANDROID_STANDALONE_TOOLCHAIN}/bin/${__availableToolchainMachines}-gcc${TOOL_OS_SUFFIX}" -dumpversion
- OUTPUT_VARIABLE __availableToolchainCompilerVersions OUTPUT_STRIP_TRAILING_WHITESPACE )
- string( REGEX MATCH "[0-9]+[.][0-9]+([.][0-9]+)?" __availableToolchainCompilerVersions "${__availableToolchainCompilerVersions}" )
- if( EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/bin/clang${TOOL_OS_SUFFIX}" )
- list( APPEND __availableToolchains "standalone-clang" )
- list( APPEND __availableToolchainMachines ${__availableToolchainMachines} )
- list( APPEND __availableToolchainArchs ${__availableToolchainArchs} )
- list( APPEND __availableToolchainCompilerVersions ${__availableToolchainCompilerVersions} )
- endif()
-endif()
-
-macro( __GLOB_NDK_TOOLCHAINS __availableToolchainsVar __availableToolchainsLst __toolchain_subpath )
- foreach( __toolchain ${${__availableToolchainsLst}} )
- if( "${__toolchain}" MATCHES "-clang3[.][0-9]$" AND NOT EXISTS "${ANDROID_NDK_TOOLCHAINS_PATH}/${__toolchain}${__toolchain_subpath}" )
- SET( __toolchainVersionRegex "^TOOLCHAIN_VERSION[\t ]+:=[\t ]+(.*)$" )
- FILE( STRINGS "${ANDROID_NDK_TOOLCHAINS_PATH}/${__toolchain}/setup.mk" __toolchainVersionStr REGEX "${__toolchainVersionRegex}" )
- if( __toolchainVersionStr )
- string( REGEX REPLACE "${__toolchainVersionRegex}" "\\1" __toolchainVersionStr "${__toolchainVersionStr}" )
- string( REGEX REPLACE "-clang3[.][0-9]$" "-${__toolchainVersionStr}" __gcc_toolchain "${__toolchain}" )
- else()
- string( REGEX REPLACE "-clang3[.][0-9]$" "-4.6" __gcc_toolchain "${__toolchain}" )
- endif()
- unset( __toolchainVersionStr )
- unset( __toolchainVersionRegex )
- else()
- set( __gcc_toolchain "${__toolchain}" )
- endif()
- __DETECT_TOOLCHAIN_MACHINE_NAME( __machine "${ANDROID_NDK_TOOLCHAINS_PATH}/${__gcc_toolchain}${__toolchain_subpath}" )
- if( __machine )
- string( REGEX MATCH "[0-9]+[.][0-9]+([.][0-9x]+)?$" __version "${__gcc_toolchain}" )
- if( __machine MATCHES x86_64 )
- set( __arch "x86_64" )
- elseif( __machine MATCHES i686 )
- set( __arch "x86" )
- elseif( __machine MATCHES aarch64 )
- set( __arch "arm64" )
- elseif( __machine MATCHES arm )
- set( __arch "arm" )
- elseif( __machine MATCHES mips64el )
- set( __arch "mips64" )
- elseif( __machine MATCHES mipsel )
- set( __arch "mips" )
- else()
- set( __arch "" )
- endif()
- #message("machine: !${__machine}!\narch: !${__arch}!\nversion: !${__version}!\ntoolchain: !${__toolchain}!\n")
- if (__arch)
- list( APPEND __availableToolchainMachines "${__machine}" )
- list( APPEND __availableToolchainArchs "${__arch}" )
- list( APPEND __availableToolchainCompilerVersions "${__version}" )
- list( APPEND ${__availableToolchainsVar} "${__toolchain}" )
- endif()
- endif()
- unset( __gcc_toolchain )
- endforeach()
-endmacro()
-
-# get all the details about NDK
-if( BUILD_WITH_ANDROID_NDK )
- file( GLOB ANDROID_SUPPORTED_NATIVE_API_LEVELS RELATIVE "${ANDROID_NDK}/platforms" "${ANDROID_NDK}/platforms/android-*" )
- string( REPLACE "android-" "" ANDROID_SUPPORTED_NATIVE_API_LEVELS "${ANDROID_SUPPORTED_NATIVE_API_LEVELS}" )
- set( __availableToolchains "" )
- set( __availableToolchainMachines "" )
- set( __availableToolchainArchs "" )
- set( __availableToolchainCompilerVersions "" )
- if( ANDROID_TOOLCHAIN_NAME AND EXISTS "${ANDROID_NDK_TOOLCHAINS_PATH}/${ANDROID_TOOLCHAIN_NAME}/" )
- # do not go through all toolchains if we know the name
- set( __availableToolchainsLst "${ANDROID_TOOLCHAIN_NAME}" )
- __GLOB_NDK_TOOLCHAINS( __availableToolchains __availableToolchainsLst "${ANDROID_NDK_TOOLCHAINS_SUBPATH}" )
- if( NOT __availableToolchains AND NOT ANDROID_NDK_TOOLCHAINS_SUBPATH STREQUAL ANDROID_NDK_TOOLCHAINS_SUBPATH2 )
- __GLOB_NDK_TOOLCHAINS( __availableToolchains __availableToolchainsLst "${ANDROID_NDK_TOOLCHAINS_SUBPATH2}" )
- if( __availableToolchains )
- set( ANDROID_NDK_TOOLCHAINS_SUBPATH ${ANDROID_NDK_TOOLCHAINS_SUBPATH2} )
- endif()
- endif()
- endif()
- if( NOT __availableToolchains )
- file( GLOB __availableToolchainsLst RELATIVE "${ANDROID_NDK_TOOLCHAINS_PATH}" "${ANDROID_NDK_TOOLCHAINS_PATH}/*" )
- if( __availableToolchainsLst )
- list(SORT __availableToolchainsLst) # we need clang to go after gcc
- endif()
- __LIST_FILTER( __availableToolchainsLst "^[.]" )
- __LIST_FILTER( __availableToolchainsLst "llvm" )
- __LIST_FILTER( __availableToolchainsLst "renderscript" )
- __GLOB_NDK_TOOLCHAINS( __availableToolchains __availableToolchainsLst "${ANDROID_NDK_TOOLCHAINS_SUBPATH}" )
- if( NOT __availableToolchains AND NOT ANDROID_NDK_TOOLCHAINS_SUBPATH STREQUAL ANDROID_NDK_TOOLCHAINS_SUBPATH2 )
- __GLOB_NDK_TOOLCHAINS( __availableToolchains __availableToolchainsLst "${ANDROID_NDK_TOOLCHAINS_SUBPATH2}" )
- if( __availableToolchains )
- set( ANDROID_NDK_TOOLCHAINS_SUBPATH ${ANDROID_NDK_TOOLCHAINS_SUBPATH2} )
- endif()
- endif()
- endif()
- if( NOT __availableToolchains )
- message( FATAL_ERROR "Could not find any working toolchain in the NDK. Probably your Android NDK is broken." )
- endif()
-endif()
-
-# build list of available ABIs
-set( ANDROID_SUPPORTED_ABIS "" )
-set( __uniqToolchainArchNames ${__availableToolchainArchs} )
-list( REMOVE_DUPLICATES __uniqToolchainArchNames )
-list( SORT __uniqToolchainArchNames )
-foreach( __arch ${__uniqToolchainArchNames} )
- list( APPEND ANDROID_SUPPORTED_ABIS ${ANDROID_SUPPORTED_ABIS_${__arch}} )
-endforeach()
-unset( __uniqToolchainArchNames )
-if( NOT ANDROID_SUPPORTED_ABIS )
- message( FATAL_ERROR "No one of known Android ABIs is supported by this cmake toolchain." )
-endif()
-
-# choose target ABI
-__INIT_VARIABLE( ANDROID_ABI VALUES ${ANDROID_SUPPORTED_ABIS} )
-# verify that target ABI is supported
-list( FIND ANDROID_SUPPORTED_ABIS "${ANDROID_ABI}" __androidAbiIdx )
-if( __androidAbiIdx EQUAL -1 )
- string( REPLACE ";" "\", \"" PRINTABLE_ANDROID_SUPPORTED_ABIS "${ANDROID_SUPPORTED_ABIS}" )
- message( FATAL_ERROR "Specified ANDROID_ABI = \"${ANDROID_ABI}\" is not supported by this cmake toolchain or your NDK/toolchain.
- Supported values are: \"${PRINTABLE_ANDROID_SUPPORTED_ABIS}\"
- " )
-endif()
-unset( __androidAbiIdx )
-
-# set target ABI options
-if( ANDROID_ABI STREQUAL "x86" )
- set( X86 true )
- set( ANDROID_NDK_ABI_NAME "x86" )
- set( ANDROID_ARCH_NAME "x86" )
- set( ANDROID_LLVM_TRIPLE "i686-none-linux-android" )
- set( CMAKE_SYSTEM_PROCESSOR "i686" )
-elseif( ANDROID_ABI STREQUAL "x86_64" )
- set( X86 true )
- set( X86_64 true )
- set( ANDROID_NDK_ABI_NAME "x86_64" )
- set( ANDROID_ARCH_NAME "x86_64" )
- set( CMAKE_SYSTEM_PROCESSOR "x86_64" )
- set( ANDROID_LLVM_TRIPLE "x86_64-none-linux-android" )
-elseif( ANDROID_ABI STREQUAL "mips64" )
- set( MIPS64 true )
- set( ANDROID_NDK_ABI_NAME "mips64" )
- set( ANDROID_ARCH_NAME "mips64" )
- set( ANDROID_LLVM_TRIPLE "mips64el-none-linux-android" )
- set( CMAKE_SYSTEM_PROCESSOR "mips64" )
-elseif( ANDROID_ABI STREQUAL "mips" )
- set( MIPS true )
- set( ANDROID_NDK_ABI_NAME "mips" )
- set( ANDROID_ARCH_NAME "mips" )
- set( ANDROID_LLVM_TRIPLE "mipsel-none-linux-android" )
- set( CMAKE_SYSTEM_PROCESSOR "mips" )
-elseif( ANDROID_ABI STREQUAL "arm64-v8a" )
- set( ARM64_V8A true )
- set( ANDROID_NDK_ABI_NAME "arm64-v8a" )
- set( ANDROID_ARCH_NAME "arm64" )
- set( ANDROID_LLVM_TRIPLE "aarch64-none-linux-android" )
- set( CMAKE_SYSTEM_PROCESSOR "aarch64" )
- set( VFPV3 true )
- set( NEON true )
-elseif( ANDROID_ABI STREQUAL "armeabi" )
- set( ARMEABI true )
- set( ANDROID_NDK_ABI_NAME "armeabi" )
- set( ANDROID_ARCH_NAME "arm" )
- set( ANDROID_LLVM_TRIPLE "armv5te-none-linux-androideabi" )
- set( CMAKE_SYSTEM_PROCESSOR "armv5te" )
-elseif( ANDROID_ABI STREQUAL "armeabi-v6 with VFP" )
- set( ARMEABI_V6 true )
- set( ANDROID_NDK_ABI_NAME "armeabi" )
- set( ANDROID_ARCH_NAME "arm" )
- set( ANDROID_LLVM_TRIPLE "armv5te-none-linux-androideabi" )
- set( CMAKE_SYSTEM_PROCESSOR "armv6" )
- # need always fallback to older platform
- set( ARMEABI true )
-elseif( ANDROID_ABI STREQUAL "armeabi-v7a")
- set( ARMEABI_V7A true )
- set( ANDROID_NDK_ABI_NAME "armeabi-v7a" )
- set( ANDROID_ARCH_NAME "arm" )
- set( ANDROID_LLVM_TRIPLE "armv7-none-linux-androideabi" )
- set( CMAKE_SYSTEM_PROCESSOR "armv7-a" )
-elseif( ANDROID_ABI STREQUAL "armeabi-v7a with VFPV3" )
- set( ARMEABI_V7A true )
- set( ANDROID_NDK_ABI_NAME "armeabi-v7a" )
- set( ANDROID_ARCH_NAME "arm" )
- set( ANDROID_LLVM_TRIPLE "armv7-none-linux-androideabi" )
- set( CMAKE_SYSTEM_PROCESSOR "armv7-a" )
- set( VFPV3 true )
-elseif( ANDROID_ABI STREQUAL "armeabi-v7a with NEON" )
- set( ARMEABI_V7A true )
- set( ANDROID_NDK_ABI_NAME "armeabi-v7a" )
- set( ANDROID_ARCH_NAME "arm" )
- set( ANDROID_LLVM_TRIPLE "armv7-none-linux-androideabi" )
- set( CMAKE_SYSTEM_PROCESSOR "armv7-a" )
- set( VFPV3 true )
- set( NEON true )
-elseif( ANDROID_ABI STREQUAL "armeabi-v7a-hard with NEON" )
- set( ARMEABI_V7A_HARD true )
- set( ANDROID_NDK_ABI_NAME "armeabi-v7a-hard" )
- set( ANDROID_ARCH_NAME "arm" )
- set( ANDROID_LLVM_TRIPLE "armv7-none-linux-androideabi" )
- set( CMAKE_SYSTEM_PROCESSOR "armv7-a" )
- set( VFPV3 true )
- set( NEON true )
-else()
- message( SEND_ERROR "Unknown ANDROID_ABI=\"${ANDROID_ABI}\" is specified." )
-endif()
-
-if( CMAKE_BINARY_DIR AND EXISTS "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeSystem.cmake" )
- # really dirty hack
- # it is not possible to change CMAKE_SYSTEM_PROCESSOR after the first run...
- file( APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeSystem.cmake" "SET(CMAKE_SYSTEM_PROCESSOR \"${CMAKE_SYSTEM_PROCESSOR}\")\n" )
-endif()
-
-if( ANDROID_ARCH_NAME STREQUAL "arm" AND NOT ARMEABI_V6 )
- __INIT_VARIABLE( ANDROID_FORCE_ARM_BUILD VALUES OFF )
- set( ANDROID_FORCE_ARM_BUILD ${ANDROID_FORCE_ARM_BUILD} CACHE BOOL "Use 32-bit ARM instructions instead of Thumb-1" FORCE )
- mark_as_advanced( ANDROID_FORCE_ARM_BUILD )
-else()
- unset( ANDROID_FORCE_ARM_BUILD CACHE )
-endif()
-
-# choose toolchain
-if( ANDROID_TOOLCHAIN_NAME )
- list( FIND __availableToolchains "${ANDROID_TOOLCHAIN_NAME}" __toolchainIdx )
- if( __toolchainIdx EQUAL -1 )
- list( SORT __availableToolchains )
- string( REPLACE ";" "\n * " toolchains_list "${__availableToolchains}" )
- set( toolchains_list " * ${toolchains_list}")
- message( FATAL_ERROR "Specified toolchain \"${ANDROID_TOOLCHAIN_NAME}\" is missing in your NDK or broken. Please verify that your NDK is working or select another compiler toolchain.
-To configure the toolchain set CMake variable ANDROID_TOOLCHAIN_NAME to one of the following values:\n${toolchains_list}\n" )
- endif()
- list( GET __availableToolchainArchs ${__toolchainIdx} __toolchainArch )
- if( NOT __toolchainArch STREQUAL ANDROID_ARCH_NAME )
- message( SEND_ERROR "Selected toolchain \"${ANDROID_TOOLCHAIN_NAME}\" is not able to compile binaries for the \"${ANDROID_ARCH_NAME}\" platform." )
- endif()
-else()
- set( __toolchainIdx -1 )
- set( __applicableToolchains "" )
- set( __toolchainMaxVersion "0.0.0" )
- list( LENGTH __availableToolchains __availableToolchainsCount )
- math( EXPR __availableToolchainsCount "${__availableToolchainsCount}-1" )
- foreach( __idx RANGE ${__availableToolchainsCount} )
- list( GET __availableToolchainArchs ${__idx} __toolchainArch )
- if( __toolchainArch STREQUAL ANDROID_ARCH_NAME )
- list( GET __availableToolchainCompilerVersions ${__idx} __toolchainVersion )
- string( REPLACE "x" "99" __toolchainVersion "${__toolchainVersion}")
- if( __toolchainVersion VERSION_GREATER __toolchainMaxVersion )
- set( __toolchainMaxVersion "${__toolchainVersion}" )
- set( __toolchainIdx ${__idx} )
- endif()
- endif()
- endforeach()
- unset( __availableToolchainsCount )
- unset( __toolchainMaxVersion )
- unset( __toolchainVersion )
-endif()
-unset( __toolchainArch )
-if( __toolchainIdx EQUAL -1 )
- message( FATAL_ERROR "No one of available compiler toolchains is able to compile for ${ANDROID_ARCH_NAME} platform." )
-endif()
-list( GET __availableToolchains ${__toolchainIdx} ANDROID_TOOLCHAIN_NAME )
-list( GET __availableToolchainMachines ${__toolchainIdx} ANDROID_TOOLCHAIN_MACHINE_NAME )
-list( GET __availableToolchainCompilerVersions ${__toolchainIdx} ANDROID_COMPILER_VERSION )
-
-unset( __toolchainIdx )
-unset( __availableToolchains )
-unset( __availableToolchainMachines )
-unset( __availableToolchainArchs )
-unset( __availableToolchainCompilerVersions )
-
-# choose native API level
-__INIT_VARIABLE( ANDROID_NATIVE_API_LEVEL ENV_ANDROID_NATIVE_API_LEVEL ANDROID_API_LEVEL ENV_ANDROID_API_LEVEL ANDROID_STANDALONE_TOOLCHAIN_API_LEVEL ANDROID_DEFAULT_NDK_API_LEVEL_${ANDROID_ARCH_NAME} ANDROID_DEFAULT_NDK_API_LEVEL )
-string( REPLACE "android-" "" ANDROID_NATIVE_API_LEVEL "${ANDROID_NATIVE_API_LEVEL}" )
-string( STRIP "${ANDROID_NATIVE_API_LEVEL}" ANDROID_NATIVE_API_LEVEL )
-# adjust API level
-set( __real_api_level ${ANDROID_DEFAULT_NDK_API_LEVEL_${ANDROID_ARCH_NAME}} )
-foreach( __level ${ANDROID_SUPPORTED_NATIVE_API_LEVELS} )
- if( (__level LESS ANDROID_NATIVE_API_LEVEL OR __level STREQUAL ANDROID_NATIVE_API_LEVEL) AND NOT __level LESS __real_api_level )
- set( __real_api_level ${__level} )
- endif()
-endforeach()
-if( __real_api_level AND NOT ANDROID_NATIVE_API_LEVEL STREQUAL __real_api_level )
- message( STATUS "Adjusting Android API level 'android-${ANDROID_NATIVE_API_LEVEL}' to 'android-${__real_api_level}'")
- set( ANDROID_NATIVE_API_LEVEL ${__real_api_level} )
-endif()
-unset(__real_api_level)
-# validate
-list( FIND ANDROID_SUPPORTED_NATIVE_API_LEVELS "${ANDROID_NATIVE_API_LEVEL}" __levelIdx )
-if( __levelIdx EQUAL -1 )
- message( SEND_ERROR "Specified Android native API level 'android-${ANDROID_NATIVE_API_LEVEL}' is not supported by your NDK/toolchain.\nSupported values of ANDROID_NATIVE_API_LEVEL: ${ANDROID_SUPPORTED_NATIVE_API_LEVELS}" )
-else()
- if( BUILD_WITH_ANDROID_NDK )
- if(EXISTS "${ANDROID_NDK}/platforms/android-${ANDROID_NATIVE_API_LEVEL}/arch-${ANDROID_ARCH_NAME}/usr/include/android/api-level.h")
- __DETECT_NATIVE_API_LEVEL( __realApiLevel "${ANDROID_NDK}/platforms/android-${ANDROID_NATIVE_API_LEVEL}/arch-${ANDROID_ARCH_NAME}/usr/include/android/api-level.h" )
- else()
- __DETECT_NATIVE_API_LEVEL( __realApiLevel "${ANDROID_NDK}/sysroot/usr/include/android/api-level.h")
- endif()
-
- if( NOT __realApiLevel EQUAL ANDROID_NATIVE_API_LEVEL AND NOT __realApiLevel GREATER 9000 )
- message( SEND_ERROR "Specified Android API level (${ANDROID_NATIVE_API_LEVEL}) does not match to the level found (${__realApiLevel}). Probably your copy of NDK is broken." )
- endif()
- unset( __realApiLevel )
- endif()
- set( ANDROID_NATIVE_API_LEVEL "${ANDROID_NATIVE_API_LEVEL}" CACHE STRING "Android API level for native code" FORCE )
- set( CMAKE_ANDROID_API ${ANDROID_NATIVE_API_LEVEL} )
- if( CMAKE_VERSION VERSION_GREATER "2.8" )
- list( SORT ANDROID_SUPPORTED_NATIVE_API_LEVELS )
- set_property( CACHE ANDROID_NATIVE_API_LEVEL PROPERTY STRINGS ${ANDROID_SUPPORTED_NATIVE_API_LEVELS} )
- endif()
-endif()
-unset( __levelIdx )
-
-
-# remember target ABI
-set( ANDROID_ABI "${ANDROID_ABI}" CACHE STRING "The target ABI for Android. If arm, then armeabi-v7a is recommended for hardware floating point." FORCE )
-if( CMAKE_VERSION VERSION_GREATER "2.8" )
- list( SORT ANDROID_SUPPORTED_ABIS_${ANDROID_ARCH_NAME} )
- set_property( CACHE ANDROID_ABI PROPERTY STRINGS ${ANDROID_SUPPORTED_ABIS_${ANDROID_ARCH_NAME}} )
-endif()
-
-
-# runtime choice (STL, rtti, exceptions)
-if( NOT ANDROID_STL )
- set( ANDROID_STL gnustl_static )
-endif()
-set( ANDROID_STL "${ANDROID_STL}" CACHE STRING "C++ runtime" )
-set( ANDROID_STL_FORCE_FEATURES ON CACHE BOOL "automatically configure rtti and exceptions support based on C++ runtime" )
-mark_as_advanced( ANDROID_STL ANDROID_STL_FORCE_FEATURES )
-
-if( BUILD_WITH_ANDROID_NDK )
- if( NOT "${ANDROID_STL}" MATCHES "^(none|system|system_re|gabi\\+\\+_static|gabi\\+\\+_shared|stlport_static|stlport_shared|gnustl_static|gnustl_shared|c\\+\\+_static|c\\+\\+_shared)$")
- message( FATAL_ERROR "ANDROID_STL is set to invalid value \"${ANDROID_STL}\".
-The possible values are:
- none -> Do not configure the runtime.
- system -> Use the default minimal system C++ runtime library.
- system_re -> Same as system but with rtti and exceptions.
- gabi++_static -> Use the GAbi++ runtime as a static library.
- gabi++_shared -> Use the GAbi++ runtime as a shared library.
- stlport_static -> Use the STLport runtime as a static library.
- stlport_shared -> Use the STLport runtime as a shared library.
- gnustl_static -> (default) Use the GNU STL as a static library.
- gnustl_shared -> Use the GNU STL as a shared library.
- c++_shared -> Use the LLVM libc++ runtime as a shared library.
- c++_static -> Use the LLVM libc++ runtime as a static library.
-" )
- endif()
-elseif( BUILD_WITH_STANDALONE_TOOLCHAIN )
- if( NOT "${ANDROID_STL}" MATCHES "^(none|gnustl_static|gnustl_shared|c\\+\\+_static|c\\+\\+_shared)$")
- message( FATAL_ERROR "ANDROID_STL is set to invalid value \"${ANDROID_STL}\".
-The possible values are:
- none -> Do not configure the runtime.
- gnustl_static -> (default) Use the GNU STL as a static library.
- gnustl_shared -> Use the GNU STL as a shared library.
- c++_shared -> Use the LLVM libc++ runtime as a shared library.
- c++_static -> Use the LLVM libc++ runtime as a static library.
-" )
- endif()
-endif()
-
-unset( ANDROID_RTTI )
-unset( ANDROID_EXCEPTIONS )
-unset( ANDROID_STL_INCLUDE_DIRS )
-unset( __libstl )
-unset( __libsupcxx )
-
-if( NOT _CMAKE_IN_TRY_COMPILE AND ANDROID_NDK_RELEASE STREQUAL "r7b" AND ARMEABI_V7A AND NOT VFPV3 AND ANDROID_STL MATCHES "gnustl" )
- message( WARNING "The GNU STL armeabi-v7a binaries from NDK r7b can crash non-NEON devices. The files provided with NDK r7b were not configured properly, resulting in crashes on Tegra2-based devices and others when trying to use certain floating-point functions (e.g., cosf, sinf, expf).
-You are strongly recommended to switch to another NDK release.
-" )
-endif()
-
-if( NOT _CMAKE_IN_TRY_COMPILE AND X86 AND ANDROID_STL MATCHES "gnustl" AND ANDROID_NDK_RELEASE STREQUAL "r6" )
- message( WARNING "The x86 system header file from NDK r6 has incorrect definition for ptrdiff_t. You are recommended to upgrade to a newer NDK release or manually patch the header:
-See https://android.googlesource.com/platform/development.git f907f4f9d4e56ccc8093df6fee54454b8bcab6c2
- diff --git a/ndk/platforms/android-9/arch-x86/include/machine/_types.h b/ndk/platforms/android-9/arch-x86/include/machine/_types.h
- index 5e28c64..65892a1 100644
- --- a/ndk/platforms/android-9/arch-x86/include/machine/_types.h
- +++ b/ndk/platforms/android-9/arch-x86/include/machine/_types.h
- @@ -51,7 +51,11 @@ typedef long int ssize_t;
- #endif
- #ifndef _PTRDIFF_T
- #define _PTRDIFF_T
- -typedef long ptrdiff_t;
- +# ifdef __ANDROID__
- + typedef int ptrdiff_t;
- +# else
- + typedef long ptrdiff_t;
- +# endif
- #endif
-" )
-endif()
-
-
-# setup paths and STL for standalone toolchain
-if( BUILD_WITH_STANDALONE_TOOLCHAIN )
- set( ANDROID_TOOLCHAIN_ROOT "${ANDROID_STANDALONE_TOOLCHAIN}" )
- set( ANDROID_CLANG_TOOLCHAIN_ROOT "${ANDROID_STANDALONE_TOOLCHAIN}" )
- set( ANDROID_SYSROOT "${ANDROID_STANDALONE_TOOLCHAIN}/sysroot" )
- set( ANDROID_SYSROOT_INCLUDE "${ANDROID_STANDALONE_TOOLCHAIN}/sysroot/usr/include" )
-
- if( NOT ANDROID_STL STREQUAL "none" )
- set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_STANDALONE_TOOLCHAIN}/include/c++/${ANDROID_COMPILER_VERSION}" )
- if( NOT EXISTS "${ANDROID_STL_INCLUDE_DIRS}" )
- # old location ( pre r8c )
- set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/include/c++/${ANDROID_COMPILER_VERSION}" )
- endif()
- if( (ARMEABI_V7A OR ARMEABI_V7A_HARD) AND EXISTS "${ANDROID_STL_INCLUDE_DIRS}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/${CMAKE_SYSTEM_PROCESSOR}/bits" )
- list( APPEND ANDROID_STL_INCLUDE_DIRS "${ANDROID_STL_INCLUDE_DIRS}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/${CMAKE_SYSTEM_PROCESSOR}" )
- elseif( ARMEABI AND NOT ANDROID_FORCE_ARM_BUILD AND EXISTS "${ANDROID_STL_INCLUDE_DIRS}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/thumb/bits" )
- list( APPEND ANDROID_STL_INCLUDE_DIRS "${ANDROID_STL_INCLUDE_DIRS}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/thumb" )
- else()
- list( APPEND ANDROID_STL_INCLUDE_DIRS "${ANDROID_STL_INCLUDE_DIRS}/${ANDROID_TOOLCHAIN_MACHINE_NAME}" )
- endif()
- # always search static GNU STL to get the location of libsupc++.a
- if( (ARMEABI_V7A OR ARMEABI_V7A_HARD) AND NOT ANDROID_FORCE_ARM_BUILD AND EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/thumb/libstdc++.a" )
- set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/thumb" )
- elseif( (ARMEABI_V7A OR ARMEABI_V7A_HARD) AND EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/libstdc++.a" )
- set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}" )
- elseif( ARMEABI AND NOT ANDROID_FORCE_ARM_BUILD AND EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/thumb/libstdc++.a" )
- set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/thumb" )
- elseif( EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/libstdc++.a" )
- set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib" )
- endif()
- if( __libstl )
- set( __libsupcxx "${__libstl}/libsupc++.a" )
- set( __libstl "${__libstl}/libstdc++.a" )
- endif()
- if( NOT EXISTS "${__libsupcxx}" )
- message( FATAL_ERROR "The required libstdsupc++.a is missing in your standalone toolchain.
- Usually it happens because of bug in make-standalone-toolchain.sh script from NDK r7, r7b and r7c.
- You need to either upgrade to newer NDK or manually copy
- $ANDROID_NDK/sources/cxx-stl/gnu-libstdc++/libs/${ANDROID_NDK_ABI_NAME}/libsupc++.a
- to
- ${__libsupcxx}
- " )
- endif()
- if( ANDROID_STL STREQUAL "gnustl_shared" )
- if( (ARMEABI_V7A OR ARMEABI_V7A_HARD) AND EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/libgnustl_shared.so" )
- set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/libgnustl_shared.so" )
- elseif( ARMEABI AND NOT ANDROID_FORCE_ARM_BUILD AND EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/thumb/libgnustl_shared.so" )
- set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/thumb/libgnustl_shared.so" )
- elseif( EXISTS "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/libgnustl_shared.so" )
- set( __libstl "${ANDROID_STANDALONE_TOOLCHAIN}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/libgnustl_shared.so" )
- endif()
- endif()
- endif()
-endif()
-
-# clang
-if( "${ANDROID_TOOLCHAIN_NAME}" STREQUAL "standalone-clang" )
- set( ANDROID_COMPILER_IS_CLANG 1 )
- execute_process( COMMAND "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/clang${TOOL_OS_SUFFIX}" --version OUTPUT_VARIABLE ANDROID_CLANG_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE )
- string( REGEX MATCH "[0-9]+[.][0-9]+" ANDROID_CLANG_VERSION "${ANDROID_CLANG_VERSION}")
-elseif( "${ANDROID_TOOLCHAIN_NAME}" MATCHES "-clang3[.][0-9]?$" )
- string( REGEX MATCH "3[.][0-9]$" ANDROID_CLANG_VERSION "${ANDROID_TOOLCHAIN_NAME}")
- string( REGEX REPLACE "-clang${ANDROID_CLANG_VERSION}$" "-${ANDROID_COMPILER_VERSION}" ANDROID_GCC_TOOLCHAIN_NAME "${ANDROID_TOOLCHAIN_NAME}" )
- if( NOT EXISTS "${ANDROID_NDK_TOOLCHAINS_PATH}/llvm-${ANDROID_CLANG_VERSION}${ANDROID_NDK_TOOLCHAINS_SUBPATH}/bin/clang${TOOL_OS_SUFFIX}" )
- message( FATAL_ERROR "Could not find the Clang compiler driver" )
- endif()
- set( ANDROID_COMPILER_IS_CLANG 1 )
- set( ANDROID_CLANG_TOOLCHAIN_ROOT "${ANDROID_NDK_TOOLCHAINS_PATH}/llvm-${ANDROID_CLANG_VERSION}${ANDROID_NDK_TOOLCHAINS_SUBPATH}" )
-else()
- set( ANDROID_GCC_TOOLCHAIN_NAME "${ANDROID_TOOLCHAIN_NAME}" )
- unset( ANDROID_COMPILER_IS_CLANG CACHE )
-endif()
-
-string( REPLACE "." "" _clang_name "clang${ANDROID_CLANG_VERSION}" )
-if( NOT EXISTS "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/${_clang_name}${TOOL_OS_SUFFIX}" )
- set( _clang_name "clang" )
-endif()
-
-
-# setup paths and STL for NDK
-if( BUILD_WITH_ANDROID_NDK )
- set( ANDROID_TOOLCHAIN_ROOT "${ANDROID_NDK_TOOLCHAINS_PATH}/${ANDROID_GCC_TOOLCHAIN_NAME}${ANDROID_NDK_TOOLCHAINS_SUBPATH}" )
- set( ANDROID_SYSROOT "${ANDROID_NDK}/platforms/android-${ANDROID_NATIVE_API_LEVEL}/arch-${ANDROID_ARCH_NAME}" )
- if( EXISTS "${ANDROID_SYSROOT}/usr/include" )
- set( ANDROID_SYSROOT_INCLUDE "${ANDROID_SYSROOT}/usr/include" )
- else()
- set( ANDROID_SYSROOT_INCLUDE "${ANDROID_NDK}/sysroot/usr/include" "${ANDROID_NDK}/sysroot/usr/include/${ANDROID_TOOLCHAIN_MACHINE_NAME}" )
- endif()
-
- if( ANDROID_STL STREQUAL "none" )
- # do nothing
- elseif( ANDROID_STL STREQUAL "system" )
- set( ANDROID_RTTI OFF )
- set( ANDROID_EXCEPTIONS OFF )
- set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/cxx-stl/system/include" )
- elseif( ANDROID_STL STREQUAL "system_re" )
- set( ANDROID_RTTI ON )
- set( ANDROID_EXCEPTIONS ON )
- set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/cxx-stl/system/include" )
- elseif( ANDROID_STL MATCHES "gabi" )
- if( ANDROID_NDK_RELEASE_NUM LESS 7000 ) # before r7
- message( FATAL_ERROR "gabi++ is not available in your NDK. You have to upgrade to NDK r7 or newer to use gabi++.")
- endif()
- set( ANDROID_RTTI ON )
- set( ANDROID_EXCEPTIONS OFF )
- set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/cxx-stl/gabi++/include" )
- set( __libstl "${ANDROID_NDK}/sources/cxx-stl/gabi++/libs/${ANDROID_NDK_ABI_NAME}/libgabi++_static.a" )
- elseif( ANDROID_STL MATCHES "stlport" )
- if( NOT ANDROID_NDK_RELEASE_NUM LESS 8004 ) # before r8d
- set( ANDROID_EXCEPTIONS ON )
- else()
- set( ANDROID_EXCEPTIONS OFF )
- endif()
- if( ANDROID_NDK_RELEASE_NUM LESS 7000 ) # before r7
- set( ANDROID_RTTI OFF )
- else()
- set( ANDROID_RTTI ON )
- endif()
- set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/cxx-stl/stlport/stlport" )
- set( __libstl "${ANDROID_NDK}/sources/cxx-stl/stlport/libs/${ANDROID_NDK_ABI_NAME}/libstlport_static.a" )
- elseif( ANDROID_STL MATCHES "gnustl" )
- set( ANDROID_EXCEPTIONS ON )
- set( ANDROID_RTTI ON )
- if( EXISTS "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/${ANDROID_COMPILER_VERSION}" )
- if( ARMEABI_V7A AND ANDROID_COMPILER_VERSION VERSION_EQUAL "4.7" AND ANDROID_NDK_RELEASE STREQUAL "r8d" )
- # gnustl binary for 4.7 compiler is buggy :(
- # TODO: look for right fix
- set( __libstl "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.6" )
- else()
- set( __libstl "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/${ANDROID_COMPILER_VERSION}" )
- endif()
- else()
- set( __libstl "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++" )
- endif()
- set( ANDROID_STL_INCLUDE_DIRS "${__libstl}/include" "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/include" "${__libstl}/include/backward" )
- if( EXISTS "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/libgnustl_static.a" )
- set( __libstl "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/libgnustl_static.a" )
- else()
- set( __libstl "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/libstdc++.a" )
- endif()
- elseif( ANDROID_STL MATCHES "c\\+\\+" )
- set( ANDROID_EXCEPTIONS ON )
- set( ANDROID_RTTI ON )
- set( __libstl "${ANDROID_NDK}/sources/cxx-stl/llvm-libc++" )
- set( __libstl "${__libstl}/libs/${ANDROID_NDK_ABI_NAME}/libc++_static.a" )
- set( ANDROID_STL_INCLUDE_DIRS "${ANDROID_NDK}/sources/android/support/include" "${ANDROID_NDK}/sources/cxx-stl/llvm-libc++/libcxx/include" "${ANDROID_NDK}/sources/cxx-stl/llvm-libc++abi/libcxxabi/include" )
- else()
- message( FATAL_ERROR "Unknown runtime: ${ANDROID_STL}" )
- endif()
-
- # find libsupc++.a - rtti & exceptions
- if( ANDROID_STL STREQUAL "system_re" OR ANDROID_STL MATCHES "gnustl" )
- set( __libsupcxx "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/${ANDROID_COMPILER_VERSION}/libs/${ANDROID_NDK_ABI_NAME}/libsupc++.a" ) # r8b or newer
- if( NOT EXISTS "${__libsupcxx}" )
- set( __libsupcxx "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/libs/${ANDROID_NDK_ABI_NAME}/libsupc++.a" ) # r7-r8
- endif()
- if( NOT EXISTS "${__libsupcxx}" ) # before r7
- if( ARMEABI_V7A )
- if( ANDROID_FORCE_ARM_BUILD )
- set( __libsupcxx "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/libsupc++.a" )
- else()
- set( __libsupcxx "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/${CMAKE_SYSTEM_PROCESSOR}/thumb/libsupc++.a" )
- endif()
- elseif( ARMEABI AND NOT ANDROID_FORCE_ARM_BUILD )
- set( __libsupcxx "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/thumb/libsupc++.a" )
- else()
- set( __libsupcxx "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}/lib/libsupc++.a" )
- endif()
- endif()
- if( NOT EXISTS "${__libsupcxx}")
- message( ERROR "Could not find libsupc++.a for a chosen platform. Either your NDK is not supported or is broken.")
- endif()
- endif()
-endif()
-
-
-# case of shared STL linkage
-if( ANDROID_STL MATCHES "shared" AND DEFINED __libstl )
- string( REPLACE "_static.a" "_shared.so" __libstl "${__libstl}" )
- if( NOT EXISTS "${__libstl}" )
- message( FATAL_ERROR "Unable to find shared library ${__libstl}" )
- endif()
-endif()
-
-
-# ccache support
-__INIT_VARIABLE( _ndk_ccache NDK_CCACHE ENV_NDK_CCACHE )
-if( _ndk_ccache )
- if( DEFINED NDK_CCACHE AND NOT EXISTS NDK_CCACHE )
- unset( NDK_CCACHE CACHE )
- endif()
- find_program( NDK_CCACHE "${_ndk_ccache}" DOC "The path to ccache binary")
-else()
- unset( NDK_CCACHE CACHE )
-endif()
-unset( _ndk_ccache )
-
-
-# setup the cross-compiler
-if( NOT CMAKE_C_COMPILER )
- if( NDK_CCACHE AND NOT ANDROID_SYSROOT MATCHES "[ ;\"]" )
- set( CMAKE_C_COMPILER "${NDK_CCACHE}" CACHE PATH "ccache as C compiler" )
- set( CMAKE_CXX_COMPILER "${NDK_CCACHE}" CACHE PATH "ccache as C++ compiler" )
- if( ANDROID_COMPILER_IS_CLANG )
- set( CMAKE_C_COMPILER_ARG1 "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/${_clang_name}${TOOL_OS_SUFFIX}" CACHE PATH "C compiler")
- set( CMAKE_CXX_COMPILER_ARG1 "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/${_clang_name}++${TOOL_OS_SUFFIX}" CACHE PATH "C++ compiler")
- else()
- set( CMAKE_C_COMPILER_ARG1 "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-gcc${TOOL_OS_SUFFIX}" CACHE PATH "C compiler")
- set( CMAKE_CXX_COMPILER_ARG1 "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-g++${TOOL_OS_SUFFIX}" CACHE PATH "C++ compiler")
- endif()
- else()
- if( ANDROID_COMPILER_IS_CLANG )
- set( CMAKE_C_COMPILER "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/${_clang_name}${TOOL_OS_SUFFIX}" CACHE PATH "C compiler")
- set( CMAKE_CXX_COMPILER "${ANDROID_CLANG_TOOLCHAIN_ROOT}/bin/${_clang_name}++${TOOL_OS_SUFFIX}" CACHE PATH "C++ compiler")
- else()
- set( CMAKE_C_COMPILER "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-gcc${TOOL_OS_SUFFIX}" CACHE PATH "C compiler" )
- set( CMAKE_CXX_COMPILER "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-g++${TOOL_OS_SUFFIX}" CACHE PATH "C++ compiler" )
- endif()
- endif()
- set( CMAKE_ASM_COMPILER "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-gcc${TOOL_OS_SUFFIX}" CACHE PATH "assembler" )
- set( CMAKE_STRIP "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-strip${TOOL_OS_SUFFIX}" CACHE PATH "strip" )
- if( EXISTS "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-gcc-ar${TOOL_OS_SUFFIX}" )
- # Use gcc-ar if we have it for better LTO support.
- set( CMAKE_AR "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-gcc-ar${TOOL_OS_SUFFIX}" CACHE PATH "archive" )
- else()
- set( CMAKE_AR "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-ar${TOOL_OS_SUFFIX}" CACHE PATH "archive" )
- endif()
- set( CMAKE_LINKER "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-ld${TOOL_OS_SUFFIX}" CACHE PATH "linker" )
- set( CMAKE_NM "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-nm${TOOL_OS_SUFFIX}" CACHE PATH "nm" )
- set( CMAKE_OBJCOPY "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-objcopy${TOOL_OS_SUFFIX}" CACHE PATH "objcopy" )
- set( CMAKE_OBJDUMP "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-objdump${TOOL_OS_SUFFIX}" CACHE PATH "objdump" )
- set( CMAKE_RANLIB "${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_MACHINE_NAME}-ranlib${TOOL_OS_SUFFIX}" CACHE PATH "ranlib" )
-endif()
-
-set( _CMAKE_TOOLCHAIN_PREFIX "${ANDROID_TOOLCHAIN_MACHINE_NAME}-" )
-if( CMAKE_VERSION VERSION_LESS 2.8.5 )
- set( CMAKE_ASM_COMPILER_ARG1 "-c" )
-endif()
-if( APPLE )
- find_program( CMAKE_INSTALL_NAME_TOOL NAMES install_name_tool )
- if( NOT CMAKE_INSTALL_NAME_TOOL )
- message( FATAL_ERROR "Could not find install_name_tool, please check your installation." )
- endif()
- mark_as_advanced( CMAKE_INSTALL_NAME_TOOL )
-endif()
-
-# Force set compilers because standard identification works badly for us
-if( CMAKE_VERSION VERSION_LESS 3.5.0 )
- include( CMakeForceCompiler )
- CMAKE_FORCE_C_COMPILER( "${CMAKE_C_COMPILER}" GNU )
-endif()
-if( ANDROID_COMPILER_IS_CLANG )
- set( CMAKE_C_COMPILER_ID Clang )
-endif()
-set( CMAKE_C_PLATFORM_ID Linux )
-if( X86_64 OR MIPS64 OR ARM64_V8A )
- set( CMAKE_C_SIZEOF_DATA_PTR 8 )
-else()
- set( CMAKE_C_SIZEOF_DATA_PTR 4 )
-endif()
-set( CMAKE_C_HAS_ISYSROOT 1 )
-set( CMAKE_C_COMPILER_ABI ELF )
-if( CMAKE_VERSION VERSION_LESS 3.5.0 )
- CMAKE_FORCE_CXX_COMPILER( "${CMAKE_CXX_COMPILER}" GNU )
-endif()
-if( ANDROID_COMPILER_IS_CLANG )
- set( CMAKE_CXX_COMPILER_ID Clang)
-endif()
-set( CMAKE_CXX_PLATFORM_ID Linux )
-set( CMAKE_CXX_SIZEOF_DATA_PTR ${CMAKE_C_SIZEOF_DATA_PTR} )
-set( CMAKE_CXX_HAS_ISYSROOT 1 )
-set( CMAKE_CXX_COMPILER_ABI ELF )
-set( CMAKE_CXX_SOURCE_FILE_EXTENSIONS cc cp cxx cpp CPP c++ C )
-# force ASM compiler (required for CMake < 2.8.5)
-set( CMAKE_ASM_COMPILER_ID_RUN TRUE )
-set( CMAKE_ASM_COMPILER_ID GNU )
-set( CMAKE_ASM_COMPILER_WORKS TRUE )
-set( CMAKE_ASM_COMPILER_FORCED TRUE )
-set( CMAKE_COMPILER_IS_GNUASM 1)
-set( CMAKE_ASM_SOURCE_FILE_EXTENSIONS s S asm )
-
-foreach( lang C CXX ASM )
- if( ANDROID_COMPILER_IS_CLANG )
- set( CMAKE_${lang}_COMPILER_VERSION ${ANDROID_CLANG_VERSION} )
- else()
- set( CMAKE_${lang}_COMPILER_VERSION ${ANDROID_COMPILER_VERSION} )
- endif()
-endforeach()
-
-# flags and definitions
-remove_definitions( -DANDROID )
-add_definitions( -DANDROID )
-
-if( ANDROID_SYSROOT MATCHES "[ ;\"]" )
- if( CMAKE_HOST_WIN32 )
- # try to convert path to 8.3 form
- file( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/cvt83.cmd" "@echo %~s1" )
- execute_process( COMMAND "$ENV{ComSpec}" /c "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/cvt83.cmd" "${ANDROID_SYSROOT}"
- OUTPUT_VARIABLE __path OUTPUT_STRIP_TRAILING_WHITESPACE
- RESULT_VARIABLE __result ERROR_QUIET )
- if( __result EQUAL 0 )
- file( TO_CMAKE_PATH "${__path}" ANDROID_SYSROOT )
- set( ANDROID_CXX_FLAGS "--sysroot=${ANDROID_SYSROOT}" )
- else()
- set( ANDROID_CXX_FLAGS "--sysroot=\"${ANDROID_SYSROOT}\"" )
- endif()
- else()
- set( ANDROID_CXX_FLAGS "'--sysroot=${ANDROID_SYSROOT}'" )
- endif()
- if( NOT _CMAKE_IN_TRY_COMPILE )
- # quotes can break try_compile and compiler identification
- message(WARNING "Path to your Android NDK (or toolchain) has non-alphanumeric symbols.\nThe build might be broken.\n")
- endif()
-else()
- set( ANDROID_CXX_FLAGS "--sysroot=${ANDROID_SYSROOT}" )
-endif()
-
-# NDK flags
-if (ARM64_V8A )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -funwind-tables" )
- set( ANDROID_CXX_FLAGS_RELEASE "-fomit-frame-pointer -fstrict-aliasing" )
- set( ANDROID_CXX_FLAGS_DEBUG "-fno-omit-frame-pointer -fno-strict-aliasing" )
- if( NOT ANDROID_COMPILER_IS_CLANG )
- set( ANDROID_CXX_FLAGS_RELEASE "${ANDROID_CXX_FLAGS_RELEASE} -funswitch-loops -finline-limit=300" )
- endif()
-elseif( ARMEABI OR ARMEABI_V7A OR ARMEABI_V7A_HARD)
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -funwind-tables" )
- if( NOT ANDROID_FORCE_ARM_BUILD AND NOT ARMEABI_V6 )
- set( ANDROID_CXX_FLAGS_RELEASE "-mthumb -fomit-frame-pointer -fno-strict-aliasing" )
- set( ANDROID_CXX_FLAGS_DEBUG "-marm -fno-omit-frame-pointer -fno-strict-aliasing" )
- if( NOT ANDROID_COMPILER_IS_CLANG )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -finline-limit=64" )
- endif()
- else()
- # always compile ARMEABI_V6 in arm mode; otherwise there is no difference from ARMEABI
- set( ANDROID_CXX_FLAGS_RELEASE "-marm -fomit-frame-pointer -fstrict-aliasing" )
- set( ANDROID_CXX_FLAGS_DEBUG "-marm -fno-omit-frame-pointer -fno-strict-aliasing" )
- if( NOT ANDROID_COMPILER_IS_CLANG )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -funswitch-loops -finline-limit=300" )
- endif()
- endif()
-elseif( X86 OR X86_64 )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -funwind-tables" )
- if( NOT ANDROID_COMPILER_IS_CLANG )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -funswitch-loops -finline-limit=300" )
- endif()
- set( ANDROID_CXX_FLAGS_RELEASE "-fomit-frame-pointer -fstrict-aliasing" )
- set( ANDROID_CXX_FLAGS_DEBUG "-fno-omit-frame-pointer -fno-strict-aliasing" )
-elseif( MIPS OR MIPS64 )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -fno-strict-aliasing -finline-functions -funwind-tables -fmessage-length=0" )
- set( ANDROID_CXX_FLAGS_RELEASE "-fomit-frame-pointer" )
- set( ANDROID_CXX_FLAGS_DEBUG "-fno-omit-frame-pointer" )
- if( NOT ANDROID_COMPILER_IS_CLANG )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -fno-inline-functions-called-once -fgcse-after-reload -frerun-cse-after-loop -frename-registers" )
- set( ANDROID_CXX_FLAGS_RELEASE "${ANDROID_CXX_FLAGS_RELEASE} -funswitch-loops -finline-limit=300" )
- endif()
-elseif()
- set( ANDROID_CXX_FLAGS_RELEASE "" )
- set( ANDROID_CXX_FLAGS_DEBUG "" )
-endif()
-
-set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -fsigned-char" ) # good/necessary when porting desktop libraries
-
-if( NOT X86 AND NOT ANDROID_COMPILER_IS_CLANG )
- set( ANDROID_CXX_FLAGS "-Wno-psabi ${ANDROID_CXX_FLAGS}" )
-endif()
-
-if( NOT ANDROID_COMPILER_VERSION VERSION_LESS "4.6" )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -no-canonical-prefixes" ) # see https://android-review.googlesource.com/#/c/47564/
-endif()
-
-# ABI-specific flags
-if( ARMEABI_V7A_HARD )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -march=armv7-a -mfloat-abi=hard -mhard-float -D_NDK_MATH_NO_SOFTFP=1" )
- if( NEON )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -mfpu=neon" )
- elseif( VFPV3 )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -mfpu=vfpv3" )
- else()
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -mfpu=vfpv3-d16" )
- endif()
-elseif( ARMEABI_V7A )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -march=armv7-a -mfloat-abi=softfp" )
- if( NEON )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -mfpu=neon" )
- elseif( VFPV3 )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -mfpu=vfpv3" )
- else()
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -mfpu=vfpv3-d16" )
- endif()
-
-elseif( ARMEABI_V6 )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -march=armv6 -mfloat-abi=softfp -mfpu=vfp" ) # vfp == vfpv2
-elseif( ARMEABI )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -march=armv5te -mtune=xscale -msoft-float" )
-endif()
-
-if( ANDROID_STL MATCHES "gnustl" AND (EXISTS "${__libstl}" OR EXISTS "${__libsupcxx}") )
- set( CMAKE_CXX_CREATE_SHARED_LIBRARY " -o " )
- set( CMAKE_CXX_CREATE_SHARED_MODULE " -o " )
- set( CMAKE_CXX_LINK_EXECUTABLE " -o " )
-else()
- set( CMAKE_CXX_CREATE_SHARED_LIBRARY " -o " )
- set( CMAKE_CXX_CREATE_SHARED_MODULE " -o " )
- set( CMAKE_CXX_LINK_EXECUTABLE " -o " )
-endif()
-
-# STL
-if( EXISTS "${__libstl}" OR EXISTS "${__libsupcxx}" )
- if( EXISTS "${__libstl}" )
- set( CMAKE_CXX_CREATE_SHARED_LIBRARY "${CMAKE_CXX_CREATE_SHARED_LIBRARY} \"${__libstl}\"" )
- set( CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE} \"${__libstl}\"" )
- set( CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} \"${__libstl}\"" )
- endif()
- if( EXISTS "${__libsupcxx}" )
- set( CMAKE_CXX_CREATE_SHARED_LIBRARY "${CMAKE_CXX_CREATE_SHARED_LIBRARY} \"${__libsupcxx}\"" )
- set( CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE} \"${__libsupcxx}\"" )
- set( CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} \"${__libsupcxx}\"" )
- # C objects:
- set( CMAKE_C_CREATE_SHARED_LIBRARY " -o " )
- set( CMAKE_C_CREATE_SHARED_MODULE " -o " )
- set( CMAKE_C_LINK_EXECUTABLE " -o " )
- set( CMAKE_C_CREATE_SHARED_LIBRARY "${CMAKE_C_CREATE_SHARED_LIBRARY} \"${__libsupcxx}\"" )
- set( CMAKE_C_CREATE_SHARED_MODULE "${CMAKE_C_CREATE_SHARED_MODULE} \"${__libsupcxx}\"" )
- set( CMAKE_C_LINK_EXECUTABLE "${CMAKE_C_LINK_EXECUTABLE} \"${__libsupcxx}\"" )
- endif()
- if( ANDROID_STL MATCHES "gnustl" )
- if( NOT EXISTS "${ANDROID_LIBM_PATH}" )
- set( ANDROID_LIBM_PATH -lm )
- endif()
- set( CMAKE_CXX_CREATE_SHARED_LIBRARY "${CMAKE_CXX_CREATE_SHARED_LIBRARY} ${ANDROID_LIBM_PATH}" )
- set( CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE} ${ANDROID_LIBM_PATH}" )
- set( CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} ${ANDROID_LIBM_PATH}" )
- endif()
-endif()
-
-# variables controlling optional build flags
-if( ANDROID_NDK_RELEASE_NUM LESS 7000 ) # before r7
- # libGLESv2.so in NDK's prior to r7 refers to missing external symbols.
- # So this flag option is required for all projects using OpenGL from native.
- __INIT_VARIABLE( ANDROID_SO_UNDEFINED VALUES ON )
-else()
- __INIT_VARIABLE( ANDROID_SO_UNDEFINED VALUES OFF )
-endif()
-__INIT_VARIABLE( ANDROID_NO_UNDEFINED VALUES ON )
-__INIT_VARIABLE( ANDROID_FUNCTION_LEVEL_LINKING VALUES ON )
-__INIT_VARIABLE( ANDROID_GOLD_LINKER VALUES ON )
-__INIT_VARIABLE( ANDROID_NOEXECSTACK VALUES ON )
-__INIT_VARIABLE( ANDROID_RELRO VALUES ON )
-
-set( ANDROID_NO_UNDEFINED ${ANDROID_NO_UNDEFINED} CACHE BOOL "Show all undefined symbols as linker errors" )
-set( ANDROID_SO_UNDEFINED ${ANDROID_SO_UNDEFINED} CACHE BOOL "Allows or disallows undefined symbols in shared libraries" )
-set( ANDROID_FUNCTION_LEVEL_LINKING ${ANDROID_FUNCTION_LEVEL_LINKING} CACHE BOOL "Put each function in separate section and enable garbage collection of unused input sections at link time" )
-set( ANDROID_GOLD_LINKER ${ANDROID_GOLD_LINKER} CACHE BOOL "Enables gold linker" )
-set( ANDROID_NOEXECSTACK ${ANDROID_NOEXECSTACK} CACHE BOOL "Allows or disallows undefined symbols in shared libraries" )
-set( ANDROID_RELRO ${ANDROID_RELRO} CACHE BOOL "Enables RELRO - a memory corruption mitigation technique" )
-mark_as_advanced( ANDROID_NO_UNDEFINED ANDROID_SO_UNDEFINED ANDROID_FUNCTION_LEVEL_LINKING ANDROID_GOLD_LINKER ANDROID_NOEXECSTACK ANDROID_RELRO )
-
-# linker flags
-set( ANDROID_LINKER_FLAGS "" )
-
-if( ARMEABI_V7A )
- # this is *required* to use the following linker flags that routes around
- # a CPU bug in some Cortex-A8 implementations:
- set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,--fix-cortex-a8" )
-endif()
-
-if( ARMEABI_V7A_HARD )
- set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,--no-warn-mismatch -lm_hard" )
-endif()
-
-if( ANDROID_NO_UNDEFINED )
- if( MIPS )
- # there is some sysroot-related problem in mips linker...
- if( NOT ANDROID_SYSROOT MATCHES "[ ;\"]" )
- set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,--no-undefined -Wl,-rpath-link,${ANDROID_SYSROOT}/usr/lib" )
- endif()
- else()
- set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,--no-undefined" )
- endif()
-endif()
-
-if( ANDROID_SO_UNDEFINED )
- set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,-allow-shlib-undefined" )
-endif()
-
-if( ANDROID_FUNCTION_LEVEL_LINKING )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -fdata-sections -ffunction-sections" )
- set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,--gc-sections" )
-endif()
-
-if( ANDROID_COMPILER_VERSION VERSION_EQUAL "4.6" )
- if( ANDROID_GOLD_LINKER AND (CMAKE_HOST_UNIX OR ANDROID_NDK_RELEASE_NUM GREATER 8002) AND (ARMEABI OR ARMEABI_V7A OR ARMEABI_V7A_HARD OR X86) )
- set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -fuse-ld=gold" )
- elseif( ANDROID_NDK_RELEASE_NUM GREATER 8002 ) # after r8b
- set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -fuse-ld=bfd" )
- elseif( ANDROID_NDK_RELEASE STREQUAL "r8b" AND ARMEABI AND NOT _CMAKE_IN_TRY_COMPILE )
- message( WARNING "The default bfd linker from arm GCC 4.6 toolchain can fail with 'unresolvable R_ARM_THM_CALL relocation' error message. See https://code.google.com/p/android/issues/detail?id=35342
- On Linux and OS X host platform you can workaround this problem using gold linker (default).
- Rerun cmake with -DANDROID_GOLD_LINKER=ON option in case of problems.
-" )
- endif()
-endif() # version 4.6
-
-if( ANDROID_NOEXECSTACK )
- if( ANDROID_COMPILER_IS_CLANG )
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -Xclang -mnoexecstack" )
- else()
- set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS} -Wa,--noexecstack" )
- endif()
- set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,-z,noexecstack" )
-endif()
-
-if( ANDROID_RELRO )
- set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} -Wl,-z,relro -Wl,-z,now" )
-endif()
-
-if( ANDROID_COMPILER_IS_CLANG )
- set( ANDROID_CXX_FLAGS "-target ${ANDROID_LLVM_TRIPLE} -Qunused-arguments ${ANDROID_CXX_FLAGS}" )
- if( BUILD_WITH_ANDROID_NDK )
- set( ANDROID_CXX_FLAGS "-gcc-toolchain ${ANDROID_TOOLCHAIN_ROOT} ${ANDROID_CXX_FLAGS}" )
- endif()
-endif()
-
-# cache flags
-set( CMAKE_CXX_FLAGS "" CACHE STRING "c++ flags" )
-set( CMAKE_C_FLAGS "" CACHE STRING "c flags" )
-set( CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "c++ Release flags" )
-set( CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "c Release flags" )
-set( CMAKE_CXX_FLAGS_DEBUG "-O0 -g -DDEBUG -D_DEBUG" CACHE STRING "c++ Debug flags" )
-set( CMAKE_C_FLAGS_DEBUG "-O0 -g -DDEBUG -D_DEBUG" CACHE STRING "c Debug flags" )
-set( CMAKE_SHARED_LINKER_FLAGS "" CACHE STRING "shared linker flags" )
-set( CMAKE_MODULE_LINKER_FLAGS "" CACHE STRING "module linker flags" )
-set( CMAKE_EXE_LINKER_FLAGS "-Wl,-z,nocopyreloc" CACHE STRING "executable linker flags" )
-
-# put flags to cache (for debug purpose only)
-set( ANDROID_CXX_FLAGS "${ANDROID_CXX_FLAGS}" CACHE INTERNAL "Android specific c/c++ flags" )
-set( ANDROID_CXX_FLAGS_RELEASE "${ANDROID_CXX_FLAGS_RELEASE}" CACHE INTERNAL "Android specific c/c++ Release flags" )
-set( ANDROID_CXX_FLAGS_DEBUG "${ANDROID_CXX_FLAGS_DEBUG}" CACHE INTERNAL "Android specific c/c++ Debug flags" )
-set( ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS}" CACHE INTERNAL "Android specific c/c++ linker flags" )
-
-# finish flags
-set( CMAKE_CXX_FLAGS "${ANDROID_CXX_FLAGS} ${CMAKE_CXX_FLAGS}" )
-set( CMAKE_C_FLAGS "${ANDROID_CXX_FLAGS} ${CMAKE_C_FLAGS}" )
-set( CMAKE_CXX_FLAGS_RELEASE "${ANDROID_CXX_FLAGS_RELEASE} ${CMAKE_CXX_FLAGS_RELEASE}" )
-set( CMAKE_C_FLAGS_RELEASE "${ANDROID_CXX_FLAGS_RELEASE} ${CMAKE_C_FLAGS_RELEASE}" )
-set( CMAKE_CXX_FLAGS_DEBUG "${ANDROID_CXX_FLAGS_DEBUG} ${CMAKE_CXX_FLAGS_DEBUG}" )
-set( CMAKE_C_FLAGS_DEBUG "${ANDROID_CXX_FLAGS_DEBUG} ${CMAKE_C_FLAGS_DEBUG}" )
-set( CMAKE_SHARED_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS}" )
-set( CMAKE_MODULE_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} ${CMAKE_MODULE_LINKER_FLAGS}" )
-set( CMAKE_EXE_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}" )
-
-if( MIPS AND BUILD_WITH_ANDROID_NDK AND ANDROID_NDK_RELEASE STREQUAL "r8" )
- set( CMAKE_SHARED_LINKER_FLAGS "-Wl,-T,${ANDROID_NDK_TOOLCHAINS_PATH}/${ANDROID_GCC_TOOLCHAIN_NAME}/mipself.xsc ${CMAKE_SHARED_LINKER_FLAGS}" )
- set( CMAKE_MODULE_LINKER_FLAGS "-Wl,-T,${ANDROID_NDK_TOOLCHAINS_PATH}/${ANDROID_GCC_TOOLCHAIN_NAME}/mipself.xsc ${CMAKE_MODULE_LINKER_FLAGS}" )
- set( CMAKE_EXE_LINKER_FLAGS "-Wl,-T,${ANDROID_NDK_TOOLCHAINS_PATH}/${ANDROID_GCC_TOOLCHAIN_NAME}/mipself.x ${CMAKE_EXE_LINKER_FLAGS}" )
-endif()
-
-# pie/pic
-if( NOT (ANDROID_NATIVE_API_LEVEL LESS 16) AND (NOT DEFINED ANDROID_APP_PIE OR ANDROID_APP_PIE) AND (CMAKE_VERSION VERSION_GREATER 2.8.8) )
- set( CMAKE_POSITION_INDEPENDENT_CODE TRUE )
- set( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE -pie")
-else()
- set( CMAKE_POSITION_INDEPENDENT_CODE FALSE )
- set( CMAKE_CXX_FLAGS "-fpic ${CMAKE_CXX_FLAGS}" )
- set( CMAKE_C_FLAGS "-fpic ${CMAKE_C_FLAGS}" )
-endif()
-
-# configure rtti
-if( DEFINED ANDROID_RTTI AND ANDROID_STL_FORCE_FEATURES )
- if( ANDROID_RTTI )
- set( CMAKE_CXX_FLAGS "-frtti ${CMAKE_CXX_FLAGS}" )
- else()
- set( CMAKE_CXX_FLAGS "-fno-rtti ${CMAKE_CXX_FLAGS}" )
- endif()
-endif()
-
-# configure exceptions
-if( DEFINED ANDROID_EXCEPTIONS AND ANDROID_STL_FORCE_FEATURES )
- if( ANDROID_EXCEPTIONS )
- set( CMAKE_CXX_FLAGS "-fexceptions ${CMAKE_CXX_FLAGS}" )
- set( CMAKE_C_FLAGS "-fexceptions ${CMAKE_C_FLAGS}" )
- else()
- set( CMAKE_CXX_FLAGS "-fno-exceptions ${CMAKE_CXX_FLAGS}" )
- set( CMAKE_C_FLAGS "-fno-exceptions ${CMAKE_C_FLAGS}" )
- endif()
-endif()
-
-# global includes and link directories
-include_directories( SYSTEM "${ANDROID_SYSROOT_INCLUDE}" ${ANDROID_STL_INCLUDE_DIRS} )
-get_filename_component(__android_install_path "${CMAKE_INSTALL_PREFIX}/libs/${ANDROID_NDK_ABI_NAME}" ABSOLUTE) # avoid CMP0015 policy warning
-link_directories( "${__android_install_path}" )
-set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DANDROID -D__ANDROID_API__=${ANDROID_NATIVE_API_LEVEL}" )
-set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DANDROID -D__ANDROID_API__=${ANDROID_NATIVE_API_LEVEL}" )
-
-# detect if need link crtbegin_so.o explicitly
-if( NOT DEFINED ANDROID_EXPLICIT_CRT_LINK )
- set( __cmd "${CMAKE_CXX_CREATE_SHARED_LIBRARY}" )
- string( REPLACE "" "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1}" __cmd "${__cmd}" )
- string( REPLACE "" "${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_ARG1}" __cmd "${__cmd}" )
- string( REPLACE "" "${CMAKE_CXX_FLAGS}" __cmd "${__cmd}" )
- string( REPLACE "" "" __cmd "${__cmd}" )
- string( REPLACE "" "${CMAKE_SHARED_LINKER_FLAGS}" __cmd "${__cmd}" )
- string( REPLACE "" "-shared" __cmd "${__cmd}" )
- string( REPLACE "" "" __cmd "${__cmd}" )
- string( REPLACE "" "" __cmd "${__cmd}" )
- string( REPLACE "" "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/toolchain_crtlink_test.so" __cmd "${__cmd}" )
- string( REPLACE "" "\"${ANDROID_SYSROOT}/usr/lib/crtbegin_so.o\"" __cmd "${__cmd}" )
- string( REPLACE "" "" __cmd "${__cmd}" )
- separate_arguments( __cmd )
- foreach( __var ANDROID_NDK ANDROID_NDK_TOOLCHAINS_PATH ANDROID_STANDALONE_TOOLCHAIN )
- if( ${__var} )
- set( __tmp "${${__var}}" )
- separate_arguments( __tmp )
- string( REPLACE "${__tmp}" "${${__var}}" __cmd "${__cmd}")
- endif()
- endforeach()
- string( REPLACE "'" "" __cmd "${__cmd}" )
- string( REPLACE "\"" "" __cmd "${__cmd}" )
- execute_process( COMMAND ${__cmd} RESULT_VARIABLE __cmd_result OUTPUT_QUIET ERROR_QUIET )
- if( __cmd_result EQUAL 0 )
- set( ANDROID_EXPLICIT_CRT_LINK ON )
- else()
- set( ANDROID_EXPLICIT_CRT_LINK OFF )
- endif()
-endif()
-
-if( ANDROID_EXPLICIT_CRT_LINK )
- set( CMAKE_CXX_CREATE_SHARED_LIBRARY "${CMAKE_CXX_CREATE_SHARED_LIBRARY} \"${ANDROID_SYSROOT}/usr/lib/crtbegin_so.o\"" )
- set( CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE} \"${ANDROID_SYSROOT}/usr/lib/crtbegin_so.o\"" )
-endif()
-
-# setup output directories
-set( CMAKE_INSTALL_PREFIX "${ANDROID_TOOLCHAIN_ROOT}/user" CACHE STRING "path for installing" )
-
-if( DEFINED LIBRARY_OUTPUT_PATH_ROOT
- OR EXISTS "${CMAKE_SOURCE_DIR}/AndroidManifest.xml"
- OR (EXISTS "${CMAKE_SOURCE_DIR}/../AndroidManifest.xml" AND EXISTS "${CMAKE_SOURCE_DIR}/../jni/") )
- set( LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_SOURCE_DIR} CACHE PATH "Root for binaries output, set this to change where Android libs are installed to" )
- if( NOT _CMAKE_IN_TRY_COMPILE )
- if( EXISTS "${CMAKE_SOURCE_DIR}/jni/CMakeLists.txt" )
- set( EXECUTABLE_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/bin/${ANDROID_NDK_ABI_NAME}" CACHE PATH "Output directory for applications" )
- else()
- set( EXECUTABLE_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/bin" CACHE PATH "Output directory for applications" )
- endif()
- set( LIBRARY_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH_ROOT}/libs/${ANDROID_NDK_ABI_NAME}" CACHE PATH "Output directory for Android libs" )
- endif()
-endif()
-
-# copy shaed stl library to build directory
-if( NOT _CMAKE_IN_TRY_COMPILE AND __libstl MATCHES "[.]so$" AND DEFINED LIBRARY_OUTPUT_PATH )
- get_filename_component( __libstlname "${__libstl}" NAME )
- execute_process( COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${__libstl}" "${LIBRARY_OUTPUT_PATH}/${__libstlname}" RESULT_VARIABLE __fileCopyProcess )
- if( NOT __fileCopyProcess EQUAL 0 OR NOT EXISTS "${LIBRARY_OUTPUT_PATH}/${__libstlname}")
- message( SEND_ERROR "Failed copying of ${__libstl} to the ${LIBRARY_OUTPUT_PATH}/${__libstlname}" )
- endif()
- unset( __fileCopyProcess )
- unset( __libstlname )
-endif()
-
-
-# set these global flags for cmake client scripts to change behavior
-set( ANDROID True )
-set( BUILD_ANDROID True )
-
-# where is the target environment
-set( CMAKE_FIND_ROOT_PATH
- "${ANDROID_TOOLCHAIN_ROOT}/bin"
- "${ANDROID_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_MACHINE_NAME}"
- "${ANDROID_SYSROOT}"
- "${ANDROID_NDK}/sysroot" # NDK16+
- "${CMAKE_INSTALL_PREFIX}"
- "${CMAKE_INSTALL_PREFIX}/share" )
-
-# only search for libraries and includes in the ndk toolchain
-if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY)
- set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
-endif()
-
-if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE)
- set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )
-endif()
-
-if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE)
- set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY )
-endif()
-
-if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM)
- set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
-endif()
-
-macro(__cmake_find_root_save_and_reset)
- foreach(v
- CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
- CMAKE_FIND_ROOT_PATH_MODE_INCLUDE
- CMAKE_FIND_ROOT_PATH_MODE_PACKAGE
- CMAKE_FIND_ROOT_PATH_MODE_PROGRAM
- )
- set(__save_${v} ${${v}})
- set(${v} NEVER)
- endforeach()
-endmacro()
-
-macro(__cmake_find_root_restore)
- foreach(v
- CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
- CMAKE_FIND_ROOT_PATH_MODE_INCLUDE
- CMAKE_FIND_ROOT_PATH_MODE_PACKAGE
- CMAKE_FIND_ROOT_PATH_MODE_PROGRAM
- )
- set(${v} ${__save_${v}})
- unset(__save_${v})
- endforeach()
-endmacro()
-
-# macro to find packages on the host OS
-macro( find_host_package )
- __cmake_find_root_save_and_reset()
- if( CMAKE_HOST_WIN32 )
- SET( WIN32 1 )
- SET( UNIX )
- elseif( CMAKE_HOST_APPLE )
- SET( APPLE 1 )
- SET( UNIX )
- endif()
- find_package( ${ARGN} )
- SET( WIN32 )
- SET( APPLE )
- SET( UNIX 1 )
- __cmake_find_root_restore()
-endmacro()
-
-
-# macro to find programs on the host OS
-macro( find_host_program )
- __cmake_find_root_save_and_reset()
- if( CMAKE_HOST_WIN32 )
- SET( WIN32 1 )
- SET( UNIX )
- elseif( CMAKE_HOST_APPLE )
- SET( APPLE 1 )
- SET( UNIX )
- endif()
- find_program( ${ARGN} )
- SET( WIN32 )
- SET( APPLE )
- SET( UNIX 1 )
- __cmake_find_root_restore()
-endmacro()
-
-
-# export toolchain settings for the try_compile() command
-if( NOT _CMAKE_IN_TRY_COMPILE )
- set( __toolchain_config "")
- foreach( __var NDK_CCACHE LIBRARY_OUTPUT_PATH_ROOT ANDROID_FORBID_SYGWIN
- ANDROID_NDK_HOST_X64
- ANDROID_NDK
- ANDROID_NDK_LAYOUT
- ANDROID_STANDALONE_TOOLCHAIN
- ANDROID_TOOLCHAIN_NAME
- ANDROID_ABI
- ANDROID_NATIVE_API_LEVEL
- ANDROID_STL
- ANDROID_STL_FORCE_FEATURES
- ANDROID_FORCE_ARM_BUILD
- ANDROID_NO_UNDEFINED
- ANDROID_SO_UNDEFINED
- ANDROID_FUNCTION_LEVEL_LINKING
- ANDROID_GOLD_LINKER
- ANDROID_NOEXECSTACK
- ANDROID_RELRO
- ANDROID_LIBM_PATH
- ANDROID_EXPLICIT_CRT_LINK
- ANDROID_APP_PIE
- )
- if( DEFINED ${__var} )
- if( ${__var} MATCHES " ")
- set( __toolchain_config "${__toolchain_config}set( ${__var} \"${${__var}}\" CACHE INTERNAL \"\" )\n" )
- else()
- set( __toolchain_config "${__toolchain_config}set( ${__var} ${${__var}} CACHE INTERNAL \"\" )\n" )
- endif()
- endif()
- endforeach()
- file( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/android.toolchain.config.cmake" "${__toolchain_config}" )
- unset( __toolchain_config )
-endif()
-
-
-# force cmake to produce / instead of \ in build commands for Ninja generator
-if( CMAKE_GENERATOR MATCHES "Ninja" AND CMAKE_HOST_WIN32 )
- # it is a bad hack after all
- # CMake generates Ninja makefiles with UNIX paths only if it thinks that we are going to build with MinGW
- set( CMAKE_COMPILER_IS_MINGW TRUE ) # tell CMake that we are MinGW
- set( CMAKE_CROSSCOMPILING TRUE ) # stop recursion
- enable_language( C )
- enable_language( CXX )
- # unset( CMAKE_COMPILER_IS_MINGW ) # can't unset because CMake does not convert back-slashes in response files without it
- unset( MINGW )
-endif()
-
-
-# Variables controlling behavior or set by cmake toolchain:
-# ANDROID_ABI : "armeabi-v7a" (default), "armeabi", "armeabi-v7a with NEON", "armeabi-v7a-hard with NEON", "armeabi-v7a with VFPV3", "armeabi-v6 with VFP", "x86", "mips", "arm64-v8a", "x86_64", "mips64"
-# ANDROID_NATIVE_API_LEVEL : 3,4,5,8,9,14,15,16,17,18,19,21 (depends on NDK version)
-# ANDROID_STL : gnustl_static/gnustl_shared/stlport_static/stlport_shared/gabi++_static/gabi++_shared/system_re/system/none
-# ANDROID_FORBID_SYGWIN : ON/OFF
-# ANDROID_NO_UNDEFINED : ON/OFF
-# ANDROID_SO_UNDEFINED : OFF/ON (default depends on NDK version)
-# ANDROID_FUNCTION_LEVEL_LINKING : ON/OFF
-# ANDROID_GOLD_LINKER : ON/OFF
-# ANDROID_NOEXECSTACK : ON/OFF
-# ANDROID_RELRO : ON/OFF
-# ANDROID_FORCE_ARM_BUILD : ON/OFF
-# ANDROID_STL_FORCE_FEATURES : ON/OFF
-# ANDROID_LIBM_PATH : path to libm.so (set to something like $(TOP)/out/target/product//obj/lib/libm.so) to workaround unresolved `sincos`
-# Can be set only at the first run:
-# ANDROID_NDK : path to your NDK install
-# NDK_CCACHE : path to your ccache executable
-# ANDROID_TOOLCHAIN_NAME : the NDK name of compiler toolchain
-# ANDROID_NDK_HOST_X64 : try to use x86_64 toolchain (default for x64 host systems)
-# ANDROID_NDK_LAYOUT : the inner NDK structure (RELEASE, LINARO, ANDROID)
-# LIBRARY_OUTPUT_PATH_ROOT :
-# ANDROID_STANDALONE_TOOLCHAIN
-#
-# Primary read-only variables:
-# ANDROID : always TRUE
-# ARMEABI : TRUE for arm v6 and older devices
-# ARMEABI_V6 : TRUE for arm v6
-# ARMEABI_V7A : TRUE for arm v7a
-# ARMEABI_V7A_HARD : TRUE for arm v7a with hardfp
-# ARM64_V8A : TRUE for arm64-v8a
-# NEON : TRUE if NEON unit is enabled
-# VFPV3 : TRUE if VFP version 3 is enabled
-# X86 : TRUE if configured for x86
-# X86_64 : TRUE if configured for x86_64
-# MIPS : TRUE if configured for mips
-# MIPS64 : TRUE if configured for mips64
-# BUILD_WITH_ANDROID_NDK : TRUE if NDK is used
-# BUILD_WITH_STANDALONE_TOOLCHAIN : TRUE if standalone toolchain is used
-# ANDROID_NDK_HOST_SYSTEM_NAME : "windows", "linux-x86" or "darwin-x86" depending on host platform
-# ANDROID_NDK_ABI_NAME : "armeabi", "armeabi-v7a", "armeabi-v7a-hard", "x86", "mips", "arm64-v8a", "x86_64", "mips64" depending on ANDROID_ABI
-# ANDROID_NDK_RELEASE : from r5 to r10d; set only for NDK
-# ANDROID_NDK_RELEASE_NUM : numeric ANDROID_NDK_RELEASE version (1000*major+minor)
-# ANDROID_ARCH_NAME : "arm", "x86", "mips", "arm64", "x86_64", "mips64" depending on ANDROID_ABI
-# ANDROID_SYSROOT : path to the compiler sysroot
-# ANDROID_SYSROOT_INCLUDE : paths to system include paths
-# TOOL_OS_SUFFIX : "" or ".exe" depending on host platform
-# ANDROID_COMPILER_IS_CLANG : TRUE if clang compiler is used
-#
-# Secondary (less stable) read-only variables:
-# ANDROID_COMPILER_VERSION : GCC version used (not Clang version)
-# ANDROID_CLANG_VERSION : version of clang compiler if clang is used
-# ANDROID_CXX_FLAGS : C/C++ compiler flags required by Android platform
-# ANDROID_SUPPORTED_ABIS : list of currently allowed values for ANDROID_ABI
-# ANDROID_TOOLCHAIN_MACHINE_NAME : "arm-linux-androideabi", "arm-eabi" or "i686-android-linux"
-# ANDROID_TOOLCHAIN_ROOT : path to the top level of toolchain (standalone or placed inside NDK)
-# ANDROID_CLANG_TOOLCHAIN_ROOT : path to clang tools
-# ANDROID_SUPPORTED_NATIVE_API_LEVELS : list of native API levels found inside NDK
-# ANDROID_STL_INCLUDE_DIRS : stl include paths
-# ANDROID_RTTI : if rtti is enabled by the runtime
-# ANDROID_EXCEPTIONS : if exceptions are enabled by the runtime
-# ANDROID_GCC_TOOLCHAIN_NAME : read-only, differs from ANDROID_TOOLCHAIN_NAME only if clang is used
-#
-# Defaults:
-# ANDROID_DEFAULT_NDK_API_LEVEL
-# ANDROID_DEFAULT_NDK_API_LEVEL_${ARCH}
-# ANDROID_NDK_SEARCH_PATHS
-# ANDROID_SUPPORTED_ABIS_${ARCH}
-# ANDROID_SUPPORTED_NDK_VERSIONS
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cv.h b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cv.h
deleted file mode 100755
index 19a74e2..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cv.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*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_
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cv.hpp b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cv.hpp
deleted file mode 100755
index 8673956..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cv.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*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
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cvaux.h b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cvaux.h
deleted file mode 100755
index c0367cc..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cvaux.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*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. */
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cvaux.hpp b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cvaux.hpp
deleted file mode 100755
index 4888eef..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cvaux.hpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/*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
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cvwimage.h b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cvwimage.h
deleted file mode 100755
index ec0ab14..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cvwimage.h
+++ /dev/null
@@ -1,46 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// 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
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cxcore.h b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cxcore.h
deleted file mode 100755
index dc070c7..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cxcore.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*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
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cxcore.hpp b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cxcore.hpp
deleted file mode 100755
index c371677..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cxcore.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/*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
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cxeigen.hpp b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cxeigen.hpp
deleted file mode 100755
index 1d3df91..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cxeigen.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/*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
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cxmisc.h b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cxmisc.h
deleted file mode 100755
index 9b9bc82..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/cxmisc.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef OPENCV_OLD_CXMISC_H
-#define OPENCV_OLD_CXMISC_H
-
-#ifdef __cplusplus
-# include "opencv2/core/utility.hpp"
-#endif
-
-#endif
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/highgui.h b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/highgui.h
deleted file mode 100755
index 69b394e..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/highgui.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*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
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/ml.h b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/ml.h
deleted file mode 100755
index 0c376ba..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv/ml.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*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
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv2/calib3d.hpp b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv2/calib3d.hpp
deleted file mode 100755
index fcd295d..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv2/calib3d.hpp
+++ /dev/null
@@ -1,2458 +0,0 @@
-/*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_HPP
-#define OPENCV_CALIB3D_HPP
-
-#include "opencv2/core.hpp"
-#include "opencv2/features2d.hpp"
-#include "opencv2/core/affine.hpp"
-
-/**
- @defgroup calib3d Camera Calibration and 3D Reconstruction
-
-The functions in this section use a so-called pinhole camera model. In this model, a scene view is
-formed by projecting 3D points into the image plane using a perspective transformation.
-
-\f[s \; m' = A [R|t] M'\f]
-
-or
-
-\f[s \vecthree{u}{v}{1} = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}
-\begin{bmatrix}
-r_{11} & r_{12} & r_{13} & t_1 \\
-r_{21} & r_{22} & r_{23} & t_2 \\
-r_{31} & r_{32} & r_{33} & t_3
-\end{bmatrix}
-\begin{bmatrix}
-X \\
-Y \\
-Z \\
-1
-\end{bmatrix}\f]
-
-where:
-
-- \f$(X, Y, Z)\f$ are the coordinates of a 3D point in the world coordinate space
-- \f$(u, v)\f$ are the coordinates of the projection point in pixels
-- \f$A\f$ is a camera matrix, or a matrix of intrinsic parameters
-- \f$(cx, cy)\f$ is a principal point that is usually at the image center
-- \f$fx, fy\f$ are the focal lengths expressed in pixel units.
-
-Thus, if an image from the camera is scaled by a factor, all of these parameters should be scaled
-(multiplied/divided, respectively) by the same factor. The matrix of intrinsic parameters does not
-depend on the scene viewed. So, once estimated, it can be re-used as long as the focal length is
-fixed (in case of zoom lens). The joint rotation-translation matrix \f$[R|t]\f$ is called a matrix of
-extrinsic parameters. It is used to describe the camera motion around a static scene, or vice versa,
-rigid motion of an object in front of a still camera. That is, \f$[R|t]\f$ translates coordinates of a
-point \f$(X, Y, Z)\f$ to a coordinate system, fixed with respect to the camera. The transformation above
-is equivalent to the following (when \f$z \ne 0\f$ ):
-
-\f[\begin{array}{l}
-\vecthree{x}{y}{z} = R \vecthree{X}{Y}{Z} + t \\
-x' = x/z \\
-y' = y/z \\
-u = f_x*x' + c_x \\
-v = f_y*y' + c_y
-\end{array}\f]
-
-The following figure illustrates the pinhole camera model.
-
-
-
-Real lenses usually have some distortion, mostly radial distortion and slight tangential distortion.
-So, the above model is extended as:
-
-\f[\begin{array}{l}
-\vecthree{x}{y}{z} = R \vecthree{X}{Y}{Z} + t \\
-x' = x/z \\
-y' = y/z \\
-x'' = x' \frac{1 + k_1 r^2 + k_2 r^4 + k_3 r^6}{1 + k_4 r^2 + k_5 r^4 + k_6 r^6} + 2 p_1 x' y' + p_2(r^2 + 2 x'^2) + s_1 r^2 + s_2 r^4 \\
-y'' = y' \frac{1 + k_1 r^2 + k_2 r^4 + k_3 r^6}{1 + k_4 r^2 + k_5 r^4 + k_6 r^6} + p_1 (r^2 + 2 y'^2) + 2 p_2 x' y' + s_3 r^2 + s_4 r^4 \\
-\text{where} \quad r^2 = x'^2 + y'^2 \\
-u = f_x*x'' + c_x \\
-v = f_y*y'' + c_y
-\end{array}\f]
-
-\f$k_1\f$, \f$k_2\f$, \f$k_3\f$, \f$k_4\f$, \f$k_5\f$, and \f$k_6\f$ are radial distortion coefficients. \f$p_1\f$ and \f$p_2\f$ are
-tangential distortion coefficients. \f$s_1\f$, \f$s_2\f$, \f$s_3\f$, and \f$s_4\f$, are the thin prism distortion
-coefficients. Higher-order coefficients are not considered in OpenCV.
-
-The next figure shows two common types of radial distortion: barrel distortion (typically \f$ k_1 > 0 \f$ and pincushion distortion (typically \f$ k_1 < 0 \f$).
-
-
-
-In some cases the image sensor may be tilted in order to focus an oblique plane in front of the
-camera (Scheimpfug condition). This can be useful for particle image velocimetry (PIV) or
-triangulation with a laser fan. The tilt causes a perspective distortion of \f$x''\f$ and
-\f$y''\f$. This distortion can be modelled in the following way, see e.g. @cite Louhichi07.
-
-\f[\begin{array}{l}
-s\vecthree{x'''}{y'''}{1} =
-\vecthreethree{R_{33}(\tau_x, \tau_y)}{0}{-R_{13}(\tau_x, \tau_y)}
-{0}{R_{33}(\tau_x, \tau_y)}{-R_{23}(\tau_x, \tau_y)}
-{0}{0}{1} R(\tau_x, \tau_y) \vecthree{x''}{y''}{1}\\
-u = f_x*x''' + c_x \\
-v = f_y*y''' + c_y
-\end{array}\f]
-
-where the matrix \f$R(\tau_x, \tau_y)\f$ is defined by two rotations with angular parameter \f$\tau_x\f$
-and \f$\tau_y\f$, respectively,
-
-\f[
-R(\tau_x, \tau_y) =
-\vecthreethree{\cos(\tau_y)}{0}{-\sin(\tau_y)}{0}{1}{0}{\sin(\tau_y)}{0}{\cos(\tau_y)}
-\vecthreethree{1}{0}{0}{0}{\cos(\tau_x)}{\sin(\tau_x)}{0}{-\sin(\tau_x)}{\cos(\tau_x)} =
-\vecthreethree{\cos(\tau_y)}{\sin(\tau_y)\sin(\tau_x)}{-\sin(\tau_y)\cos(\tau_x)}
-{0}{\cos(\tau_x)}{\sin(\tau_x)}
-{\sin(\tau_y)}{-\cos(\tau_y)\sin(\tau_x)}{\cos(\tau_y)\cos(\tau_x)}.
-\f]
-
-In the functions below the coefficients are passed or returned as
-
-\f[(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f]
-
-vector. That is, if the vector contains four elements, it means that \f$k_3=0\f$ . The distortion
-coefficients do not depend on the scene viewed. Thus, they also belong to the intrinsic camera
-parameters. And they remain the same regardless of the captured image resolution. If, for example, a
-camera has been calibrated on images of 320 x 240 resolution, absolutely the same distortion
-coefficients can be used for 640 x 480 images from the same camera while \f$f_x\f$, \f$f_y\f$, \f$c_x\f$, and
-\f$c_y\f$ need to be scaled appropriately.
-
-The functions below use the above model to do the following:
-
-- Project 3D points to the image plane given intrinsic and extrinsic parameters.
-- Compute extrinsic parameters given intrinsic parameters, a few 3D points, and their
-projections.
-- Estimate intrinsic and extrinsic camera parameters from several views of a known calibration
-pattern (every view is described by several 3D-2D point correspondences).
-- Estimate the relative position and orientation of the stereo camera "heads" and compute the
-*rectification* transformation that makes the camera optical axes parallel.
-
-@note
- - A calibration sample for 3 cameras in horizontal position can be found at
- opencv_source_code/samples/cpp/3calibration.cpp
- - A calibration sample based on a sequence of images can be found at
- opencv_source_code/samples/cpp/calibration.cpp
- - A calibration sample in order to do 3D reconstruction can be found at
- opencv_source_code/samples/cpp/build3dmodel.cpp
- - A calibration sample of an artificially generated camera and chessboard patterns can be
- found at opencv_source_code/samples/cpp/calibration_artificial.cpp
- - A calibration example on stereo calibration can be found at
- opencv_source_code/samples/cpp/stereo_calib.cpp
- - A calibration example on stereo matching can be found at
- opencv_source_code/samples/cpp/stereo_match.cpp
- - (Python) A camera calibration sample can be found at
- opencv_source_code/samples/python/calibrate.py
-
- @{
- @defgroup calib3d_fisheye Fisheye camera model
-
- Definitions: Let P be a point in 3D of coordinates X in the world reference frame (stored in the
- matrix X) The coordinate vector of P in the camera reference frame is:
-
- \f[Xc = R X + T\f]
-
- where R is the rotation matrix corresponding to the rotation vector om: R = rodrigues(om); call x, y
- and z the 3 coordinates of Xc:
-
- \f[x = Xc_1 \\ y = Xc_2 \\ z = Xc_3\f]
-
- The pinhole projection coordinates of P is [a; b] where
-
- \f[a = x / z \ and \ b = y / z \\ r^2 = a^2 + b^2 \\ \theta = atan(r)\f]
-
- Fisheye distortion:
-
- \f[\theta_d = \theta (1 + k_1 \theta^2 + k_2 \theta^4 + k_3 \theta^6 + k_4 \theta^8)\f]
-
- The distorted point coordinates are [x'; y'] where
-
- \f[x' = (\theta_d / r) a \\ y' = (\theta_d / r) b \f]
-
- Finally, conversion into pixel coordinates: The final pixel coordinates vector [u; v] where:
-
- \f[u = f_x (x' + \alpha y') + c_x \\
- v = f_y y' + c_y\f]
-
- @defgroup calib3d_c C API
-
- @}
- */
-
-namespace cv
-{
-
-//! @addtogroup calib3d
-//! @{
-
-//! type of the robust estimation algorithm
-enum { LMEDS = 4, //!< least-median of squares algorithm
- RANSAC = 8, //!< RANSAC algorithm
- RHO = 16 //!< RHO algorithm
- };
-
-enum { SOLVEPNP_ITERATIVE = 0,
- SOLVEPNP_EPNP = 1, //!< EPnP: Efficient Perspective-n-Point Camera Pose Estimation @cite lepetit2009epnp
- SOLVEPNP_P3P = 2, //!< Complete Solution Classification for the Perspective-Three-Point Problem @cite gao2003complete
- SOLVEPNP_DLS = 3, //!< A Direct Least-Squares (DLS) Method for PnP @cite hesch2011direct
- SOLVEPNP_UPNP = 4, //!< Exhaustive Linearization for Robust Camera Pose and Focal Length Estimation @cite penate2013exhaustive
- SOLVEPNP_AP3P = 5, //!< An Efficient Algebraic Solution to the Perspective-Three-Point Problem @cite Ke17
- SOLVEPNP_MAX_COUNT //!< Used for count
-};
-
-enum { CALIB_CB_ADAPTIVE_THRESH = 1,
- CALIB_CB_NORMALIZE_IMAGE = 2,
- CALIB_CB_FILTER_QUADS = 4,
- CALIB_CB_FAST_CHECK = 8
- };
-
-enum { CALIB_CB_SYMMETRIC_GRID = 1,
- CALIB_CB_ASYMMETRIC_GRID = 2,
- CALIB_CB_CLUSTERING = 4
- };
-
-enum { CALIB_USE_INTRINSIC_GUESS = 0x00001,
- CALIB_FIX_ASPECT_RATIO = 0x00002,
- CALIB_FIX_PRINCIPAL_POINT = 0x00004,
- CALIB_ZERO_TANGENT_DIST = 0x00008,
- CALIB_FIX_FOCAL_LENGTH = 0x00010,
- CALIB_FIX_K1 = 0x00020,
- CALIB_FIX_K2 = 0x00040,
- CALIB_FIX_K3 = 0x00080,
- CALIB_FIX_K4 = 0x00800,
- CALIB_FIX_K5 = 0x01000,
- CALIB_FIX_K6 = 0x02000,
- CALIB_RATIONAL_MODEL = 0x04000,
- CALIB_THIN_PRISM_MODEL = 0x08000,
- CALIB_FIX_S1_S2_S3_S4 = 0x10000,
- CALIB_TILTED_MODEL = 0x40000,
- CALIB_FIX_TAUX_TAUY = 0x80000,
- CALIB_USE_QR = 0x100000, //!< use QR instead of SVD decomposition for solving. Faster but potentially less precise
- CALIB_FIX_TANGENT_DIST = 0x200000,
- // only for stereo
- CALIB_FIX_INTRINSIC = 0x00100,
- CALIB_SAME_FOCAL_LENGTH = 0x00200,
- // for stereo rectification
- CALIB_ZERO_DISPARITY = 0x00400,
- CALIB_USE_LU = (1 << 17), //!< use LU instead of SVD decomposition for solving. much faster but potentially less precise
- CALIB_USE_EXTRINSIC_GUESS = (1 << 22), //!< for stereoCalibrate
- };
-
-//! the algorithm for finding fundamental matrix
-enum { FM_7POINT = 1, //!< 7-point algorithm
- FM_8POINT = 2, //!< 8-point algorithm
- FM_LMEDS = 4, //!< least-median algorithm. 7-point algorithm is used.
- FM_RANSAC = 8 //!< RANSAC algorithm. It needs at least 15 points. 7-point algorithm is used.
- };
-
-
-
-/** @brief Converts a rotation matrix to a rotation vector or vice versa.
-
-@param src Input rotation vector (3x1 or 1x3) or rotation matrix (3x3).
-@param dst Output rotation matrix (3x3) or rotation vector (3x1 or 1x3), respectively.
-@param jacobian Optional output Jacobian matrix, 3x9 or 9x3, which is a matrix of partial
-derivatives of the output array components with respect to the input array components.
-
-\f[\begin{array}{l} \theta \leftarrow norm(r) \\ r \leftarrow r/ \theta \\ R = \cos{\theta} I + (1- \cos{\theta} ) r r^T + \sin{\theta} \vecthreethree{0}{-r_z}{r_y}{r_z}{0}{-r_x}{-r_y}{r_x}{0} \end{array}\f]
-
-Inverse transformation can be also done easily, since
-
-\f[\sin ( \theta ) \vecthreethree{0}{-r_z}{r_y}{r_z}{0}{-r_x}{-r_y}{r_x}{0} = \frac{R - R^T}{2}\f]
-
-A rotation vector is a convenient and most compact representation of a rotation matrix (since any
-rotation matrix has just 3 degrees of freedom). The representation is used in the global 3D geometry
-optimization procedures like calibrateCamera, stereoCalibrate, or solvePnP .
- */
-CV_EXPORTS_W void Rodrigues( InputArray src, OutputArray dst, OutputArray jacobian = noArray() );
-
-/** @example pose_from_homography.cpp
- An example program about pose estimation from coplanar points
-
- Check @ref tutorial_homography "the corresponding tutorial" for more details
- */
-
-/** @brief Finds a perspective transformation between two planes.
-
-@param srcPoints Coordinates of the points in the original plane, a matrix of the type CV_32FC2
-or vector\ .
-@param dstPoints Coordinates of the points in the target plane, a matrix of the type CV_32FC2 or
-a vector\ .
-@param method Method used to compute a homography matrix. The following methods are possible:
-- **0** - a regular method using all the points, i.e., the least squares method
-- **RANSAC** - RANSAC-based robust method
-- **LMEDS** - Least-Median robust method
-- **RHO** - PROSAC-based robust method
-@param ransacReprojThreshold Maximum allowed reprojection error to treat a point pair as an inlier
-(used in the RANSAC and RHO methods only). That is, if
-\f[\| \texttt{dstPoints} _i - \texttt{convertPointsHomogeneous} ( \texttt{H} * \texttt{srcPoints} _i) \|_2 > \texttt{ransacReprojThreshold}\f]
-then the point \f$i\f$ is considered as an outlier. If srcPoints and dstPoints are measured in pixels,
-it usually makes sense to set this parameter somewhere in the range of 1 to 10.
-@param mask Optional output mask set by a robust method ( RANSAC or LMEDS ). Note that the input
-mask values are ignored.
-@param maxIters The maximum number of RANSAC iterations.
-@param confidence Confidence level, between 0 and 1.
-
-The function finds and returns the perspective transformation \f$H\f$ between the source and the
-destination planes:
-
-\f[s_i \vecthree{x'_i}{y'_i}{1} \sim H \vecthree{x_i}{y_i}{1}\f]
-
-so that the back-projection error
-
-\f[\sum _i \left ( x'_i- \frac{h_{11} x_i + h_{12} y_i + h_{13}}{h_{31} x_i + h_{32} y_i + h_{33}} \right )^2+ \left ( y'_i- \frac{h_{21} x_i + h_{22} y_i + h_{23}}{h_{31} x_i + h_{32} y_i + h_{33}} \right )^2\f]
-
-is minimized. If the parameter method is set to the default value 0, the function uses all the point
-pairs to compute an initial homography estimate with a simple least-squares scheme.
-
-However, if not all of the point pairs ( \f$srcPoints_i\f$, \f$dstPoints_i\f$ ) fit the rigid perspective
-transformation (that is, there are some outliers), this initial estimate will be poor. In this case,
-you can use one of the three robust methods. The methods RANSAC, LMeDS and RHO try many different
-random subsets of the corresponding point pairs (of four pairs each, collinear pairs are discarded), estimate the homography matrix
-using this subset and a simple least-squares algorithm, and then compute the quality/goodness of the
-computed homography (which is the number of inliers for RANSAC or the least median re-projection error for
-LMeDS). The best subset is then used to produce the initial estimate of the homography matrix and
-the mask of inliers/outliers.
-
-Regardless of the method, robust or not, the computed homography matrix is refined further (using
-inliers only in case of a robust method) with the Levenberg-Marquardt method to reduce the
-re-projection error even more.
-
-The methods RANSAC and RHO can handle practically any ratio of outliers but need a threshold to
-distinguish inliers from outliers. The method LMeDS does not need any threshold but it works
-correctly only when there are more than 50% of inliers. Finally, if there are no outliers and the
-noise is rather small, use the default method (method=0).
-
-The function is used to find initial intrinsic and extrinsic matrices. Homography matrix is
-determined up to a scale. Thus, it is normalized so that \f$h_{33}=1\f$. Note that whenever an \f$H\f$ matrix
-cannot be estimated, an empty one will be returned.
-
-@sa
-getAffineTransform, estimateAffine2D, estimateAffinePartial2D, getPerspectiveTransform, warpPerspective,
-perspectiveTransform
- */
-CV_EXPORTS_W Mat findHomography( InputArray srcPoints, InputArray dstPoints,
- int method = 0, double ransacReprojThreshold = 3,
- OutputArray mask=noArray(), const int maxIters = 2000,
- const double confidence = 0.995);
-
-/** @overload */
-CV_EXPORTS Mat findHomography( InputArray srcPoints, InputArray dstPoints,
- OutputArray mask, int method = 0, double ransacReprojThreshold = 3 );
-
-/** @brief Computes an RQ decomposition of 3x3 matrices.
-
-@param src 3x3 input matrix.
-@param mtxR Output 3x3 upper-triangular matrix.
-@param mtxQ Output 3x3 orthogonal matrix.
-@param Qx Optional output 3x3 rotation matrix around x-axis.
-@param Qy Optional output 3x3 rotation matrix around y-axis.
-@param Qz Optional output 3x3 rotation matrix around z-axis.
-
-The function computes a RQ decomposition using the given rotations. This function is used in
-decomposeProjectionMatrix to decompose the left 3x3 submatrix of a projection matrix into a camera
-and a rotation matrix.
-
-It optionally returns three rotation matrices, one for each axis, and the three Euler angles in
-degrees (as the return value) that could be used in OpenGL. Note, there is always more than one
-sequence of rotations about the three principal axes that results in the same orientation of an
-object, e.g. see @cite Slabaugh . Returned tree rotation matrices and corresponding three Euler angles
-are only one of the possible solutions.
- */
-CV_EXPORTS_W Vec3d RQDecomp3x3( InputArray src, OutputArray mtxR, OutputArray mtxQ,
- OutputArray Qx = noArray(),
- OutputArray Qy = noArray(),
- OutputArray Qz = noArray());
-
-/** @brief Decomposes a projection matrix into a rotation matrix and a camera matrix.
-
-@param projMatrix 3x4 input projection matrix P.
-@param cameraMatrix Output 3x3 camera matrix K.
-@param rotMatrix Output 3x3 external rotation matrix R.
-@param transVect Output 4x1 translation vector T.
-@param rotMatrixX Optional 3x3 rotation matrix around x-axis.
-@param rotMatrixY Optional 3x3 rotation matrix around y-axis.
-@param rotMatrixZ Optional 3x3 rotation matrix around z-axis.
-@param eulerAngles Optional three-element vector containing three Euler angles of rotation in
-degrees.
-
-The function computes a decomposition of a projection matrix into a calibration and a rotation
-matrix and the position of a camera.
-
-It optionally returns three rotation matrices, one for each axis, and three Euler angles that could
-be used in OpenGL. Note, there is always more than one sequence of rotations about the three
-principal axes that results in the same orientation of an object, e.g. see @cite Slabaugh . Returned
-tree rotation matrices and corresponding three Euler angles are only one of the possible solutions.
-
-The function is based on RQDecomp3x3 .
- */
-CV_EXPORTS_W void decomposeProjectionMatrix( InputArray projMatrix, OutputArray cameraMatrix,
- OutputArray rotMatrix, OutputArray transVect,
- OutputArray rotMatrixX = noArray(),
- OutputArray rotMatrixY = noArray(),
- OutputArray rotMatrixZ = noArray(),
- OutputArray eulerAngles =noArray() );
-
-/** @brief Computes partial derivatives of the matrix product for each multiplied matrix.
-
-@param A First multiplied matrix.
-@param B Second multiplied matrix.
-@param dABdA First output derivative matrix d(A\*B)/dA of size
-\f$\texttt{A.rows*B.cols} \times {A.rows*A.cols}\f$ .
-@param dABdB Second output derivative matrix d(A\*B)/dB of size
-\f$\texttt{A.rows*B.cols} \times {B.rows*B.cols}\f$ .
-
-The function computes partial derivatives of the elements of the matrix product \f$A*B\f$ with regard to
-the elements of each of the two input matrices. The function is used to compute the Jacobian
-matrices in stereoCalibrate but can also be used in any other similar optimization function.
- */
-CV_EXPORTS_W void matMulDeriv( InputArray A, InputArray B, OutputArray dABdA, OutputArray dABdB );
-
-/** @brief Combines two rotation-and-shift transformations.
-
-@param rvec1 First rotation vector.
-@param tvec1 First translation vector.
-@param rvec2 Second rotation vector.
-@param tvec2 Second translation vector.
-@param rvec3 Output rotation vector of the superposition.
-@param tvec3 Output translation vector of the superposition.
-@param dr3dr1
-@param dr3dt1
-@param dr3dr2
-@param dr3dt2
-@param dt3dr1
-@param dt3dt1
-@param dt3dr2
-@param dt3dt2 Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and
-tvec2, respectively.
-
-The functions compute:
-
-\f[\begin{array}{l} \texttt{rvec3} = \mathrm{rodrigues} ^{-1} \left ( \mathrm{rodrigues} ( \texttt{rvec2} ) \cdot \mathrm{rodrigues} ( \texttt{rvec1} ) \right ) \\ \texttt{tvec3} = \mathrm{rodrigues} ( \texttt{rvec2} ) \cdot \texttt{tvec1} + \texttt{tvec2} \end{array} ,\f]
-
-where \f$\mathrm{rodrigues}\f$ denotes a rotation vector to a rotation matrix transformation, and
-\f$\mathrm{rodrigues}^{-1}\f$ denotes the inverse transformation. See Rodrigues for details.
-
-Also, the functions can compute the derivatives of the output vectors with regards to the input
-vectors (see matMulDeriv ). The functions are used inside stereoCalibrate but can also be used in
-your own code where Levenberg-Marquardt or another gradient-based solver is used to optimize a
-function that contains a matrix multiplication.
- */
-CV_EXPORTS_W void composeRT( InputArray rvec1, InputArray tvec1,
- InputArray rvec2, InputArray tvec2,
- OutputArray rvec3, OutputArray tvec3,
- OutputArray dr3dr1 = noArray(), OutputArray dr3dt1 = noArray(),
- OutputArray dr3dr2 = noArray(), OutputArray dr3dt2 = noArray(),
- OutputArray dt3dr1 = noArray(), OutputArray dt3dt1 = noArray(),
- OutputArray dt3dr2 = noArray(), OutputArray dt3dt2 = noArray() );
-
-/** @brief Projects 3D points to an image plane.
-
-@param objectPoints Array of object points, 3xN/Nx3 1-channel or 1xN/Nx1 3-channel (or
-vector\ ), where N is the number of points in the view.
-@param rvec Rotation vector. See Rodrigues for details.
-@param tvec Translation vector.
-@param cameraMatrix Camera matrix \f$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\f$ .
-@param distCoeffs Input vector of distortion coefficients
-\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ of
-4, 5, 8, 12 or 14 elements. If the vector is empty, the zero distortion coefficients are assumed.
-@param imagePoints Output array of image points, 2xN/Nx2 1-channel or 1xN/Nx1 2-channel, or
-vector\ .
-@param jacobian Optional output 2Nx(10+\) jacobian matrix of derivatives of image
-points with respect to components of the rotation vector, translation vector, focal lengths,
-coordinates of the principal point and the distortion coefficients. In the old interface different
-components of the jacobian are returned via different output parameters.
-@param aspectRatio Optional "fixed aspect ratio" parameter. If the parameter is not 0, the
-function assumes that the aspect ratio (*fx/fy*) is fixed and correspondingly adjusts the jacobian
-matrix.
-
-The function computes projections of 3D points to the image plane given intrinsic and extrinsic
-camera parameters. Optionally, the function computes Jacobians - matrices of partial derivatives of
-image points coordinates (as functions of all the input parameters) with respect to the particular
-parameters, intrinsic and/or extrinsic. The Jacobians are used during the global optimization in
-calibrateCamera, solvePnP, and stereoCalibrate . The function itself can also be used to compute a
-re-projection error given the current intrinsic and extrinsic parameters.
-
-@note By setting rvec=tvec=(0,0,0) or by setting cameraMatrix to a 3x3 identity matrix, or by
-passing zero distortion coefficients, you can get various useful partial cases of the function. This
-means that you can compute the distorted coordinates for a sparse set of points or apply a
-perspective transformation (and also compute the derivatives) in the ideal zero-distortion setup.
- */
-CV_EXPORTS_W void projectPoints( InputArray objectPoints,
- InputArray rvec, InputArray tvec,
- InputArray cameraMatrix, InputArray distCoeffs,
- OutputArray imagePoints,
- OutputArray jacobian = noArray(),
- double aspectRatio = 0 );
-
-/** @example homography_from_camera_displacement.cpp
- An example program about homography from the camera displacement
-
- Check @ref tutorial_homography "the corresponding tutorial" for more details
- */
-
-/** @brief Finds an object pose from 3D-2D point correspondences.
-
-@param objectPoints Array of object points in the object coordinate space, Nx3 1-channel or
-1xN/Nx1 3-channel, where N is the number of points. vector\ can be also passed here.
-@param imagePoints Array of corresponding image points, Nx2 1-channel or 1xN/Nx1 2-channel,
-where N is the number of points. vector\ can be also passed here.
-@param cameraMatrix Input camera matrix \f$A = \vecthreethree{fx}{0}{cx}{0}{fy}{cy}{0}{0}{1}\f$ .
-@param distCoeffs Input vector of distortion coefficients
-\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ of
-4, 5, 8, 12 or 14 elements. If the vector is NULL/empty, the zero distortion coefficients are
-assumed.
-@param rvec Output rotation vector (see @ref Rodrigues ) that, together with tvec , brings points from
-the model coordinate system to the camera coordinate system.
-@param tvec Output translation vector.
-@param useExtrinsicGuess Parameter used for #SOLVEPNP_ITERATIVE. If true (1), the function uses
-the provided rvec and tvec values as initial approximations of the rotation and translation
-vectors, respectively, and further optimizes them.
-@param flags Method for solving a PnP problem:
-- **SOLVEPNP_ITERATIVE** Iterative method is based on Levenberg-Marquardt optimization. In
-this case the function finds such a pose that minimizes reprojection error, that is the sum
-of squared distances between the observed projections imagePoints and the projected (using
-projectPoints ) objectPoints .
-- **SOLVEPNP_P3P** Method is based on the paper of X.S. Gao, X.-R. Hou, J. Tang, H.-F. Chang
-"Complete Solution Classification for the Perspective-Three-Point Problem" (@cite gao2003complete).
-In this case the function requires exactly four object and image points.
-- **SOLVEPNP_AP3P** Method is based on the paper of T. Ke, S. Roumeliotis
-"An Efficient Algebraic Solution to the Perspective-Three-Point Problem" (@cite Ke17).
-In this case the function requires exactly four object and image points.
-- **SOLVEPNP_EPNP** Method has been introduced by F.Moreno-Noguer, V.Lepetit and P.Fua in the
-paper "EPnP: Efficient Perspective-n-Point Camera Pose Estimation" (@cite lepetit2009epnp).
-- **SOLVEPNP_DLS** Method is based on the paper of Joel A. Hesch and Stergios I. Roumeliotis.
-"A Direct Least-Squares (DLS) Method for PnP" (@cite hesch2011direct).
-- **SOLVEPNP_UPNP** Method is based on the paper of A.Penate-Sanchez, J.Andrade-Cetto,
-F.Moreno-Noguer. "Exhaustive Linearization for Robust Camera Pose and Focal Length
-Estimation" (@cite penate2013exhaustive). In this case the function also estimates the parameters \f$f_x\f$ and \f$f_y\f$
-assuming that both have the same value. Then the cameraMatrix is updated with the estimated
-focal length.
-- **SOLVEPNP_AP3P** Method is based on the paper of Tong Ke and Stergios I. Roumeliotis.
-"An Efficient Algebraic Solution to the Perspective-Three-Point Problem" (@cite Ke17). In this case the
-function requires exactly four object and image points.
-
-The function estimates the object pose given a set of object points, their corresponding image
-projections, as well as the camera matrix and the distortion coefficients, see the figure below
-(more precisely, the X-axis of the camera frame is pointing to the right, the Y-axis downward
-and the Z-axis forward).
-
-
-
-Points expressed in the world frame \f$ \bf{X}_w \f$ are projected into the image plane \f$ \left[ u, v \right] \f$
-using the perspective projection model \f$ \Pi \f$ and the camera intrinsic parameters matrix \f$ \bf{A} \f$:
-
-\f[
- \begin{align*}
- \begin{bmatrix}
- u \\
- v \\
- 1
- \end{bmatrix} &=
- \bf{A} \hspace{0.1em} \Pi \hspace{0.2em} ^{c}\bf{M}_w
- \begin{bmatrix}
- X_{w} \\
- Y_{w} \\
- Z_{w} \\
- 1
- \end{bmatrix} \\
- \begin{bmatrix}
- u \\
- v \\
- 1
- \end{bmatrix} &=
- \begin{bmatrix}
- f_x & 0 & c_x \\
- 0 & f_y & c_y \\
- 0 & 0 & 1
- \end{bmatrix}
- \begin{bmatrix}
- 1 & 0 & 0 & 0 \\
- 0 & 1 & 0 & 0 \\
- 0 & 0 & 1 & 0
- \end{bmatrix}
- \begin{bmatrix}
- r_{11} & r_{12} & r_{13} & t_x \\
- r_{21} & r_{22} & r_{23} & t_y \\
- r_{31} & r_{32} & r_{33} & t_z \\
- 0 & 0 & 0 & 1
- \end{bmatrix}
- \begin{bmatrix}
- X_{w} \\
- Y_{w} \\
- Z_{w} \\
- 1
- \end{bmatrix}
- \end{align*}
-\f]
-
-The estimated pose is thus the rotation (`rvec`) and the translation (`tvec`) vectors that allow to transform
-a 3D point expressed in the world frame into the camera frame:
-
-\f[
- \begin{align*}
- \begin{bmatrix}
- X_c \\
- Y_c \\
- Z_c \\
- 1
- \end{bmatrix} &=
- \hspace{0.2em} ^{c}\bf{M}_w
- \begin{bmatrix}
- X_{w} \\
- Y_{w} \\
- Z_{w} \\
- 1
- \end{bmatrix} \\
- \begin{bmatrix}
- X_c \\
- Y_c \\
- Z_c \\
- 1
- \end{bmatrix} &=
- \begin{bmatrix}
- r_{11} & r_{12} & r_{13} & t_x \\
- r_{21} & r_{22} & r_{23} & t_y \\
- r_{31} & r_{32} & r_{33} & t_z \\
- 0 & 0 & 0 & 1
- \end{bmatrix}
- \begin{bmatrix}
- X_{w} \\
- Y_{w} \\
- Z_{w} \\
- 1
- \end{bmatrix}
- \end{align*}
-\f]
-
-@note
- - An example of how to use solvePnP for planar augmented reality can be found at
- opencv_source_code/samples/python/plane_ar.py
- - If you are using Python:
- - Numpy array slices won't work as input because solvePnP requires contiguous
- arrays (enforced by the assertion using cv::Mat::checkVector() around line 55 of
- modules/calib3d/src/solvepnp.cpp version 2.4.9)
- - The P3P algorithm requires image points to be in an array of shape (N,1,2) due
- to its calling of cv::undistortPoints (around line 75 of modules/calib3d/src/solvepnp.cpp version 2.4.9)
- which requires 2-channel information.
- - Thus, given some data D = np.array(...) where D.shape = (N,M), in order to use a subset of
- it as, e.g., imagePoints, one must effectively copy it into a new array: imagePoints =
- np.ascontiguousarray(D[:,:2]).reshape((N,1,2))
- - The methods **SOLVEPNP_DLS** and **SOLVEPNP_UPNP** cannot be used as the current implementations are
- unstable and sometimes give completely wrong results. If you pass one of these two
- flags, **SOLVEPNP_EPNP** method will be used instead.
- - The minimum number of points is 4 in the general case. In the case of **SOLVEPNP_P3P** and **SOLVEPNP_AP3P**
- methods, it is required to use exactly 4 points (the first 3 points are used to estimate all the solutions
- of the P3P problem, the last one is used to retain the best solution that minimizes the reprojection error).
- - With **SOLVEPNP_ITERATIVE** method and `useExtrinsicGuess=true`, the minimum number of points is 3 (3 points
- are sufficient to compute a pose but there are up to 4 solutions). The initial solution should be close to the
- global solution to converge.
- */
-CV_EXPORTS_W bool solvePnP( InputArray objectPoints, InputArray imagePoints,
- InputArray cameraMatrix, InputArray distCoeffs,
- OutputArray rvec, OutputArray tvec,
- bool useExtrinsicGuess = false, int flags = SOLVEPNP_ITERATIVE );
-
-/** @brief Finds an object pose from 3D-2D point correspondences using the RANSAC scheme.
-
-@param objectPoints Array of object points in the object coordinate space, Nx3 1-channel or
-1xN/Nx1 3-channel, where N is the number of points. vector\ can be also passed here.
-@param imagePoints Array of corresponding image points, Nx2 1-channel or 1xN/Nx1 2-channel,
-where N is the number of points. vector\ can be also passed here.
-@param cameraMatrix Input camera matrix \f$A = \vecthreethree{fx}{0}{cx}{0}{fy}{cy}{0}{0}{1}\f$ .
-@param distCoeffs Input vector of distortion coefficients
-\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ of
-4, 5, 8, 12 or 14 elements. If the vector is NULL/empty, the zero distortion coefficients are
-assumed.
-@param rvec Output rotation vector (see Rodrigues ) that, together with tvec , brings points from
-the model coordinate system to the camera coordinate system.
-@param tvec Output translation vector.
-@param useExtrinsicGuess Parameter used for SOLVEPNP_ITERATIVE. If true (1), the function uses
-the provided rvec and tvec values as initial approximations of the rotation and translation
-vectors, respectively, and further optimizes them.
-@param iterationsCount Number of iterations.
-@param reprojectionError Inlier threshold value used by the RANSAC procedure. The parameter value
-is the maximum allowed distance between the observed and computed point projections to consider it
-an inlier.
-@param confidence The probability that the algorithm produces a useful result.
-@param inliers Output vector that contains indices of inliers in objectPoints and imagePoints .
-@param flags Method for solving a PnP problem (see solvePnP ).
-
-The function estimates an object pose given a set of object points, their corresponding image
-projections, as well as the camera matrix and the distortion coefficients. This function finds such
-a pose that minimizes reprojection error, that is, the sum of squared distances between the observed
-projections imagePoints and the projected (using projectPoints ) objectPoints. The use of RANSAC
-makes the function resistant to outliers.
-
-@note
- - An example of how to use solvePNPRansac for object detection can be found at
- opencv_source_code/samples/cpp/tutorial_code/calib3d/real_time_pose_estimation/
- - The default method used to estimate the camera pose for the Minimal Sample Sets step
- is #SOLVEPNP_EPNP. Exceptions are:
- - if you choose #SOLVEPNP_P3P or #SOLVEPNP_AP3P, these methods will be used.
- - if the number of input points is equal to 4, #SOLVEPNP_P3P is used.
- - The method used to estimate the camera pose using all the inliers is defined by the
- flags parameters unless it is equal to #SOLVEPNP_P3P or #SOLVEPNP_AP3P. In this case,
- the method #SOLVEPNP_EPNP will be used instead.
- */
-CV_EXPORTS_W bool solvePnPRansac( InputArray objectPoints, InputArray imagePoints,
- InputArray cameraMatrix, InputArray distCoeffs,
- OutputArray rvec, OutputArray tvec,
- bool useExtrinsicGuess = false, int iterationsCount = 100,
- float reprojectionError = 8.0, double confidence = 0.99,
- OutputArray inliers = noArray(), int flags = SOLVEPNP_ITERATIVE );
-/** @brief Finds an object pose from 3 3D-2D point correspondences.
-
-@param objectPoints Array of object points in the object coordinate space, 3x3 1-channel or
-1x3/3x1 3-channel. vector\ can be also passed here.
-@param imagePoints Array of corresponding image points, 3x2 1-channel or 1x3/3x1 2-channel.
- vector\ can be also passed here.
-@param cameraMatrix Input camera matrix \f$A = \vecthreethree{fx}{0}{cx}{0}{fy}{cy}{0}{0}{1}\f$ .
-@param distCoeffs Input vector of distortion coefficients
-\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ of
-4, 5, 8, 12 or 14 elements. If the vector is NULL/empty, the zero distortion coefficients are
-assumed.
-@param rvecs Output rotation vectors (see Rodrigues ) that, together with tvecs , brings points from
-the model coordinate system to the camera coordinate system. A P3P problem has up to 4 solutions.
-@param tvecs Output translation vectors.
-@param flags Method for solving a P3P problem:
-- **SOLVEPNP_P3P** Method is based on the paper of X.S. Gao, X.-R. Hou, J. Tang, H.-F. Chang
-"Complete Solution Classification for the Perspective-Three-Point Problem" (@cite gao2003complete).
-- **SOLVEPNP_AP3P** Method is based on the paper of Tong Ke and Stergios I. Roumeliotis.
-"An Efficient Algebraic Solution to the Perspective-Three-Point Problem" (@cite Ke17).
-
-The function estimates the object pose given 3 object points, their corresponding image
-projections, as well as the camera matrix and the distortion coefficients.
- */
-CV_EXPORTS_W int solveP3P( InputArray objectPoints, InputArray imagePoints,
- InputArray cameraMatrix, InputArray distCoeffs,
- OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs,
- int flags );
-
-/** @brief Finds an initial camera matrix from 3D-2D point correspondences.
-
-@param objectPoints Vector of vectors of the calibration pattern points in the calibration pattern
-coordinate space. In the old interface all the per-view vectors are concatenated. See
-calibrateCamera for details.
-@param imagePoints Vector of vectors of the projections of the calibration pattern points. In the
-old interface all the per-view vectors are concatenated.
-@param imageSize Image size in pixels used to initialize the principal point.
-@param aspectRatio If it is zero or negative, both \f$f_x\f$ and \f$f_y\f$ are estimated independently.
-Otherwise, \f$f_x = f_y * \texttt{aspectRatio}\f$ .
-
-The function estimates and returns an initial camera matrix for the camera calibration process.
-Currently, the function only supports planar calibration patterns, which are patterns where each
-object point has z-coordinate =0.
- */
-CV_EXPORTS_W Mat initCameraMatrix2D( InputArrayOfArrays objectPoints,
- InputArrayOfArrays imagePoints,
- Size imageSize, double aspectRatio = 1.0 );
-
-/** @brief Finds the positions of internal corners of the chessboard.
-
-@param image Source chessboard view. It must be an 8-bit grayscale or color image.
-@param patternSize Number of inner corners per a chessboard row and column
-( patternSize = cvSize(points_per_row,points_per_colum) = cvSize(columns,rows) ).
-@param corners Output array of detected corners.
-@param flags Various operation flags that can be zero or a combination of the following values:
-- **CALIB_CB_ADAPTIVE_THRESH** Use adaptive thresholding to convert the image to black
-and white, rather than a fixed threshold level (computed from the average image brightness).
-- **CALIB_CB_NORMALIZE_IMAGE** Normalize the image gamma with equalizeHist before
-applying fixed or adaptive thresholding.
-- **CALIB_CB_FILTER_QUADS** Use additional criteria (like contour area, perimeter,
-square-like shape) to filter out false quads extracted at the contour retrieval stage.
-- **CALIB_CB_FAST_CHECK** Run a fast check on the image that looks for chessboard corners,
-and shortcut the call if none is found. This can drastically speed up the call in the
-degenerate condition when no chessboard is observed.
-
-The function attempts to determine whether the input image is a view of the chessboard pattern and
-locate the internal chessboard corners. The function returns a non-zero value if all of the corners
-are found and they are placed in a certain order (row by row, left to right in every row).
-Otherwise, if the function fails to find all the corners or reorder them, it returns 0. For example,
-a regular chessboard has 8 x 8 squares and 7 x 7 internal corners, that is, points where the black
-squares touch each other. The detected coordinates are approximate, and to determine their positions
-more accurately, the function calls cornerSubPix. You also may use the function cornerSubPix with
-different parameters if returned coordinates are not accurate enough.
-
-Sample usage of detecting and drawing chessboard corners: :
-@code
- Size patternsize(8,6); //interior number of corners
- Mat gray = ....; //source image
- vector corners; //this will be filled by the detected corners
-
- //CALIB_CB_FAST_CHECK saves a lot of time on images
- //that do not contain any chessboard corners
- bool patternfound = findChessboardCorners(gray, patternsize, corners,
- CALIB_CB_ADAPTIVE_THRESH + CALIB_CB_NORMALIZE_IMAGE
- + CALIB_CB_FAST_CHECK);
-
- if(patternfound)
- cornerSubPix(gray, corners, Size(11, 11), Size(-1, -1),
- TermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 30, 0.1));
-
- drawChessboardCorners(img, patternsize, Mat(corners), patternfound);
-@endcode
-@note The function requires white space (like a square-thick border, the wider the better) around
-the board to make the detection more robust in various environments. Otherwise, if there is no
-border and the background is dark, the outer black squares cannot be segmented properly and so the
-square grouping and ordering algorithm fails.
- */
-CV_EXPORTS_W bool findChessboardCorners( InputArray image, Size patternSize, OutputArray corners,
- int flags = CALIB_CB_ADAPTIVE_THRESH + CALIB_CB_NORMALIZE_IMAGE );
-
-//! finds subpixel-accurate positions of the chessboard corners
-CV_EXPORTS bool find4QuadCornerSubpix( InputArray img, InputOutputArray corners, Size region_size );
-
-/** @brief Renders the detected chessboard corners.
-
-@param image Destination image. It must be an 8-bit color image.
-@param patternSize Number of inner corners per a chessboard row and column
-(patternSize = cv::Size(points_per_row,points_per_column)).
-@param corners Array of detected corners, the output of findChessboardCorners.
-@param patternWasFound Parameter indicating whether the complete board was found or not. The
-return value of findChessboardCorners should be passed here.
-
-The function draws individual chessboard corners detected either as red circles if the board was not
-found, or as colored corners connected with lines if the board was found.
- */
-CV_EXPORTS_W void drawChessboardCorners( InputOutputArray image, Size patternSize,
- InputArray corners, bool patternWasFound );
-
-struct CV_EXPORTS_W_SIMPLE CirclesGridFinderParameters
-{
- CV_WRAP CirclesGridFinderParameters();
- CV_PROP_RW cv::Size2f densityNeighborhoodSize;
- CV_PROP_RW float minDensity;
- CV_PROP_RW int kmeansAttempts;
- CV_PROP_RW int minDistanceToAddKeypoint;
- CV_PROP_RW int keypointScale;
- CV_PROP_RW float minGraphConfidence;
- CV_PROP_RW float vertexGain;
- CV_PROP_RW float vertexPenalty;
- CV_PROP_RW float existingVertexGain;
- CV_PROP_RW float edgeGain;
- CV_PROP_RW float edgePenalty;
- CV_PROP_RW float convexHullFactor;
- CV_PROP_RW float minRNGEdgeSwitchDist;
-
- enum GridType
- {
- SYMMETRIC_GRID, ASYMMETRIC_GRID
- };
- GridType gridType;
-};
-
-struct CV_EXPORTS_W_SIMPLE CirclesGridFinderParameters2 : public CirclesGridFinderParameters
-{
- CV_WRAP CirclesGridFinderParameters2();
-
- CV_PROP_RW float squareSize; //!< Distance between two adjacent points. Used by CALIB_CB_CLUSTERING.
- CV_PROP_RW float maxRectifiedDistance; //!< Max deviation from predicion. Used by CALIB_CB_CLUSTERING.
-};
-
-/** @brief Finds centers in the grid of circles.
-
-@param image grid view of input circles; it must be an 8-bit grayscale or color image.
-@param patternSize number of circles per row and column
-( patternSize = Size(points_per_row, points_per_colum) ).
-@param centers output array of detected centers.
-@param flags various operation flags that can be one of the following values:
-- **CALIB_CB_SYMMETRIC_GRID** uses symmetric pattern of circles.
-- **CALIB_CB_ASYMMETRIC_GRID** uses asymmetric pattern of circles.
-- **CALIB_CB_CLUSTERING** uses a special algorithm for grid detection. It is more robust to
-perspective distortions but much more sensitive to background clutter.
-@param blobDetector feature detector that finds blobs like dark circles on light background.
-@param parameters struct for finding circles in a grid pattern.
-
-The function attempts to determine whether the input image contains a grid of circles. If it is, the
-function locates centers of the circles. The function returns a non-zero value if all of the centers
-have been found and they have been placed in a certain order (row by row, left to right in every
-row). Otherwise, if the function fails to find all the corners or reorder them, it returns 0.
-
-Sample usage of detecting and drawing the centers of circles: :
-@code
- Size patternsize(7,7); //number of centers
- Mat gray = ....; //source image
- vector centers; //this will be filled by the detected centers
-
- bool patternfound = findCirclesGrid(gray, patternsize, centers);
-
- drawChessboardCorners(img, patternsize, Mat(centers), patternfound);
-@endcode
-@note The function requires white space (like a square-thick border, the wider the better) around
-the board to make the detection more robust in various environments.
- */
-CV_EXPORTS_W bool findCirclesGrid( InputArray image, Size patternSize,
- OutputArray centers, int flags,
- const Ptr &blobDetector,
- CirclesGridFinderParameters parameters);
-
-/** @overload */
-CV_EXPORTS_W bool findCirclesGrid2( InputArray image, Size patternSize,
- OutputArray centers, int flags,
- const Ptr &blobDetector,
- CirclesGridFinderParameters2 parameters);
-
-/** @overload */
-CV_EXPORTS_W bool findCirclesGrid( InputArray image, Size patternSize,
- OutputArray centers, int flags = CALIB_CB_SYMMETRIC_GRID,
- const Ptr &blobDetector = SimpleBlobDetector::create());
-
-/** @brief Finds the camera intrinsic and extrinsic parameters from several views of a calibration pattern.
-
-@param objectPoints In the new interface it is a vector of vectors of calibration pattern points in
-the calibration pattern coordinate space (e.g. std::vector>). The outer
-vector contains as many elements as the number of the pattern views. If the same calibration pattern
-is shown in each view and it is fully visible, all the vectors will be the same. Although, it is
-possible to use partially occluded patterns, or even different patterns in different views. Then,
-the vectors will be different. The points are 3D, but since they are in a pattern coordinate system,
-then, if the rig is planar, it may make sense to put the model to a XY coordinate plane so that
-Z-coordinate of each input object point is 0.
-In the old interface all the vectors of object points from different views are concatenated
-together.
-@param imagePoints In the new interface it is a vector of vectors of the projections of calibration
-pattern points (e.g. std::vector>). imagePoints.size() and
-objectPoints.size() and imagePoints[i].size() must be equal to objectPoints[i].size() for each i.
-In the old interface all the vectors of object points from different views are concatenated
-together.
-@param imageSize Size of the image used only to initialize the intrinsic camera matrix.
-@param cameraMatrix Output 3x3 floating-point camera matrix
-\f$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ . If CV\_CALIB\_USE\_INTRINSIC\_GUESS
-and/or CALIB_FIX_ASPECT_RATIO are specified, some or all of fx, fy, cx, cy must be
-initialized before calling the function.
-@param distCoeffs Output vector of distortion coefficients
-\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ of
-4, 5, 8, 12 or 14 elements.
-@param rvecs Output vector of rotation vectors (see Rodrigues ) estimated for each pattern view
-(e.g. std::vector>). That is, each k-th rotation vector together with the corresponding
-k-th translation vector (see the next output parameter description) brings the calibration pattern
-from the model coordinate space (in which object points are specified) to the world coordinate
-space, that is, a real position of the calibration pattern in the k-th pattern view (k=0.. *M* -1).
-@param tvecs Output vector of translation vectors estimated for each pattern view.
-@param stdDeviationsIntrinsics Output vector of standard deviations estimated for intrinsic parameters.
- Order of deviations values:
-\f$(f_x, f_y, c_x, c_y, k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6 , s_1, s_2, s_3,
- s_4, \tau_x, \tau_y)\f$ If one of parameters is not estimated, it's deviation is equals to zero.
-@param stdDeviationsExtrinsics Output vector of standard deviations estimated for extrinsic parameters.
- Order of deviations values: \f$(R_1, T_1, \dotsc , R_M, T_M)\f$ where M is number of pattern views,
- \f$R_i, T_i\f$ are concatenated 1x3 vectors.
- @param perViewErrors Output vector of the RMS re-projection error estimated for each pattern view.
-@param flags Different flags that may be zero or a combination of the following values:
-- **CALIB_USE_INTRINSIC_GUESS** cameraMatrix contains valid initial values of
-fx, fy, cx, cy that are optimized further. Otherwise, (cx, cy) is initially set to the image
-center ( imageSize is used), and focal distances are computed in a least-squares fashion.
-Note, that if intrinsic parameters are known, there is no need to use this function just to
-estimate extrinsic parameters. Use solvePnP instead.
-- **CALIB_FIX_PRINCIPAL_POINT** The principal point is not changed during the global
-optimization. It stays at the center or at a different location specified when
-CALIB_USE_INTRINSIC_GUESS is set too.
-- **CALIB_FIX_ASPECT_RATIO** The functions considers only fy as a free parameter. The
-ratio fx/fy stays the same as in the input cameraMatrix . When
-CALIB_USE_INTRINSIC_GUESS is not set, the actual input values of fx and fy are
-ignored, only their ratio is computed and used further.
-- **CALIB_ZERO_TANGENT_DIST** Tangential distortion coefficients \f$(p_1, p_2)\f$ are set
-to zeros and stay zero.
-- **CALIB_FIX_K1,...,CALIB_FIX_K6** The corresponding radial distortion
-coefficient is not changed during the optimization. If CALIB_USE_INTRINSIC_GUESS is
-set, the coefficient from the supplied distCoeffs matrix is used. Otherwise, it is set to 0.
-- **CALIB_RATIONAL_MODEL** Coefficients k4, k5, and k6 are enabled. To provide the
-backward compatibility, this extra flag should be explicitly specified to make the
-calibration function use the rational model and return 8 coefficients. If the flag is not
-set, the function computes and returns only 5 distortion coefficients.
-- **CALIB_THIN_PRISM_MODEL** Coefficients s1, s2, s3 and s4 are enabled. To provide the
-backward compatibility, this extra flag should be explicitly specified to make the
-calibration function use the thin prism model and return 12 coefficients. If the flag is not
-set, the function computes and returns only 5 distortion coefficients.
-- **CALIB_FIX_S1_S2_S3_S4** The thin prism distortion coefficients are not changed during
-the optimization. If CALIB_USE_INTRINSIC_GUESS is set, the coefficient from the
-supplied distCoeffs matrix is used. Otherwise, it is set to 0.
-- **CALIB_TILTED_MODEL** Coefficients tauX and tauY are enabled. To provide the
-backward compatibility, this extra flag should be explicitly specified to make the
-calibration function use the tilted sensor model and return 14 coefficients. If the flag is not
-set, the function computes and returns only 5 distortion coefficients.
-- **CALIB_FIX_TAUX_TAUY** The coefficients of the tilted sensor model are not changed during
-the optimization. If CALIB_USE_INTRINSIC_GUESS is set, the coefficient from the
-supplied distCoeffs matrix is used. Otherwise, it is set to 0.
-@param criteria Termination criteria for the iterative optimization algorithm.
-
-@return the overall RMS re-projection error.
-
-The function estimates the intrinsic camera parameters and extrinsic parameters for each of the
-views. The algorithm is based on @cite Zhang2000 and @cite BouguetMCT . The coordinates of 3D object
-points and their corresponding 2D projections in each view must be specified. That may be achieved
-by using an object with a known geometry and easily detectable feature points. Such an object is
-called a calibration rig or calibration pattern, and OpenCV has built-in support for a chessboard as
-a calibration rig (see findChessboardCorners ). Currently, initialization of intrinsic parameters
-(when CALIB_USE_INTRINSIC_GUESS is not set) is only implemented for planar calibration
-patterns (where Z-coordinates of the object points must be all zeros). 3D calibration rigs can also
-be used as long as initial cameraMatrix is provided.
-
-The algorithm performs the following steps:
-
-- Compute the initial intrinsic parameters (the option only available for planar calibration
- patterns) or read them from the input parameters. The distortion coefficients are all set to
- zeros initially unless some of CALIB_FIX_K? are specified.
-
-- Estimate the initial camera pose as if the intrinsic parameters have been already known. This is
- done using solvePnP .
-
-- Run the global Levenberg-Marquardt optimization algorithm to minimize the reprojection error,
- that is, the total sum of squared distances between the observed feature points imagePoints and
- the projected (using the current estimates for camera parameters and the poses) object points
- objectPoints. See projectPoints for details.
-
-@note
- If you use a non-square (=non-NxN) grid and findChessboardCorners for calibration, and
- calibrateCamera returns bad values (zero distortion coefficients, an image center very far from
- (w/2-0.5,h/2-0.5), and/or large differences between \f$f_x\f$ and \f$f_y\f$ (ratios of 10:1 or more)),
- then you have probably used patternSize=cvSize(rows,cols) instead of using
- patternSize=cvSize(cols,rows) in findChessboardCorners .
-
-@sa
- findChessboardCorners, solvePnP, initCameraMatrix2D, stereoCalibrate, undistort
- */
-CV_EXPORTS_AS(calibrateCameraExtended) double calibrateCamera( InputArrayOfArrays objectPoints,
- InputArrayOfArrays imagePoints, Size imageSize,
- InputOutputArray cameraMatrix, InputOutputArray distCoeffs,
- OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs,
- OutputArray stdDeviationsIntrinsics,
- OutputArray stdDeviationsExtrinsics,
- OutputArray perViewErrors,
- int flags = 0, TermCriteria criteria = TermCriteria(
- TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON) );
-
-/** @overload double calibrateCamera( InputArrayOfArrays objectPoints,
- InputArrayOfArrays imagePoints, Size imageSize,
- InputOutputArray cameraMatrix, InputOutputArray distCoeffs,
- OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs,
- OutputArray stdDeviations, OutputArray perViewErrors,
- int flags = 0, TermCriteria criteria = TermCriteria(
- TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON) )
- */
-CV_EXPORTS_W double calibrateCamera( InputArrayOfArrays objectPoints,
- InputArrayOfArrays imagePoints, Size imageSize,
- InputOutputArray cameraMatrix, InputOutputArray distCoeffs,
- OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs,
- int flags = 0, TermCriteria criteria = TermCriteria(
- TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON) );
-
-/** @brief Computes useful camera characteristics from the camera matrix.
-
-@param cameraMatrix Input camera matrix that can be estimated by calibrateCamera or
-stereoCalibrate .
-@param imageSize Input image size in pixels.
-@param apertureWidth Physical width in mm of the sensor.
-@param apertureHeight Physical height in mm of the sensor.
-@param fovx Output field of view in degrees along the horizontal sensor axis.
-@param fovy Output field of view in degrees along the vertical sensor axis.
-@param focalLength Focal length of the lens in mm.
-@param principalPoint Principal point in mm.
-@param aspectRatio \f$f_y/f_x\f$
-
-The function computes various useful camera characteristics from the previously estimated camera
-matrix.
-
-@note
- Do keep in mind that the unity measure 'mm' stands for whatever unit of measure one chooses for
- the chessboard pitch (it can thus be any value).
- */
-CV_EXPORTS_W void calibrationMatrixValues( InputArray cameraMatrix, Size imageSize,
- double apertureWidth, double apertureHeight,
- CV_OUT double& fovx, CV_OUT double& fovy,
- CV_OUT double& focalLength, CV_OUT Point2d& principalPoint,
- CV_OUT double& aspectRatio );
-
-/** @brief Calibrates the stereo camera.
-
-@param objectPoints Vector of vectors of the calibration pattern points.
-@param imagePoints1 Vector of vectors of the projections of the calibration pattern points,
-observed by the first camera.
-@param imagePoints2 Vector of vectors of the projections of the calibration pattern points,
-observed by the second camera.
-@param cameraMatrix1 Input/output first camera matrix:
-\f$\vecthreethree{f_x^{(j)}}{0}{c_x^{(j)}}{0}{f_y^{(j)}}{c_y^{(j)}}{0}{0}{1}\f$ , \f$j = 0,\, 1\f$ . If
-any of CALIB_USE_INTRINSIC_GUESS , CALIB_FIX_ASPECT_RATIO ,
-CALIB_FIX_INTRINSIC , or CALIB_FIX_FOCAL_LENGTH are specified, some or all of the
-matrix components must be initialized. See the flags description for details.
-@param distCoeffs1 Input/output vector of distortion coefficients
-\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ of
-4, 5, 8, 12 or 14 elements. The output vector length depends on the flags.
-@param cameraMatrix2 Input/output second camera matrix. The parameter is similar to cameraMatrix1
-@param distCoeffs2 Input/output lens distortion coefficients for the second camera. The parameter
-is similar to distCoeffs1 .
-@param imageSize Size of the image used only to initialize intrinsic camera matrix.
-@param R Output rotation matrix between the 1st and the 2nd camera coordinate systems.
-@param T Output translation vector between the coordinate systems of the cameras.
-@param E Output essential matrix.
-@param F Output fundamental matrix.
-@param perViewErrors Output vector of the RMS re-projection error estimated for each pattern view.
-@param flags Different flags that may be zero or a combination of the following values:
-- **CALIB_FIX_INTRINSIC** Fix cameraMatrix? and distCoeffs? so that only R, T, E , and F
-matrices are estimated.
-- **CALIB_USE_INTRINSIC_GUESS** Optimize some or all of the intrinsic parameters
-according to the specified flags. Initial values are provided by the user.
-- **CALIB_USE_EXTRINSIC_GUESS** R, T contain valid initial values that are optimized further.
-Otherwise R, T are initialized to the median value of the pattern views (each dimension separately).
-- **CALIB_FIX_PRINCIPAL_POINT** Fix the principal points during the optimization.
-- **CALIB_FIX_FOCAL_LENGTH** Fix \f$f^{(j)}_x\f$ and \f$f^{(j)}_y\f$ .
-- **CALIB_FIX_ASPECT_RATIO** Optimize \f$f^{(j)}_y\f$ . Fix the ratio \f$f^{(j)}_x/f^{(j)}_y\f$
-.
-- **CALIB_SAME_FOCAL_LENGTH** Enforce \f$f^{(0)}_x=f^{(1)}_x\f$ and \f$f^{(0)}_y=f^{(1)}_y\f$ .
-- **CALIB_ZERO_TANGENT_DIST** Set tangential distortion coefficients for each camera to
-zeros and fix there.
-- **CALIB_FIX_K1,...,CALIB_FIX_K6** Do not change the corresponding radial
-distortion coefficient during the optimization. If CALIB_USE_INTRINSIC_GUESS is set,
-the coefficient from the supplied distCoeffs matrix is used. Otherwise, it is set to 0.
-- **CALIB_RATIONAL_MODEL** Enable coefficients k4, k5, and k6. To provide the backward
-compatibility, this extra flag should be explicitly specified to make the calibration
-function use the rational model and return 8 coefficients. If the flag is not set, the
-function computes and returns only 5 distortion coefficients.
-- **CALIB_THIN_PRISM_MODEL** Coefficients s1, s2, s3 and s4 are enabled. To provide the
-backward compatibility, this extra flag should be explicitly specified to make the
-calibration function use the thin prism model and return 12 coefficients. If the flag is not
-set, the function computes and returns only 5 distortion coefficients.
-- **CALIB_FIX_S1_S2_S3_S4** The thin prism distortion coefficients are not changed during
-the optimization. If CALIB_USE_INTRINSIC_GUESS is set, the coefficient from the
-supplied distCoeffs matrix is used. Otherwise, it is set to 0.
-- **CALIB_TILTED_MODEL** Coefficients tauX and tauY are enabled. To provide the
-backward compatibility, this extra flag should be explicitly specified to make the
-calibration function use the tilted sensor model and return 14 coefficients. If the flag is not
-set, the function computes and returns only 5 distortion coefficients.
-- **CALIB_FIX_TAUX_TAUY** The coefficients of the tilted sensor model are not changed during
-the optimization. If CALIB_USE_INTRINSIC_GUESS is set, the coefficient from the
-supplied distCoeffs matrix is used. Otherwise, it is set to 0.
-@param criteria Termination criteria for the iterative optimization algorithm.
-
-The function estimates transformation between two cameras making a stereo pair. If you have a stereo
-camera where the relative position and orientation of two cameras is fixed, and if you computed
-poses of an object relative to the first camera and to the second camera, (R1, T1) and (R2, T2),
-respectively (this can be done with solvePnP ), then those poses definitely relate to each other.
-This means that, given ( \f$R_1\f$,\f$T_1\f$ ), it should be possible to compute ( \f$R_2\f$,\f$T_2\f$ ). You only
-need to know the position and orientation of the second camera relative to the first camera. This is
-what the described function does. It computes ( \f$R\f$,\f$T\f$ ) so that:
-
-\f[R_2=R*R_1\f]
-\f[T_2=R*T_1 + T,\f]
-
-Optionally, it computes the essential matrix E:
-
-\f[E= \vecthreethree{0}{-T_2}{T_1}{T_2}{0}{-T_0}{-T_1}{T_0}{0} *R\f]
-
-where \f$T_i\f$ are components of the translation vector \f$T\f$ : \f$T=[T_0, T_1, T_2]^T\f$ . And the function
-can also compute the fundamental matrix F:
-
-\f[F = cameraMatrix2^{-T} E cameraMatrix1^{-1}\f]
-
-Besides the stereo-related information, the function can also perform a full calibration of each of
-two cameras. However, due to the high dimensionality of the parameter space and noise in the input
-data, the function can diverge from the correct solution. If the intrinsic parameters can be
-estimated with high accuracy for each of the cameras individually (for example, using
-calibrateCamera ), you are recommended to do so and then pass CALIB_FIX_INTRINSIC flag to the
-function along with the computed intrinsic parameters. Otherwise, if all the parameters are
-estimated at once, it makes sense to restrict some parameters, for example, pass
-CALIB_SAME_FOCAL_LENGTH and CALIB_ZERO_TANGENT_DIST flags, which is usually a
-reasonable assumption.
-
-Similarly to calibrateCamera , the function minimizes the total re-projection error for all the
-points in all the available views from both cameras. The function returns the final value of the
-re-projection error.
- */
-CV_EXPORTS_AS(stereoCalibrateExtended) double stereoCalibrate( InputArrayOfArrays objectPoints,
- InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2,
- InputOutputArray cameraMatrix1, InputOutputArray distCoeffs1,
- InputOutputArray cameraMatrix2, InputOutputArray distCoeffs2,
- Size imageSize, InputOutputArray R,InputOutputArray T, OutputArray E, OutputArray F,
- OutputArray perViewErrors, int flags = CALIB_FIX_INTRINSIC,
- TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 1e-6) );
-
-/// @overload
-CV_EXPORTS_W double stereoCalibrate( InputArrayOfArrays objectPoints,
- InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2,
- InputOutputArray cameraMatrix1, InputOutputArray distCoeffs1,
- InputOutputArray cameraMatrix2, InputOutputArray distCoeffs2,
- Size imageSize, OutputArray R,OutputArray T, OutputArray E, OutputArray F,
- int flags = CALIB_FIX_INTRINSIC,
- TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 1e-6) );
-
-/** @brief Computes rectification transforms for each head of a calibrated stereo camera.
-
-@param cameraMatrix1 First camera matrix.
-@param distCoeffs1 First camera distortion parameters.
-@param cameraMatrix2 Second camera matrix.
-@param distCoeffs2 Second camera distortion parameters.
-@param imageSize Size of the image used for stereo calibration.
-@param R Rotation matrix between the coordinate systems of the first and the second cameras.
-@param T Translation vector between coordinate systems of the cameras.
-@param R1 Output 3x3 rectification transform (rotation matrix) for the first camera.
-@param R2 Output 3x3 rectification transform (rotation matrix) for the second camera.
-@param P1 Output 3x4 projection matrix in the new (rectified) coordinate systems for the first
-camera.
-@param P2 Output 3x4 projection matrix in the new (rectified) coordinate systems for the second
-camera.
-@param Q Output \f$4 \times 4\f$ disparity-to-depth mapping matrix (see reprojectImageTo3D ).
-@param flags Operation flags that may be zero or CALIB_ZERO_DISPARITY . If the flag is set,
-the function makes the principal points of each camera have the same pixel coordinates in the
-rectified views. And if the flag is not set, the function may still shift the images in the
-horizontal or vertical direction (depending on the orientation of epipolar lines) to maximize the
-useful image area.
-@param alpha Free scaling parameter. If it is -1 or absent, the function performs the default
-scaling. Otherwise, the parameter should be between 0 and 1. alpha=0 means that the rectified
-images are zoomed and shifted so that only valid pixels are visible (no black areas after
-rectification). alpha=1 means that the rectified image is decimated and shifted so that all the
-pixels from the original images from the cameras are retained in the rectified images (no source
-image pixels are lost). Obviously, any intermediate value yields an intermediate result between
-those two extreme cases.
-@param newImageSize New image resolution after rectification. The same size should be passed to
-initUndistortRectifyMap (see the stereo_calib.cpp sample in OpenCV samples directory). When (0,0)
-is passed (default), it is set to the original imageSize . Setting it to larger value can help you
-preserve details in the original image, especially when there is a big radial distortion.
-@param validPixROI1 Optional output rectangles inside the rectified images where all the pixels
-are valid. If alpha=0 , the ROIs cover the whole images. Otherwise, they are likely to be smaller
-(see the picture below).
-@param validPixROI2 Optional output rectangles inside the rectified images where all the pixels
-are valid. If alpha=0 , the ROIs cover the whole images. Otherwise, they are likely to be smaller
-(see the picture below).
-
-The function computes the rotation matrices for each camera that (virtually) make both camera image
-planes the same plane. Consequently, this makes all the epipolar lines parallel and thus simplifies
-the dense stereo correspondence problem. The function takes the matrices computed by stereoCalibrate
-as input. As output, it provides two rotation matrices and also two projection matrices in the new
-coordinates. The function distinguishes the following two cases:
-
-- **Horizontal stereo**: the first and the second camera views are shifted relative to each other
- mainly along the x axis (with possible small vertical shift). In the rectified images, the
- corresponding epipolar lines in the left and right cameras are horizontal and have the same
- y-coordinate. P1 and P2 look like:
-
- \f[\texttt{P1} = \begin{bmatrix} f & 0 & cx_1 & 0 \\ 0 & f & cy & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix}\f]
-
- \f[\texttt{P2} = \begin{bmatrix} f & 0 & cx_2 & T_x*f \\ 0 & f & cy & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} ,\f]
-
- where \f$T_x\f$ is a horizontal shift between the cameras and \f$cx_1=cx_2\f$ if
- CALIB_ZERO_DISPARITY is set.
-
-- **Vertical stereo**: the first and the second camera views are shifted relative to each other
- mainly in vertical direction (and probably a bit in the horizontal direction too). The epipolar
- lines in the rectified images are vertical and have the same x-coordinate. P1 and P2 look like:
-
- \f[\texttt{P1} = \begin{bmatrix} f & 0 & cx & 0 \\ 0 & f & cy_1 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix}\f]
-
- \f[\texttt{P2} = \begin{bmatrix} f & 0 & cx & 0 \\ 0 & f & cy_2 & T_y*f \\ 0 & 0 & 1 & 0 \end{bmatrix} ,\f]
-
- where \f$T_y\f$ is a vertical shift between the cameras and \f$cy_1=cy_2\f$ if CALIB_ZERO_DISPARITY is
- set.
-
-As you can see, the first three columns of P1 and P2 will effectively be the new "rectified" camera
-matrices. The matrices, together with R1 and R2 , can then be passed to initUndistortRectifyMap to
-initialize the rectification map for each camera.
-
-See below the screenshot from the stereo_calib.cpp sample. Some red horizontal lines pass through
-the corresponding image regions. This means that the images are well rectified, which is what most
-stereo correspondence algorithms rely on. The green rectangles are roi1 and roi2 . You see that
-their interiors are all valid pixels.
-
-
- */
-CV_EXPORTS_W void stereoRectify( InputArray cameraMatrix1, InputArray distCoeffs1,
- InputArray cameraMatrix2, InputArray distCoeffs2,
- Size imageSize, InputArray R, InputArray T,
- OutputArray R1, OutputArray R2,
- OutputArray P1, OutputArray P2,
- OutputArray Q, int flags = CALIB_ZERO_DISPARITY,
- double alpha = -1, Size newImageSize = Size(),
- CV_OUT Rect* validPixROI1 = 0, CV_OUT Rect* validPixROI2 = 0 );
-
-/** @brief Computes a rectification transform for an uncalibrated stereo camera.
-
-@param points1 Array of feature points in the first image.
-@param points2 The corresponding points in the second image. The same formats as in
-findFundamentalMat are supported.
-@param F Input fundamental matrix. It can be computed from the same set of point pairs using
-findFundamentalMat .
-@param imgSize Size of the image.
-@param H1 Output rectification homography matrix for the first image.
-@param H2 Output rectification homography matrix for the second image.
-@param threshold Optional threshold used to filter out the outliers. If the parameter is greater
-than zero, all the point pairs that do not comply with the epipolar geometry (that is, the points
-for which \f$|\texttt{points2[i]}^T*\texttt{F}*\texttt{points1[i]}|>\texttt{threshold}\f$ ) are
-rejected prior to computing the homographies. Otherwise, all the points are considered inliers.
-
-The function computes the rectification transformations without knowing intrinsic parameters of the
-cameras and their relative position in the space, which explains the suffix "uncalibrated". Another
-related difference from stereoRectify is that the function outputs not the rectification
-transformations in the object (3D) space, but the planar perspective transformations encoded by the
-homography matrices H1 and H2 . The function implements the algorithm @cite Hartley99 .
-
-@note
- While the algorithm does not need to know the intrinsic parameters of the cameras, it heavily
- depends on the epipolar geometry. Therefore, if the camera lenses have a significant distortion,
- it would be better to correct it before computing the fundamental matrix and calling this
- function. For example, distortion coefficients can be estimated for each head of stereo camera
- separately by using calibrateCamera . Then, the images can be corrected using undistort , or
- just the point coordinates can be corrected with undistortPoints .
- */
-CV_EXPORTS_W bool stereoRectifyUncalibrated( InputArray points1, InputArray points2,
- InputArray F, Size imgSize,
- OutputArray H1, OutputArray H2,
- double threshold = 5 );
-
-//! computes the rectification transformations for 3-head camera, where all the heads are on the same line.
-CV_EXPORTS_W float rectify3Collinear( InputArray cameraMatrix1, InputArray distCoeffs1,
- InputArray cameraMatrix2, InputArray distCoeffs2,
- InputArray cameraMatrix3, InputArray distCoeffs3,
- InputArrayOfArrays imgpt1, InputArrayOfArrays imgpt3,
- Size imageSize, InputArray R12, InputArray T12,
- InputArray R13, InputArray T13,
- OutputArray R1, OutputArray R2, OutputArray R3,
- OutputArray P1, OutputArray P2, OutputArray P3,
- OutputArray Q, double alpha, Size newImgSize,
- CV_OUT Rect* roi1, CV_OUT Rect* roi2, int flags );
-
-/** @brief Returns the new camera matrix based on the free scaling parameter.
-
-@param cameraMatrix Input camera matrix.
-@param distCoeffs Input vector of distortion coefficients
-\f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ of
-4, 5, 8, 12 or 14 elements. If the vector is NULL/empty, the zero distortion coefficients are
-assumed.
-@param imageSize Original image size.
-@param alpha Free scaling parameter between 0 (when all the pixels in the undistorted image are
-valid) and 1 (when all the source image pixels are retained in the undistorted image). See
-stereoRectify for details.
-@param newImgSize Image size after rectification. By default, it is set to imageSize .
-@param validPixROI Optional output rectangle that outlines all-good-pixels region in the
-undistorted image. See roi1, roi2 description in stereoRectify .
-@param centerPrincipalPoint Optional flag that indicates whether in the new camera matrix the
-principal point should be at the image center or not. By default, the principal point is chosen to
-best fit a subset of the source image (determined by alpha) to the corrected image.
-@return new_camera_matrix Output new camera matrix.
-
-The function computes and returns the optimal new camera matrix based on the free scaling parameter.
-By varying this parameter, you may retrieve only sensible pixels alpha=0 , keep all the original
-image pixels if there is valuable information in the corners alpha=1 , or get something in between.
-When alpha\>0 , the undistorted result is likely to have some black pixels corresponding to
-"virtual" pixels outside of the captured distorted image. The original camera matrix, distortion
-coefficients, the computed new camera matrix, and newImageSize should be passed to
-initUndistortRectifyMap to produce the maps for remap .
- */
-CV_EXPORTS_W Mat getOptimalNewCameraMatrix( InputArray cameraMatrix, InputArray distCoeffs,
- Size imageSize, double alpha, Size newImgSize = Size(),
- CV_OUT Rect* validPixROI = 0,
- bool centerPrincipalPoint = false);
-
-/** @brief Converts points from Euclidean to homogeneous space.
-
-@param src Input vector of N-dimensional points.
-@param dst Output vector of N+1-dimensional points.
-
-The function converts points from Euclidean to homogeneous space by appending 1's to the tuple of
-point coordinates. That is, each point (x1, x2, ..., xn) is converted to (x1, x2, ..., xn, 1).
- */
-CV_EXPORTS_W void convertPointsToHomogeneous( InputArray src, OutputArray dst );
-
-/** @brief Converts points from homogeneous to Euclidean space.
-
-@param src Input vector of N-dimensional points.
-@param dst Output vector of N-1-dimensional points.
-
-The function converts points homogeneous to Euclidean space using perspective projection. That is,
-each point (x1, x2, ... x(n-1), xn) is converted to (x1/xn, x2/xn, ..., x(n-1)/xn). When xn=0, the
-output point coordinates will be (0,0,0,...).
- */
-CV_EXPORTS_W void convertPointsFromHomogeneous( InputArray src, OutputArray dst );
-
-/** @brief Converts points to/from homogeneous coordinates.
-
-@param src Input array or vector of 2D, 3D, or 4D points.
-@param dst Output vector of 2D, 3D, or 4D points.
-
-The function converts 2D or 3D points from/to homogeneous coordinates by calling either
-convertPointsToHomogeneous or convertPointsFromHomogeneous.
-
-@note The function is obsolete. Use one of the previous two functions instead.
- */
-CV_EXPORTS void convertPointsHomogeneous( InputArray src, OutputArray dst );
-
-/** @brief Calculates a fundamental matrix from the corresponding points in two images.
-
-@param points1 Array of N points from the first image. The point coordinates should be
-floating-point (single or double precision).
-@param points2 Array of the second image points of the same size and format as points1 .
-@param method Method for computing a fundamental matrix.
-- **CV_FM_7POINT** for a 7-point algorithm. \f$N = 7\f$
-- **CV_FM_8POINT** for an 8-point algorithm. \f$N \ge 8\f$
-- **CV_FM_RANSAC** for the RANSAC algorithm. \f$N \ge 8\f$
-- **CV_FM_LMEDS** for the LMedS algorithm. \f$N \ge 8\f$
-@param ransacReprojThreshold Parameter used only for RANSAC. It is the maximum distance from a point to an epipolar
-line in pixels, beyond which the point is considered an outlier and is not used for computing the
-final fundamental matrix. It can be set to something like 1-3, depending on the accuracy of the
-point localization, image resolution, and the image noise.
-@param confidence Parameter used for the RANSAC and LMedS methods only. It specifies a desirable level
-of confidence (probability) that the estimated matrix is correct.
-@param mask
-
-The epipolar geometry is described by the following equation:
-
-\f[[p_2; 1]^T F [p_1; 1] = 0\f]
-
-where \f$F\f$ is a fundamental matrix, \f$p_1\f$ and \f$p_2\f$ are corresponding points in the first and the
-second images, respectively.
-
-The function calculates the fundamental matrix using one of four methods listed above and returns
-the found fundamental matrix. Normally just one matrix is found. But in case of the 7-point
-algorithm, the function may return up to 3 solutions ( \f$9 \times 3\f$ matrix that stores all 3
-matrices sequentially).
-
-The calculated fundamental matrix may be passed further to computeCorrespondEpilines that finds the
-epipolar lines corresponding to the specified points. It can also be passed to
-stereoRectifyUncalibrated to compute the rectification transformation. :
-@code
- // Example. Estimation of fundamental matrix using the RANSAC algorithm
- int point_count = 100;
- vector points1(point_count);
- vector points2(point_count);
-
- // initialize the points here ...
- for( int i = 0; i < point_count; i++ )
- {
- points1[i] = ...;
- points2[i] = ...;
- }
-
- Mat fundamental_matrix =
- findFundamentalMat(points1, points2, FM_RANSAC, 3, 0.99);
-@endcode
- */
-CV_EXPORTS_W Mat findFundamentalMat( InputArray points1, InputArray points2,
- int method = FM_RANSAC,
- double ransacReprojThreshold = 3., double confidence = 0.99,
- OutputArray mask = noArray() );
-
-/** @overload */
-CV_EXPORTS Mat findFundamentalMat( InputArray points1, InputArray points2,
- OutputArray mask, int method = FM_RANSAC,
- double ransacReprojThreshold = 3., double confidence = 0.99 );
-
-/** @brief Calculates an essential matrix from the corresponding points in two images.
-
-@param points1 Array of N (N \>= 5) 2D points from the first image. The point coordinates should
-be floating-point (single or double precision).
-@param points2 Array of the second image points of the same size and format as points1 .
-@param cameraMatrix Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ .
-Note that this function assumes that points1 and points2 are feature points from cameras with the
-same camera matrix.
-@param method Method for computing an essential matrix.
-- **RANSAC** for the RANSAC algorithm.
-- **LMEDS** for the LMedS algorithm.
-@param prob Parameter used for the RANSAC or LMedS methods only. It specifies a desirable level of
-confidence (probability) that the estimated matrix is correct.
-@param threshold Parameter used for RANSAC. It is the maximum distance from a point to an epipolar
-line in pixels, beyond which the point is considered an outlier and is not used for computing the
-final fundamental matrix. It can be set to something like 1-3, depending on the accuracy of the
-point localization, image resolution, and the image noise.
-@param mask Output array of N elements, every element of which is set to 0 for outliers and to 1
-for the other points. The array is computed only in the RANSAC and LMedS methods.
-
-This function estimates essential matrix based on the five-point algorithm solver in @cite Nister03 .
-@cite SteweniusCFS is also a related. The epipolar geometry is described by the following equation:
-
-\f[[p_2; 1]^T K^{-T} E K^{-1} [p_1; 1] = 0\f]
-
-where \f$E\f$ is an essential matrix, \f$p_1\f$ and \f$p_2\f$ are corresponding points in the first and the
-second images, respectively. The result of this function may be passed further to
-decomposeEssentialMat or recoverPose to recover the relative pose between cameras.
- */
-CV_EXPORTS_W Mat findEssentialMat( InputArray points1, InputArray points2,
- InputArray cameraMatrix, int method = RANSAC,
- double prob = 0.999, double threshold = 1.0,
- OutputArray mask = noArray() );
-
-/** @overload
-@param points1 Array of N (N \>= 5) 2D points from the first image. The point coordinates should
-be floating-point (single or double precision).
-@param points2 Array of the second image points of the same size and format as points1 .
-@param focal focal length of the camera. Note that this function assumes that points1 and points2
-are feature points from cameras with same focal length and principal point.
-@param pp principal point of the camera.
-@param method Method for computing a fundamental matrix.
-- **RANSAC** for the RANSAC algorithm.
-- **LMEDS** for the LMedS algorithm.
-@param threshold Parameter used for RANSAC. It is the maximum distance from a point to an epipolar
-line in pixels, beyond which the point is considered an outlier and is not used for computing the
-final fundamental matrix. It can be set to something like 1-3, depending on the accuracy of the
-point localization, image resolution, and the image noise.
-@param prob Parameter used for the RANSAC or LMedS methods only. It specifies a desirable level of
-confidence (probability) that the estimated matrix is correct.
-@param mask Output array of N elements, every element of which is set to 0 for outliers and to 1
-for the other points. The array is computed only in the RANSAC and LMedS methods.
-
-This function differs from the one above that it computes camera matrix from focal length and
-principal point:
-
-\f[K =
-\begin{bmatrix}
-f & 0 & x_{pp} \\
-0 & f & y_{pp} \\
-0 & 0 & 1
-\end{bmatrix}\f]
- */
-CV_EXPORTS_W Mat findEssentialMat( InputArray points1, InputArray points2,
- double focal = 1.0, Point2d pp = Point2d(0, 0),
- int method = RANSAC, double prob = 0.999,
- double threshold = 1.0, OutputArray mask = noArray() );
-
-/** @brief Decompose an essential matrix to possible rotations and translation.
-
-@param E The input essential matrix.
-@param R1 One possible rotation matrix.
-@param R2 Another possible rotation matrix.
-@param t One possible translation.
-
-This function decompose an essential matrix E using svd decomposition @cite HartleyZ00 . Generally 4
-possible poses exists for a given E. They are \f$[R_1, t]\f$, \f$[R_1, -t]\f$, \f$[R_2, t]\f$, \f$[R_2, -t]\f$. By
-decomposing E, you can only get the direction of the translation, so the function returns unit t.
- */
-CV_EXPORTS_W void decomposeEssentialMat( InputArray E, OutputArray R1, OutputArray R2, OutputArray t );
-
-/** @brief Recover relative camera rotation and translation from an estimated essential matrix and the
-corresponding points in two images, using cheirality check. Returns the number of inliers which pass
-the check.
-
-@param E The input essential matrix.
-@param points1 Array of N 2D points from the first image. The point coordinates should be
-floating-point (single or double precision).
-@param points2 Array of the second image points of the same size and format as points1 .
-@param cameraMatrix Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ .
-Note that this function assumes that points1 and points2 are feature points from cameras with the
-same camera matrix.
-@param R Recovered relative rotation.
-@param t Recovered relative translation.
-@param mask Input/output mask for inliers in points1 and points2.
-: If it is not empty, then it marks inliers in points1 and points2 for then given essential
-matrix E. Only these inliers will be used to recover pose. In the output mask only inliers
-which pass the cheirality check.
-This function decomposes an essential matrix using decomposeEssentialMat and then verifies possible
-pose hypotheses by doing cheirality check. The cheirality check basically means that the
-triangulated 3D points should have positive depth. Some details can be found in @cite Nister03 .
-
-This function can be used to process output E and mask from findEssentialMat. In this scenario,
-points1 and points2 are the same input for findEssentialMat. :
-@code
- // Example. Estimation of fundamental matrix using the RANSAC algorithm
- int point_count = 100;
- vector points1(point_count);
- vector points2(point_count);
-
- // initialize the points here ...
- for( int i = 0; i < point_count; i++ )
- {
- points1[i] = ...;
- points2[i] = ...;
- }
-
- // cametra matrix with both focal lengths = 1, and principal point = (0, 0)
- Mat cameraMatrix = Mat::eye(3, 3, CV_64F);
-
- Mat E, R, t, mask;
-
- E = findEssentialMat(points1, points2, cameraMatrix, RANSAC, 0.999, 1.0, mask);
- recoverPose(E, points1, points2, cameraMatrix, R, t, mask);
-@endcode
- */
-CV_EXPORTS_W int recoverPose( InputArray E, InputArray points1, InputArray points2,
- InputArray cameraMatrix, OutputArray R, OutputArray t,
- InputOutputArray mask = noArray() );
-
-/** @overload
-@param E The input essential matrix.
-@param points1 Array of N 2D points from the first image. The point coordinates should be
-floating-point (single or double precision).
-@param points2 Array of the second image points of the same size and format as points1 .
-@param R Recovered relative rotation.
-@param t Recovered relative translation.
-@param focal Focal length of the camera. Note that this function assumes that points1 and points2
-are feature points from cameras with same focal length and principal point.
-@param pp principal point of the camera.
-@param mask Input/output mask for inliers in points1 and points2.
-: If it is not empty, then it marks inliers in points1 and points2 for then given essential
-matrix E. Only these inliers will be used to recover pose. In the output mask only inliers
-which pass the cheirality check.
-
-This function differs from the one above that it computes camera matrix from focal length and
-principal point:
-
-\f[K =
-\begin{bmatrix}
-f & 0 & x_{pp} \\
-0 & f & y_{pp} \\
-0 & 0 & 1
-\end{bmatrix}\f]
- */
-CV_EXPORTS_W int recoverPose( InputArray E, InputArray points1, InputArray points2,
- OutputArray R, OutputArray t,
- double focal = 1.0, Point2d pp = Point2d(0, 0),
- InputOutputArray mask = noArray() );
-
-/** @overload
-@param E The input essential matrix.
-@param points1 Array of N 2D points from the first image. The point coordinates should be
-floating-point (single or double precision).
-@param points2 Array of the second image points of the same size and format as points1.
-@param cameraMatrix Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ .
-Note that this function assumes that points1 and points2 are feature points from cameras with the
-same camera matrix.
-@param R Recovered relative rotation.
-@param t Recovered relative translation.
-@param distanceThresh threshold distance which is used to filter out far away points (i.e. infinite points).
-@param mask Input/output mask for inliers in points1 and points2.
-: If it is not empty, then it marks inliers in points1 and points2 for then given essential
-matrix E. Only these inliers will be used to recover pose. In the output mask only inliers
-which pass the cheirality check.
-@param triangulatedPoints 3d points which were reconstructed by triangulation.
- */
-
-CV_EXPORTS_W int recoverPose( InputArray E, InputArray points1, InputArray points2,
- InputArray cameraMatrix, OutputArray R, OutputArray t, double distanceThresh, InputOutputArray mask = noArray(),
- OutputArray triangulatedPoints = noArray());
-
-/** @brief For points in an image of a stereo pair, computes the corresponding epilines in the other image.
-
-@param points Input points. \f$N \times 1\f$ or \f$1 \times N\f$ matrix of type CV_32FC2 or
-vector\ .
-@param whichImage Index of the image (1 or 2) that contains the points .
-@param F Fundamental matrix that can be estimated using findFundamentalMat or stereoRectify .
-@param lines Output vector of the epipolar lines corresponding to the points in the other image.
-Each line \f$ax + by + c=0\f$ is encoded by 3 numbers \f$(a, b, c)\f$ .
-
-For every point in one of the two images of a stereo pair, the function finds the equation of the
-corresponding epipolar line in the other image.
-
-From the fundamental matrix definition (see findFundamentalMat ), line \f$l^{(2)}_i\f$ in the second
-image for the point \f$p^{(1)}_i\f$ in the first image (when whichImage=1 ) is computed as:
-
-\f[l^{(2)}_i = F p^{(1)}_i\f]
-
-And vice versa, when whichImage=2, \f$l^{(1)}_i\f$ is computed from \f$p^{(2)}_i\f$ as:
-
-\f[l^{(1)}_i = F^T p^{(2)}_i\f]
-
-Line coefficients are defined up to a scale. They are normalized so that \f$a_i^2+b_i^2=1\f$ .
- */
-CV_EXPORTS_W void computeCorrespondEpilines( InputArray points, int whichImage,
- InputArray F, OutputArray lines );
-
-/** @brief Reconstructs points by triangulation.
-
-@param projMatr1 3x4 projection matrix of the first camera.
-@param projMatr2 3x4 projection matrix of the second camera.
-@param projPoints1 2xN array of feature points in the first image. In case of c++ version it can
-be also a vector of feature points or two-channel matrix of size 1xN or Nx1.
-@param projPoints2 2xN array of corresponding points in the second image. In case of c++ version
-it can be also a vector of feature points or two-channel matrix of size 1xN or Nx1.
-@param points4D 4xN array of reconstructed points in homogeneous coordinates.
-
-The function reconstructs 3-dimensional points (in homogeneous coordinates) by using their
-observations with a stereo camera. Projections matrices can be obtained from stereoRectify.
-
-@note
- Keep in mind that all input data should be of float type in order for this function to work.
-
-@sa
- reprojectImageTo3D
- */
-CV_EXPORTS_W void triangulatePoints( InputArray projMatr1, InputArray projMatr2,
- InputArray projPoints1, InputArray projPoints2,
- OutputArray points4D );
-
-/** @brief Refines coordinates of corresponding points.
-
-@param F 3x3 fundamental matrix.
-@param points1 1xN array containing the first set of points.
-@param points2 1xN array containing the second set of points.
-@param newPoints1 The optimized points1.
-@param newPoints2 The optimized points2.
-
-The function implements the Optimal Triangulation Method (see Multiple View Geometry for details).
-For each given point correspondence points1[i] \<-\> points2[i], and a fundamental matrix F, it
-computes the corrected correspondences newPoints1[i] \<-\> newPoints2[i] that minimize the geometric
-error \f$d(points1[i], newPoints1[i])^2 + d(points2[i],newPoints2[i])^2\f$ (where \f$d(a,b)\f$ is the
-geometric distance between points \f$a\f$ and \f$b\f$ ) subject to the epipolar constraint
-\f$newPoints2^T * F * newPoints1 = 0\f$ .
- */
-CV_EXPORTS_W void correctMatches( InputArray F, InputArray points1, InputArray points2,
- OutputArray newPoints1, OutputArray newPoints2 );
-
-/** @brief Filters off small noise blobs (speckles) in the disparity map
-
-@param img The input 16-bit signed disparity image
-@param newVal The disparity value used to paint-off the speckles
-@param maxSpeckleSize The maximum speckle size to consider it a speckle. Larger blobs are not
-affected by the algorithm
-@param maxDiff Maximum difference between neighbor disparity pixels to put them into the same
-blob. Note that since StereoBM, StereoSGBM and may be other algorithms return a fixed-point
-disparity map, where disparity values are multiplied by 16, this scale factor should be taken into
-account when specifying this parameter value.
-@param buf The optional temporary buffer to avoid memory allocation within the function.
- */
-CV_EXPORTS_W void filterSpeckles( InputOutputArray img, double newVal,
- int maxSpeckleSize, double maxDiff,
- InputOutputArray buf = noArray() );
-
-//! computes valid disparity ROI from the valid ROIs of the rectified images (that are returned by cv::stereoRectify())
-CV_EXPORTS_W Rect getValidDisparityROI( Rect roi1, Rect roi2,
- int minDisparity, int numberOfDisparities,
- int SADWindowSize );
-
-//! validates disparity using the left-right check. The matrix "cost" should be computed by the stereo correspondence algorithm
-CV_EXPORTS_W void validateDisparity( InputOutputArray disparity, InputArray cost,
- int minDisparity, int numberOfDisparities,
- int disp12MaxDisp = 1 );
-
-/** @brief Reprojects a disparity image to 3D space.
-
-@param disparity Input single-channel 8-bit unsigned, 16-bit signed, 32-bit signed or 32-bit
-floating-point disparity image. If 16-bit signed format is used, the values are assumed to have no
-fractional bits.
-@param _3dImage Output 3-channel floating-point image of the same size as disparity . Each
-element of _3dImage(x,y) contains 3D coordinates of the point (x,y) computed from the disparity
-map.
-@param Q \f$4 \times 4\f$ perspective transformation matrix that can be obtained with stereoRectify.
-@param handleMissingValues Indicates, whether the function should handle missing values (i.e.
-points where the disparity was not computed). If handleMissingValues=true, then pixels with the
-minimal disparity that corresponds to the outliers (see StereoMatcher::compute ) are transformed
-to 3D points with a very large Z value (currently set to 10000).
-@param ddepth The optional output array depth. If it is -1, the output image will have CV_32F
-depth. ddepth can also be set to CV_16S, CV_32S or CV_32F.
-
-The function transforms a single-channel disparity map to a 3-channel image representing a 3D
-surface. That is, for each pixel (x,y) and the corresponding disparity d=disparity(x,y) , it
-computes:
-
-\f[\begin{array}{l} [X \; Y \; Z \; W]^T = \texttt{Q} *[x \; y \; \texttt{disparity} (x,y) \; 1]^T \\ \texttt{\_3dImage} (x,y) = (X/W, \; Y/W, \; Z/W) \end{array}\f]
-
-The matrix Q can be an arbitrary \f$4 \times 4\f$ matrix (for example, the one computed by
-stereoRectify). To reproject a sparse set of points {(x,y,d),...} to 3D space, use
-perspectiveTransform .
- */
-CV_EXPORTS_W void reprojectImageTo3D( InputArray disparity,
- OutputArray _3dImage, InputArray Q,
- bool handleMissingValues = false,
- int ddepth = -1 );
-
-/** @brief Calculates the Sampson Distance between two points.
-
-The function cv::sampsonDistance calculates and returns the first order approximation of the geometric error as:
-\f[
-sd( \texttt{pt1} , \texttt{pt2} )=
-\frac{(\texttt{pt2}^t \cdot \texttt{F} \cdot \texttt{pt1})^2}
-{((\texttt{F} \cdot \texttt{pt1})(0))^2 +
-((\texttt{F} \cdot \texttt{pt1})(1))^2 +
-((\texttt{F}^t \cdot \texttt{pt2})(0))^2 +
-((\texttt{F}^t \cdot \texttt{pt2})(1))^2}
-\f]
-The fundamental matrix may be calculated using the cv::findFundamentalMat function. See @cite HartleyZ00 11.4.3 for details.
-@param pt1 first homogeneous 2d point
-@param pt2 second homogeneous 2d point
-@param F fundamental matrix
-@return The computed Sampson distance.
-*/
-CV_EXPORTS_W double sampsonDistance(InputArray pt1, InputArray pt2, InputArray F);
-
-/** @brief Computes an optimal affine transformation between two 3D point sets.
-
-It computes
-\f[
-\begin{bmatrix}
-x\\
-y\\
-z\\
-\end{bmatrix}
-=
-\begin{bmatrix}
-a_{11} & a_{12} & a_{13}\\
-a_{21} & a_{22} & a_{23}\\
-a_{31} & a_{32} & a_{33}\\
-\end{bmatrix}
-\begin{bmatrix}
-X\\
-Y\\
-Z\\
-\end{bmatrix}
-+
-\begin{bmatrix}
-b_1\\
-b_2\\
-b_3\\
-\end{bmatrix}
-\f]
-
-@param src First input 3D point set containing \f$(X,Y,Z)\f$.
-@param dst Second input 3D point set containing \f$(x,y,z)\f$.
-@param out Output 3D affine transformation matrix \f$3 \times 4\f$ of the form
-\f[
-\begin{bmatrix}
-a_{11} & a_{12} & a_{13} & b_1\\
-a_{21} & a_{22} & a_{23} & b_2\\
-a_{31} & a_{32} & a_{33} & b_3\\
-\end{bmatrix}
-\f]
-@param inliers Output vector indicating which points are inliers (1-inlier, 0-outlier).
-@param ransacThreshold Maximum reprojection error in the RANSAC algorithm to consider a point as
-an inlier.
-@param confidence Confidence level, between 0 and 1, for the estimated transformation. Anything
-between 0.95 and 0.99 is usually good enough. Values too close to 1 can slow down the estimation
-significantly. Values lower than 0.8-0.9 can result in an incorrectly estimated transformation.
-
-The function estimates an optimal 3D affine transformation between two 3D point sets using the
-RANSAC algorithm.
- */
-CV_EXPORTS_W int estimateAffine3D(InputArray src, InputArray dst,
- OutputArray out, OutputArray inliers,
- double ransacThreshold = 3, double confidence = 0.99);
-
-/** @brief Computes an optimal affine transformation between two 2D point sets.
-
-It computes
-\f[
-\begin{bmatrix}
-x\\
-y\\
-\end{bmatrix}
-=
-\begin{bmatrix}
-a_{11} & a_{12}\\
-a_{21} & a_{22}\\
-\end{bmatrix}
-\begin{bmatrix}
-X\\
-Y\\
-\end{bmatrix}
-+
-\begin{bmatrix}
-b_1\\
-b_2\\
-\end{bmatrix}
-\f]
-
-@param from First input 2D point set containing \f$(X,Y)\f$.
-@param to Second input 2D point set containing \f$(x,y)\f$.
-@param inliers Output vector indicating which points are inliers (1-inlier, 0-outlier).
-@param method Robust method used to compute transformation. The following methods are possible:
-- cv::RANSAC - RANSAC-based robust method
-- cv::LMEDS - Least-Median robust method
-RANSAC is the default method.
-@param ransacReprojThreshold Maximum reprojection error in the RANSAC algorithm to consider
-a point as an inlier. Applies only to RANSAC.
-@param maxIters The maximum number of robust method iterations.
-@param confidence Confidence level, between 0 and 1, for the estimated transformation. Anything
-between 0.95 and 0.99 is usually good enough. Values too close to 1 can slow down the estimation
-significantly. Values lower than 0.8-0.9 can result in an incorrectly estimated transformation.
-@param refineIters Maximum number of iterations of refining algorithm (Levenberg-Marquardt).
-Passing 0 will disable refining, so the output matrix will be output of robust method.
-
-@return Output 2D affine transformation matrix \f$2 \times 3\f$ or empty matrix if transformation
-could not be estimated. The returned matrix has the following form:
-\f[
-\begin{bmatrix}
-a_{11} & a_{12} & b_1\\
-a_{21} & a_{22} & b_2\\
-\end{bmatrix}
-\f]
-
-The function estimates an optimal 2D affine transformation between two 2D point sets using the
-selected robust algorithm.
-
-The computed transformation is then refined further (using only inliers) with the
-Levenberg-Marquardt method to reduce the re-projection error even more.
-
-@note
-The RANSAC method can handle practically any ratio of outliers but needs a threshold to
-distinguish inliers from outliers. The method LMeDS does not need any threshold but it works
-correctly only when there are more than 50% of inliers.
-
-@sa estimateAffinePartial2D, getAffineTransform
-*/
-CV_EXPORTS_W cv::Mat estimateAffine2D(InputArray from, InputArray to, OutputArray inliers = noArray(),
- int method = RANSAC, double ransacReprojThreshold = 3,
- size_t maxIters = 2000, double confidence = 0.99,
- size_t refineIters = 10);
-
-/** @brief Computes an optimal limited affine transformation with 4 degrees of freedom between
-two 2D point sets.
-
-@param from First input 2D point set.
-@param to Second input 2D point set.
-@param inliers Output vector indicating which points are inliers.
-@param method Robust method used to compute transformation. The following methods are possible:
-- cv::RANSAC - RANSAC-based robust method
-- cv::LMEDS - Least-Median robust method
-RANSAC is the default method.
-@param ransacReprojThreshold Maximum reprojection error in the RANSAC algorithm to consider
-a point as an inlier. Applies only to RANSAC.
-@param maxIters The maximum number of robust method iterations.
-@param confidence Confidence level, between 0 and 1, for the estimated transformation. Anything
-between 0.95 and 0.99 is usually good enough. Values too close to 1 can slow down the estimation
-significantly. Values lower than 0.8-0.9 can result in an incorrectly estimated transformation.
-@param refineIters Maximum number of iterations of refining algorithm (Levenberg-Marquardt).
-Passing 0 will disable refining, so the output matrix will be output of robust method.
-
-@return Output 2D affine transformation (4 degrees of freedom) matrix \f$2 \times 3\f$ or
-empty matrix if transformation could not be estimated.
-
-The function estimates an optimal 2D affine transformation with 4 degrees of freedom limited to
-combinations of translation, rotation, and uniform scaling. Uses the selected algorithm for robust
-estimation.
-
-The computed transformation is then refined further (using only inliers) with the
-Levenberg-Marquardt method to reduce the re-projection error even more.
-
-Estimated transformation matrix is:
-\f[ \begin{bmatrix} \cos(\theta) \cdot s & -\sin(\theta) \cdot s & t_x \\
- \sin(\theta) \cdot s & \cos(\theta) \cdot s & t_y
-\end{bmatrix} \f]
-Where \f$ \theta \f$ is the rotation angle, \f$ s \f$ the scaling factor and \f$ t_x, t_y \f$ are
-translations in \f$ x, y \f$ axes respectively.
-
-@note
-The RANSAC method can handle practically any ratio of outliers but need a threshold to
-distinguish inliers from outliers. The method LMeDS does not need any threshold but it works
-correctly only when there are more than 50% of inliers.
-
-@sa estimateAffine2D, getAffineTransform
-*/
-CV_EXPORTS_W cv::Mat estimateAffinePartial2D(InputArray from, InputArray to, OutputArray inliers = noArray(),
- int method = RANSAC, double ransacReprojThreshold = 3,
- size_t maxIters = 2000, double confidence = 0.99,
- size_t refineIters = 10);
-
-/** @example decompose_homography.cpp
- An example program with homography decomposition.
-
- Check @ref tutorial_homography "the corresponding tutorial" for more details.
- */
-
-/** @brief Decompose a homography matrix to rotation(s), translation(s) and plane normal(s).
-
-@param H The input homography matrix between two images.
-@param K The input intrinsic camera calibration matrix.
-@param rotations Array of rotation matrices.
-@param translations Array of translation matrices.
-@param normals Array of plane normal matrices.
-
-This function extracts relative camera motion between two views observing a planar object from the
-homography H induced by the plane. The intrinsic camera matrix K must also be provided. The function
-may return up to four mathematical solution sets. At least two of the solutions may further be
-invalidated if point correspondences are available by applying positive depth constraint (all points
-must be in front of the camera). The decomposition method is described in detail in @cite Malis .
- */
-CV_EXPORTS_W int decomposeHomographyMat(InputArray H,
- InputArray K,
- OutputArrayOfArrays rotations,
- OutputArrayOfArrays translations,
- OutputArrayOfArrays normals);
-
-/** @brief Filters homography decompositions based on additional information.
-
-@param rotations Vector of rotation matrices.
-@param normals Vector of plane normal matrices.
-@param beforePoints Vector of (rectified) visible reference points before the homography is applied
-@param afterPoints Vector of (rectified) visible reference points after the homography is applied
-@param possibleSolutions Vector of int indices representing the viable solution set after filtering
-@param pointsMask optional Mat/Vector of 8u type representing the mask for the inliers as given by the findHomography function
-
-This function is intended to filter the output of the decomposeHomographyMat based on additional
-information as described in @cite Malis . The summary of the method: the decomposeHomographyMat function
-returns 2 unique solutions and their "opposites" for a total of 4 solutions. If we have access to the
-sets of points visible in the camera frame before and after the homography transformation is applied,
-we can determine which are the true potential solutions and which are the opposites by verifying which
-homographies are consistent with all visible reference points being in front of the camera. The inputs
-are left unchanged; the filtered solution set is returned as indices into the existing one.
-
-*/
-CV_EXPORTS_W void filterHomographyDecompByVisibleRefpoints(InputArrayOfArrays rotations,
- InputArrayOfArrays normals,
- InputArray beforePoints,
- InputArray afterPoints,
- OutputArray possibleSolutions,
- InputArray pointsMask = noArray());
-
-/** @brief The base class for stereo correspondence algorithms.
- */
-class CV_EXPORTS_W StereoMatcher : public Algorithm
-{
-public:
- enum { DISP_SHIFT = 4,
- DISP_SCALE = (1 << DISP_SHIFT)
- };
-
- /** @brief Computes disparity map for the specified stereo pair
-
- @param left Left 8-bit single-channel image.
- @param right Right image of the same size and the same type as the left one.
- @param disparity Output disparity map. It has the same size as the input images. Some algorithms,
- like StereoBM or StereoSGBM compute 16-bit fixed-point disparity map (where each disparity value
- has 4 fractional bits), whereas other algorithms output 32-bit floating-point disparity map.
- */
- CV_WRAP virtual void compute( InputArray left, InputArray right,
- OutputArray disparity ) = 0;
-
- CV_WRAP virtual int getMinDisparity() const = 0;
- CV_WRAP virtual void setMinDisparity(int minDisparity) = 0;
-
- CV_WRAP virtual int getNumDisparities() const = 0;
- CV_WRAP virtual void setNumDisparities(int numDisparities) = 0;
-
- CV_WRAP virtual int getBlockSize() const = 0;
- CV_WRAP virtual void setBlockSize(int blockSize) = 0;
-
- CV_WRAP virtual int getSpeckleWindowSize() const = 0;
- CV_WRAP virtual void setSpeckleWindowSize(int speckleWindowSize) = 0;
-
- CV_WRAP virtual int getSpeckleRange() const = 0;
- CV_WRAP virtual void setSpeckleRange(int speckleRange) = 0;
-
- CV_WRAP virtual int getDisp12MaxDiff() const = 0;
- CV_WRAP virtual void setDisp12MaxDiff(int disp12MaxDiff) = 0;
-};
-
-
-/** @brief Class for computing stereo correspondence using the block matching algorithm, introduced and
-contributed to OpenCV by K. Konolige.
- */
-class CV_EXPORTS_W StereoBM : public StereoMatcher
-{
-public:
- enum { PREFILTER_NORMALIZED_RESPONSE = 0,
- PREFILTER_XSOBEL = 1
- };
-
- CV_WRAP virtual int getPreFilterType() const = 0;
- CV_WRAP virtual void setPreFilterType(int preFilterType) = 0;
-
- CV_WRAP virtual int getPreFilterSize() const = 0;
- CV_WRAP virtual void setPreFilterSize(int preFilterSize) = 0;
-
- CV_WRAP virtual int getPreFilterCap() const = 0;
- CV_WRAP virtual void setPreFilterCap(int preFilterCap) = 0;
-
- CV_WRAP virtual int getTextureThreshold() const = 0;
- CV_WRAP virtual void setTextureThreshold(int textureThreshold) = 0;
-
- CV_WRAP virtual int getUniquenessRatio() const = 0;
- CV_WRAP virtual void setUniquenessRatio(int uniquenessRatio) = 0;
-
- CV_WRAP virtual int getSmallerBlockSize() const = 0;
- CV_WRAP virtual void setSmallerBlockSize(int blockSize) = 0;
-
- CV_WRAP virtual Rect getROI1() const = 0;
- CV_WRAP virtual void setROI1(Rect roi1) = 0;
-
- CV_WRAP virtual Rect getROI2() const = 0;
- CV_WRAP virtual void setROI2(Rect roi2) = 0;
-
- /** @brief Creates StereoBM object
-
- @param numDisparities the disparity search range. For each pixel algorithm will find the best
- disparity from 0 (default minimum disparity) to numDisparities. The search range can then be
- shifted by changing the minimum disparity.
- @param blockSize the linear size of the blocks compared by the algorithm. The size should be odd
- (as the block is centered at the current pixel). Larger block size implies smoother, though less
- accurate disparity map. Smaller block size gives more detailed disparity map, but there is higher
- chance for algorithm to find a wrong correspondence.
-
- The function create StereoBM object. You can then call StereoBM::compute() to compute disparity for
- a specific stereo pair.
- */
- CV_WRAP static Ptr create(int numDisparities = 0, int blockSize = 21);
-};
-
-/** @brief The class implements the modified H. Hirschmuller algorithm @cite HH08 that differs from the original
-one as follows:
-
-- By default, the algorithm is single-pass, which means that you consider only 5 directions
-instead of 8. Set mode=StereoSGBM::MODE_HH in createStereoSGBM to run the full variant of the
-algorithm but beware that it may consume a lot of memory.
-- The algorithm matches blocks, not individual pixels. Though, setting blockSize=1 reduces the
-blocks to single pixels.
-- Mutual information cost function is not implemented. Instead, a simpler Birchfield-Tomasi
-sub-pixel metric from @cite BT98 is used. Though, the color images are supported as well.
-- Some pre- and post- processing steps from K. Konolige algorithm StereoBM are included, for
-example: pre-filtering (StereoBM::PREFILTER_XSOBEL type) and post-filtering (uniqueness
-check, quadratic interpolation and speckle filtering).
-
-@note
- - (Python) An example illustrating the use of the StereoSGBM matching algorithm can be found
- at opencv_source_code/samples/python/stereo_match.py
- */
-class CV_EXPORTS_W StereoSGBM : public StereoMatcher
-{
-public:
- enum
- {
- MODE_SGBM = 0,
- MODE_HH = 1,
- MODE_SGBM_3WAY = 2,
- MODE_HH4 = 3
- };
-
- CV_WRAP virtual int getPreFilterCap() const = 0;
- CV_WRAP virtual void setPreFilterCap(int preFilterCap) = 0;
-
- CV_WRAP virtual int getUniquenessRatio() const = 0;
- CV_WRAP virtual void setUniquenessRatio(int uniquenessRatio) = 0;
-
- CV_WRAP virtual int getP1() const = 0;
- CV_WRAP virtual void setP1(int P1) = 0;
-
- CV_WRAP virtual int getP2() const = 0;
- CV_WRAP virtual void setP2(int P2) = 0;
-
- CV_WRAP virtual int getMode() const = 0;
- CV_WRAP virtual void setMode(int mode) = 0;
-
- /** @brief Creates StereoSGBM object
-
- @param minDisparity Minimum possible disparity value. Normally, it is zero but sometimes
- rectification algorithms can shift images, so this parameter needs to be adjusted accordingly.
- @param numDisparities Maximum disparity minus minimum disparity. The value is always greater than
- zero. In the current implementation, this parameter must be divisible by 16.
- @param blockSize Matched block size. It must be an odd number \>=1 . Normally, it should be
- somewhere in the 3..11 range.
- @param P1 The first parameter controlling the disparity smoothness. See below.
- @param P2 The second parameter controlling the disparity smoothness. The larger the values are,
- the smoother the disparity is. P1 is the penalty on the disparity change by plus or minus 1
- between neighbor pixels. P2 is the penalty on the disparity change by more than 1 between neighbor
- pixels. The algorithm requires P2 \> P1 . See stereo_match.cpp sample where some reasonably good
- P1 and P2 values are shown (like 8\*number_of_image_channels\*SADWindowSize\*SADWindowSize and
- 32\*number_of_image_channels\*SADWindowSize\*SADWindowSize , respectively).
- @param disp12MaxDiff Maximum allowed difference (in integer pixel units) in the left-right
- disparity check. Set it to a non-positive value to disable the check.
- @param preFilterCap Truncation value for the prefiltered image pixels. The algorithm first
- computes x-derivative at each pixel and clips its value by [-preFilterCap, preFilterCap] interval.
- The result values are passed to the Birchfield-Tomasi pixel cost function.
- @param uniquenessRatio Margin in percentage by which the best (minimum) computed cost function
- value should "win" the second best value to consider the found match correct. Normally, a value
- within the 5-15 range is good enough.
- @param speckleWindowSize Maximum size of smooth disparity regions to consider their noise speckles
- and invalidate. Set it to 0 to disable speckle filtering. Otherwise, set it somewhere in the
- 50-200 range.
- @param speckleRange Maximum disparity variation within each connected component. If you do speckle
- filtering, set the parameter to a positive value, it will be implicitly multiplied by 16.
- Normally, 1 or 2 is good enough.
- @param mode Set it to StereoSGBM::MODE_HH to run the full-scale two-pass dynamic programming
- algorithm. It will consume O(W\*H\*numDisparities) bytes, which is large for 640x480 stereo and
- huge for HD-size pictures. By default, it is set to false .
-
- The first constructor initializes StereoSGBM with all the default parameters. So, you only have to
- set StereoSGBM::numDisparities at minimum. The second constructor enables you to set each parameter
- to a custom value.
- */
- CV_WRAP static Ptr create(int minDisparity = 0, int numDisparities = 16, int blockSize = 3,
- int P1 = 0, int P2 = 0, int disp12MaxDiff = 0,
- int preFilterCap = 0, int uniquenessRatio = 0,
- int speckleWindowSize = 0, int speckleRange = 0,
- int mode = StereoSGBM::MODE_SGBM);
-};
-
-//! @} calib3d
-
-/** @brief The methods in this namespace use a so-called fisheye camera model.
- @ingroup calib3d_fisheye
-*/
-namespace fisheye
-{
-//! @addtogroup calib3d_fisheye
-//! @{
-
- enum{
- CALIB_USE_INTRINSIC_GUESS = 1 << 0,
- CALIB_RECOMPUTE_EXTRINSIC = 1 << 1,
- CALIB_CHECK_COND = 1 << 2,
- CALIB_FIX_SKEW = 1 << 3,
- CALIB_FIX_K1 = 1 << 4,
- CALIB_FIX_K2 = 1 << 5,
- CALIB_FIX_K3 = 1 << 6,
- CALIB_FIX_K4 = 1 << 7,
- CALIB_FIX_INTRINSIC = 1 << 8,
- CALIB_FIX_PRINCIPAL_POINT = 1 << 9
- };
-
- /** @brief Projects points using fisheye model
-
- @param objectPoints Array of object points, 1xN/Nx1 3-channel (or vector\ ), where N is
- the number of points in the view.
- @param imagePoints Output array of image points, 2xN/Nx2 1-channel or 1xN/Nx1 2-channel, or
- vector\.
- @param affine
- @param K Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\f$.
- @param D Input vector of distortion coefficients \f$(k_1, k_2, k_3, k_4)\f$.
- @param alpha The skew coefficient.
- @param jacobian Optional output 2Nx15 jacobian matrix of derivatives of image points with respect
- to components of the focal lengths, coordinates of the principal point, distortion coefficients,
- rotation vector, translation vector, and the skew. In the old interface different components of
- the jacobian are returned via different output parameters.
-
- The function computes projections of 3D points to the image plane given intrinsic and extrinsic
- camera parameters. Optionally, the function computes Jacobians - matrices of partial derivatives of
- image points coordinates (as functions of all the input parameters) with respect to the particular
- parameters, intrinsic and/or extrinsic.
- */
- CV_EXPORTS void projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine,
- InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray());
-
- /** @overload */
- CV_EXPORTS_W void projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec,
- InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray());
-
- /** @brief Distorts 2D points using fisheye model.
-
- @param undistorted Array of object points, 1xN/Nx1 2-channel (or vector\ ), where N is
- the number of points in the view.
- @param K Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\f$.
- @param D Input vector of distortion coefficients \f$(k_1, k_2, k_3, k_4)\f$.
- @param alpha The skew coefficient.
- @param distorted Output array of image points, 1xN/Nx1 2-channel, or vector\ .
-
- Note that the function assumes the camera matrix of the undistorted points to be identity.
- This means if you want to transform back points undistorted with undistortPoints() you have to
- multiply them with \f$P^{-1}\f$.
- */
- CV_EXPORTS_W void distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha = 0);
-
- /** @brief Undistorts 2D points using fisheye model
-
- @param distorted Array of object points, 1xN/Nx1 2-channel (or vector\ ), where N is the
- number of points in the view.
- @param K Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\f$.
- @param D Input vector of distortion coefficients \f$(k_1, k_2, k_3, k_4)\f$.
- @param R Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3
- 1-channel or 1x1 3-channel
- @param P New camera matrix (3x3) or new projection matrix (3x4)
- @param undistorted Output array of image points, 1xN/Nx1 2-channel, or vector\ .
- */
- CV_EXPORTS_W void undistortPoints(InputArray distorted, OutputArray undistorted,
- InputArray K, InputArray D, InputArray R = noArray(), InputArray P = noArray());
-
- /** @brief Computes undistortion and rectification maps for image transform by cv::remap(). If D is empty zero
- distortion is used, if R or P is empty identity matrixes are used.
-
- @param K Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\f$.
- @param D Input vector of distortion coefficients \f$(k_1, k_2, k_3, k_4)\f$.
- @param R Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3
- 1-channel or 1x1 3-channel
- @param P New camera matrix (3x3) or new projection matrix (3x4)
- @param size Undistorted image size.
- @param m1type Type of the first output map that can be CV_32FC1 or CV_16SC2 . See convertMaps()
- for details.
- @param map1 The first output map.
- @param map2 The second output map.
- */
- CV_EXPORTS_W void initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P,
- const cv::Size& size, int m1type, OutputArray map1, OutputArray map2);
-
- /** @brief Transforms an image to compensate for fisheye lens distortion.
-
- @param distorted image with fisheye lens distortion.
- @param undistorted Output image with compensated fisheye lens distortion.
- @param K Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\f$.
- @param D Input vector of distortion coefficients \f$(k_1, k_2, k_3, k_4)\f$.
- @param Knew Camera matrix of the distorted image. By default, it is the identity matrix but you
- may additionally scale and shift the result by using a different matrix.
- @param new_size
-
- The function transforms an image to compensate radial and tangential lens distortion.
-
- The function is simply a combination of fisheye::initUndistortRectifyMap (with unity R ) and remap
- (with bilinear interpolation). See the former function for details of the transformation being
- performed.
-
- See below the results of undistortImage.
- - a\) result of undistort of perspective camera model (all possible coefficients (k_1, k_2, k_3,
- k_4, k_5, k_6) of distortion were optimized under calibration)
- - b\) result of fisheye::undistortImage of fisheye camera model (all possible coefficients (k_1, k_2,
- k_3, k_4) of fisheye distortion were optimized under calibration)
- - c\) original image was captured with fisheye lens
-
- Pictures a) and b) almost the same. But if we consider points of image located far from the center
- of image, we can notice that on image a) these points are distorted.
-
- 
- */
- CV_EXPORTS_W void undistortImage(InputArray distorted, OutputArray undistorted,
- InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size());
-
- /** @brief Estimates new camera matrix for undistortion or rectification.
-
- @param K Camera matrix \f$K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\f$.
- @param image_size
- @param D Input vector of distortion coefficients \f$(k_1, k_2, k_3, k_4)\f$.
- @param R Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3
- 1-channel or 1x1 3-channel
- @param P New camera matrix (3x3) or new projection matrix (3x4)
- @param balance Sets the new focal length in range between the min focal length and the max focal
- length. Balance is in range of [0, 1].
- @param new_size
- @param fov_scale Divisor for new focal length.
- */
- CV_EXPORTS_W void estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R,
- OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0);
-
- /** @brief Performs camera calibaration
-
- @param objectPoints vector of vectors of calibration pattern points in the calibration pattern
- coordinate space.
- @param imagePoints vector of vectors of the projections of calibration pattern points.
- imagePoints.size() and objectPoints.size() and imagePoints[i].size() must be equal to
- objectPoints[i].size() for each i.
- @param image_size Size of the image used only to initialize the intrinsic camera matrix.
- @param K Output 3x3 floating-point camera matrix
- \f$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ . If
- fisheye::CALIB_USE_INTRINSIC_GUESS/ is specified, some or all of fx, fy, cx, cy must be
- initialized before calling the function.
- @param D Output vector of distortion coefficients \f$(k_1, k_2, k_3, k_4)\f$.
- @param rvecs Output vector of rotation vectors (see Rodrigues ) estimated for each pattern view.
- That is, each k-th rotation vector together with the corresponding k-th translation vector (see
- the next output parameter description) brings the calibration pattern from the model coordinate
- space (in which object points are specified) to the world coordinate space, that is, a real
- position of the calibration pattern in the k-th pattern view (k=0.. *M* -1).
- @param tvecs Output vector of translation vectors estimated for each pattern view.
- @param flags Different flags that may be zero or a combination of the following values:
- - **fisheye::CALIB_USE_INTRINSIC_GUESS** cameraMatrix contains valid initial values of
- fx, fy, cx, cy that are optimized further. Otherwise, (cx, cy) is initially set to the image
- center ( imageSize is used), and focal distances are computed in a least-squares fashion.
- - **fisheye::CALIB_RECOMPUTE_EXTRINSIC** Extrinsic will be recomputed after each iteration
- of intrinsic optimization.
- - **fisheye::CALIB_CHECK_COND** The functions will check validity of condition number.
- - **fisheye::CALIB_FIX_SKEW** Skew coefficient (alpha) is set to zero and stay zero.
- - **fisheye::CALIB_FIX_K1..fisheye::CALIB_FIX_K4** Selected distortion coefficients
- are set to zeros and stay zero.
- - **fisheye::CALIB_FIX_PRINCIPAL_POINT** The principal point is not changed during the global
-optimization. It stays at the center or at a different location specified when CALIB_USE_INTRINSIC_GUESS is set too.
- @param criteria Termination criteria for the iterative optimization algorithm.
- */
- CV_EXPORTS_W double calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size,
- InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0,
- TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON));
-
- /** @brief Stereo rectification for fisheye camera model
-
- @param K1 First camera matrix.
- @param D1 First camera distortion parameters.
- @param K2 Second camera matrix.
- @param D2 Second camera distortion parameters.
- @param imageSize Size of the image used for stereo calibration.
- @param R Rotation matrix between the coordinate systems of the first and the second
- cameras.
- @param tvec Translation vector between coordinate systems of the cameras.
- @param R1 Output 3x3 rectification transform (rotation matrix) for the first camera.
- @param R2 Output 3x3 rectification transform (rotation matrix) for the second camera.
- @param P1 Output 3x4 projection matrix in the new (rectified) coordinate systems for the first
- camera.
- @param P2 Output 3x4 projection matrix in the new (rectified) coordinate systems for the second
- camera.
- @param Q Output \f$4 \times 4\f$ disparity-to-depth mapping matrix (see reprojectImageTo3D ).
- @param flags Operation flags that may be zero or CALIB_ZERO_DISPARITY . If the flag is set,
- the function makes the principal points of each camera have the same pixel coordinates in the
- rectified views. And if the flag is not set, the function may still shift the images in the
- horizontal or vertical direction (depending on the orientation of epipolar lines) to maximize the
- useful image area.
- @param newImageSize New image resolution after rectification. The same size should be passed to
- initUndistortRectifyMap (see the stereo_calib.cpp sample in OpenCV samples directory). When (0,0)
- is passed (default), it is set to the original imageSize . Setting it to larger value can help you
- preserve details in the original image, especially when there is a big radial distortion.
- @param balance Sets the new focal length in range between the min focal length and the max focal
- length. Balance is in range of [0, 1].
- @param fov_scale Divisor for new focal length.
- */
- CV_EXPORTS_W void stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec,
- OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(),
- double balance = 0.0, double fov_scale = 1.0);
-
- /** @brief Performs stereo calibration
-
- @param objectPoints Vector of vectors of the calibration pattern points.
- @param imagePoints1 Vector of vectors of the projections of the calibration pattern points,
- observed by the first camera.
- @param imagePoints2 Vector of vectors of the projections of the calibration pattern points,
- observed by the second camera.
- @param K1 Input/output first camera matrix:
- \f$\vecthreethree{f_x^{(j)}}{0}{c_x^{(j)}}{0}{f_y^{(j)}}{c_y^{(j)}}{0}{0}{1}\f$ , \f$j = 0,\, 1\f$ . If
- any of fisheye::CALIB_USE_INTRINSIC_GUESS , fisheye::CALIB_FIX_INTRINSIC are specified,
- some or all of the matrix components must be initialized.
- @param D1 Input/output vector of distortion coefficients \f$(k_1, k_2, k_3, k_4)\f$ of 4 elements.
- @param K2 Input/output second camera matrix. The parameter is similar to K1 .
- @param D2 Input/output lens distortion coefficients for the second camera. The parameter is
- similar to D1 .
- @param imageSize Size of the image used only to initialize intrinsic camera matrix.
- @param R Output rotation matrix between the 1st and the 2nd camera coordinate systems.
- @param T Output translation vector between the coordinate systems of the cameras.
- @param flags Different flags that may be zero or a combination of the following values:
- - **fisheye::CALIB_FIX_INTRINSIC** Fix K1, K2? and D1, D2? so that only R, T matrices
- are estimated.
- - **fisheye::CALIB_USE_INTRINSIC_GUESS** K1, K2 contains valid initial values of
- fx, fy, cx, cy that are optimized further. Otherwise, (cx, cy) is initially set to the image
- center (imageSize is used), and focal distances are computed in a least-squares fashion.
- - **fisheye::CALIB_RECOMPUTE_EXTRINSIC** Extrinsic will be recomputed after each iteration
- of intrinsic optimization.
- - **fisheye::CALIB_CHECK_COND** The functions will check validity of condition number.
- - **fisheye::CALIB_FIX_SKEW** Skew coefficient (alpha) is set to zero and stay zero.
- - **fisheye::CALIB_FIX_K1..4** Selected distortion coefficients are set to zeros and stay
- zero.
- @param criteria Termination criteria for the iterative optimization algorithm.
- */
- CV_EXPORTS_W double stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2,
- InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize,
- OutputArray R, OutputArray T, int flags = fisheye::CALIB_FIX_INTRINSIC,
- TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON));
-
-//! @} calib3d_fisheye
-} // end namespace fisheye
-
-} //end namespace cv
-
-#ifndef DISABLE_OPENCV_24_COMPATIBILITY
-#include "opencv2/calib3d/calib3d_c.h"
-#endif
-
-#endif
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv2/calib3d/calib3d.hpp b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv2/calib3d/calib3d.hpp
deleted file mode 100755
index b3da45e..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv2/calib3d/calib3d.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/*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"
diff --git a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv2/calib3d/calib3d_c.h b/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv2/calib3d/calib3d_c.h
deleted file mode 100755
index 8ec6390..0000000
--- a/Prj-Android/app/src/main/cpp/opencv342/sdk/native/jni/include/opencv2/calib3d/calib3d_c.h
+++ /dev/null
@@ -1,427 +0,0 @@
-/*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