Showing preview only (2,492K chars total). Download the full file or copy to clipboard to get everything.
Repository: nebgnahz/cv-rs
Branch: master
Commit: 6b54071fad2f
Files: 90
Total size: 2.4 MB
Directory structure:
gitextract_n68vdvyl/
├── .ci/
│ ├── install_cuda.sh
│ └── travis_build_opencv.sh
├── .clang-format
├── .gitattributes
├── .gitignore
├── .gitmodules
├── .travis.yml
├── .windows/
│ ├── mingw_build_OCV.ps1
│ ├── msvc_1_install_CUDA.ps1
│ └── msvc_2_build_OCV.ps1
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Cargo.toml
├── LICENSE
├── README.md
├── appveyor.yml
├── assets/
│ ├── OCRHMM_transitions_table.xml
│ ├── cuda_haarcascade_frontalface_default.xml
│ └── haarcascade_frontalface_default.xml
├── build.rs
├── examples/
│ ├── calc_gradient.rs
│ ├── calc_hist.rs
│ ├── camshift.rs
│ ├── display_image.rs
│ ├── face_detect.rs
│ ├── hog.rs
│ ├── hs_hist.rs
│ └── video_capture.rs
├── native/
│ ├── common-rust.cc
│ ├── common-rust.h
│ ├── common.h
│ ├── cuda/
│ │ ├── cuda.cc
│ │ └── cuda.h
│ ├── features2d.cc
│ ├── features2d.h
│ ├── hash.cc
│ ├── hash.h
│ ├── highgui.cc
│ ├── highgui.h
│ ├── imcodecs.cc
│ ├── imcodecs.h
│ ├── imgproc.cc
│ ├── imgproc.h
│ ├── mat.cc
│ ├── mat.h
│ ├── objdetect.cc
│ ├── objdetect.h
│ ├── text/
│ │ ├── text.cc
│ │ └── text.h
│ ├── utils.cc
│ ├── utils.h
│ ├── video.cc
│ ├── video.h
│ ├── videoio.cc
│ └── videoio.h
├── rustfmt.toml
├── setup_hooks.sh
├── src/
│ ├── core.rs
│ ├── cuda.rs
│ ├── errors.rs
│ ├── features2d/
│ │ ├── bow_k_means_trainer.rs
│ │ ├── descriptor_matcher.rs
│ │ ├── mod.rs
│ │ ├── mser.rs
│ │ ├── sift.rs
│ │ └── surf.rs
│ ├── hash.rs
│ ├── highgui.rs
│ ├── imgcodecs.rs
│ ├── imgproc.rs
│ ├── lib.rs
│ ├── mat.rs
│ ├── objdetect.rs
│ ├── text/
│ │ ├── hmm.rs
│ │ ├── holisticword.rs
│ │ ├── macros.rs
│ │ ├── mod.rs
│ │ └── tesseract.rs
│ ├── video.rs
│ └── videoio.rs
└── tests/
├── benchmark.rs
├── floatutils.rs
├── test_basic_ops.rs
├── test_features2d.rs
├── test_hash.rs
├── test_imgproc.rs
├── test_objdetect.rs
├── test_text.rs
├── test_video.rs
└── utils.rs
================================================
FILE CONTENTS
================================================
================================================
FILE: .ci/install_cuda.sh
================================================
#!/bin/sh
## Install CUDA (must run as root)
CUDA_PKG_VERSION="7-5"
CUDA_VERSION="7.5"
CUDA_REPO_PKG=cuda-repo-ubuntu1404_${CUDA_VERSION}-18_amd64.deb
NVIDIA_URL=http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/
wget ${NVIDIA_URL}${CUDA_REPO_PKG}
dpkg -i ${CUDA_REPO_PKG}
rm ${CUDA_REPO_PKG}
## update and install package
apt-get -y update
apt-get install -y cuda-$CUDA_PKG_VERSION
## manually create CUDA symlink
ln -s /usr/local/cuda-${CUDA_VERSION} /usr/local/cuda
================================================
FILE: .ci/travis_build_opencv.sh
================================================
#!/bin/bash
set -eux -o pipefail
OPENCV_VERSION=${OPENCV_VERSION:-3.4.1}
OPENCV_BUILD=$(pwd)/opencv/build
OPENCV_CONTRIB=$(pwd)/opencv_contrib/modules
INSTALL_FLAG=$HOME/usr/installed-version/$OPENCV_VERSION
INSTALL_PREFIX=$HOME/usr
if [[ ! -e $INSTALL_FLAG ]]; then
TMP=$(mktemp -d)
mkdir -p $OPENCV_BUILD
pushd $OPENCV_BUILD
cmake \
-D WITH_CUDA=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_opencv_java=OFF \
-D BUILD_opencv_python=OFF \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=OFF \
-D OPENCV_EXTRA_MODULES_PATH=$OPENCV_CONTRIB \
-D CMAKE_INSTALL_PREFIX=$INSTALL_PREFIX \
-D CMAKE_BUILD_TYPE=Release \
-D CUDA_ARCH_BIN=5.2 \
-D CUDA_ARCH_PTX="" \
..
make install && sudo mkdir -p "$(dirname "$INSTALL_FLAG")" && sudo touch "$INSTALL_FLAG";
popd
touch $HOME/fresh-cache
fi
sudo cp -r $HOME/usr/include/* /usr/local/include/
sudo cp -r $HOME/usr/lib/* /usr/local/lib/
sudo ldconfig
================================================
FILE: .clang-format
================================================
---
Language: Cpp
# BasedOnStyle: LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlinesLeft: false
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Attach
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 120
CommentPragmas: '^ IWYU pragma:'
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
- Regex: '^(<|"(gtest|isl|json)/)'
Priority: 3
- Regex: '.*'
Priority: 1
IncludeIsMainRegex: '$'
IndentCaseLabels: false
IndentWidth: 4
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 10
PointerAlignment: Left
ReflowComments: true
SortIncludes: true
SpaceAfterCStyleCast: true
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 8
UseTab: Never
================================================
FILE: .gitattributes
================================================
[core]
whitespace=trailing-space,space-before-tab
[apply]
whitespace=fix
* binary
*.[sS][lL][nN] text=auto diff merge
*.[cC][sS][pP][rR][oO][jJ] text=auto diff merge
*.[vV][bB][pP][rR][oO][jJ] text=auto diff merge
*.[vV][cC][xX][pP][rR][oO][jJ] text=auto diff merge
*.[vV][cC][pP][rR][oO][jJ] text=auto diff merge
*.[dD][bB][pP][rR][oO][jJ] text=auto diff merge
*.[fF][sS][pP][rR][oO][jJ] text=auto diff merge
*.[lL][sS][pP][rR][oO][jJ] text=auto diff merge
*.[wW][iI][xX][pP][rR][oO][jJ] text=auto diff merge
*.[mM][oO][dD][eE][lL][pP][rR][oO][jJ] text=auto diff merge
*.[sS][qQ][lL][pP][rR][oO][jJ] text=auto diff merge
*.[wW][mM][aA][pP][rR][oO][jJ] text=auto diff merge
*.[xX][pP][rR][oO][jJ] text=auto diff merge
*.[pP][rR][oO][pP][sS] text=auto diff merge
*.[fF][iI][lL][tT][eE][rR][sS] text=auto diff merge
*.[vV][cC][xX][iI][tT][eE][mM][sS] text=auto diff merge
*.[jJ][aA][vV][aA] text=auto diff merge
*.[rR][eE][sS][xX] text=auto diff merge
*.[bB][aA][tT] text=auto diff merge
*.[pP][sS][11] text=auto diff merge
*.[cC][oO][nN][fF][iI][gG] text=auto diff merge
*.[tT][xX][tT] text=auto diff merge
*.[tT][sS] text=auto diff merge
*.[tT][sS][xX] text=auto diff merge
*.[jJ][sS] text=auto diff merge
*.[jJ][sS][xX] text=auto diff merge
*.[cC][sS][sS] text=auto diff merge
*.[hH][tT][mM][lL] text=auto diff merge
*.[cC][sS] text=auto diff=csharp merge
*.[fF][sS] text=auto diff merge
*.[cC] text=auto diff merge
*.[cC][pP][pP] text=auto diff merge
*.[jJ][sS][oO][nN] text=auto diff merge
*.[xX][mM][lL] text=auto diff merge
*.[cC][sS][hH][tT][mM][lL] text=auto diff merge
*.[sS][qQ][lL] text=auto diff merge
*.[cC][sS][vV] text=auto diff merge
*.[xX][sS][dD] text=auto diff merge
*.[sS][cC][sS][sS] text=auto diff merge
*.[cC][mM][dD] text=auto diff merge
*.[yY][mM][lL] text=auto diff merge
*.[sS][hH] text=auto diff merge
*.[cC][oO][fF][fF][eE][eE] text=auto diff merge
*.[aA][sS][aA][xX] text=auto diff merge
*.[xX][sS][lL][tT] text=auto diff merge
*.[cC][fF][gG] text=auto diff merge
*.[cC][oO][nN][fF][iI][gG].[dD][eE][bB][uU][gG] text=auto diff merge
*.[cC][oO][nN][fF][iI][gG].[rR][eE][lL][eE][aA][sS][eE] text=auto diff merge
*.[cC][oO][nN][fF][iI][gG].[sS][tT][aA][gG][iI][nN][gG] text=auto diff merge
*.[dD][oO][tT][sS][eE][tT][tT][iI][nN][gG][sS] text=auto diff merge
*.[pP][uU][bB][lL][iI][sS][hH][sS][eE][tT][tT][iI][nN][gG][sS] text=auto diff merge
*.[mM][dD] text=auto diff merge
*.[pP][rR][oO][jJ] text=auto diff merge
*.[mM][aA][rR][kK][dD][oO][wW][nN] text=auto diff merge
*.[bB][aA][bB][eE][lL][rR][cC] text=auto diff merge
*.[hH] text=auto diff merge
*.[rR][sS] text=auto diff merge
*.[pP][yY] text=auto diff merge
*.[cC][cC] text=auto diff merge
*.[rR][bB] text=auto diff merge
*.[hH][pP][pP] text=auto diff merge
*.[sS][aA][sS][sS] text=auto diff merge
*.[tT][oO][mM][lL] text=auto diff merge
*.[hH][tT][mM] text=auto diff merge
*.[tT][eE][xX][tT][iI][lL][eE] text=auto diff merge
*.[pP][hH][pP] text=auto diff merge
*.[lL][eE][sS][sS] text=auto diff merge
*.[nN][uU][sS][pP][eE][cC] text=auto diff merge
*.[lL][iI][cC][eE][nN][sS][eE] text=auto diff merge
Cargo.lock text=auto diff merge
.gitattributes text=auto diff merge
.gitignore text=auto diff merge
================================================
FILE: .gitignore
================================================
# Generated by Cargo
# will have compiled files and executables
/target/
/.idea
# As well as generated cv code
/artifacts/
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here http://doc.crates.io/guide.html#cargotoml-vs-cargolock
Cargo.lock
target
Cargo.lock
================================================
FILE: .gitmodules
================================================
[submodule "opencv_contrib"]
path = opencv_contrib
url = https://github.com/opencv/opencv_contrib.git
shallow = true
[submodule "opencv"]
path = opencv
url = https://github.com/opencv/opencv.git
shallow = true
================================================
FILE: .travis.yml
================================================
env:
global:
- MAKEFLAGS="-j 4"
sudo: required
dist: trusty
language: rust
rust:
- stable
addons:
apt:
packages:
- build-essential
- cmake
- git
- libavcodec-dev
- libavformat-dev
- libdc1394-22-dev
- libgmp-dev
- libgtk2.0-dev
- libjasper-dev
- libjpeg-dev
- libleptonica-dev
- libpng-dev
- libswscale-dev
- libtbb-dev
- libtbb2
- libtesseract-dev
- libtiff-dev
- pkg-config
- tesseract-ocr
- xvfb
before_install:
- export PATH="$PATH:$HOME/.cargo/bin"
- sudo -E ./.ci/install_cuda.sh
- sudo -E ./.ci/travis_build_opencv.sh
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu
- rustup component add rustfmt-preview
- cargo fmt --version
- clang-format --version
script:
- cargo build --no-default-features
- cargo test -v --no-default-features
- cargo build --features cuda
- cargo build --features tesseract
- cargo test -v --features tesseract
- cargo doc --features cuda --no-deps
- cargo fmt -- --check
- diff -u <(cat native/*) <(clang-format native/*)
notifications:
email:
on_success: never
cache:
timeout: 1000
cargo: true
directories:
- $HOME/usr/installed-version
- $HOME/usr/include
- $HOME/usr/lib
deploy:
provider: pages
skip_cleanup: true
github_token: $GITHUB_TOKEN
local_dir: target/doc/
on:
branch: master
================================================
FILE: .windows/mingw_build_OCV.ps1
================================================
param([Parameter(mandatory=$true)][string] $MinGWPath)
#SCRIPT CONSTANTS
$pwd = Get-Location
$REPO_LOCATION = "$pwd\opencv"
$OPENCV_VERSION_TAG = "3.4.0"
$COMPILER = "mingw"
$CMAKE_CONFIG_GENERATOR = "MinGW Makefiles"
$OPENCV_BUILD_DIR = "$pwd\artifacts\$COMPILER\build\opencv";
$OPENCV_DIR = "$pwd\artifacts\$COMPILER\install\opencv";
$OPENCV_CONTRIB_DIR = "$pwd\opencv_contrib\modules";
$CMAKE_OPTIONS = @(
"-DWITH_CUDA:BOOL=OFF",
"-DCUDA_ARCH_BIN=5.2",
"-DCUDA_ARCH_PTX=",
"-DBUILD_opencv_java:BOOL=OFF",
"-DBUILD_opencv_python:BOOL=OFF",
"-DBUILD_opencv_python2:BOOL=OFF",
"-DBUILD_opencv_python3:BOOL=OFF",
"-DBUILD_TESTS:BOOL=OFF",
"-DBUILD_PERF_TESTS:BOOL=OFF",
"-DBUILD_DOCS:BOOL=OFF",
"-DBUILD_EXAMPLES:BOOL=OFF",
"-DINSTALL_CREATE_DISTRIB:BOOL=ON",
"-DCPU_DISPATCH="
)
#SCRIPT BODY
Write-Host "CONFIGURE OPENCV PATHS"
$env:OPENCV_DIR = $OPENCV_DIR
$env:OPENCV_LIB = "$OPENCV_DIR\x64\$COMPILER\lib"
if ($env:Path.IndexOf("$OPENCV_DIR\x64\$COMPILER\bin") -eq (-1)) {
$env:Path = "$env:Path;$OPENCV_DIR\x64\$COMPILER\bin"
}
if ($env:Path.IndexOf($MinGWPath) -eq (-1)) {
$env:Path = "$env:Path;$MinGWPath"
}
[Environment]::SetEnvironmentVariable("OPENCV_DIR", $env:OPENCV_DIR, [EnvironmentVariableTarget]::Machine)
[Environment]::SetEnvironmentVariable("OPENCV_LIB", $env:OPENCV_LIB, [EnvironmentVariableTarget]::Machine)
[Environment]::SetEnvironmentVariable("Path", $env:Path, [EnvironmentVariableTarget]::Machine)
if (Test-Path "$OPENCV_DIR\x64\$COMPILER\bin") {
Write-Host "Compiled OpenCV found. Skip installation"
return;
}
#CHECK EXISTENCE OF GIT AND CMAKE
$oldErrorAction = $ErrorActionPreference
$ErrorActionPreference = "Stop"
git --version
cmake --version
Write-Host (Get-Command mingw32-make).Source
$ErrorActionPreference = $oldErrorAction
Write-Host "INSTALL OPENCV AT $OPENCV_DIR"
mkdir $OPENCV_BUILD_DIR -ErrorAction SilentlyContinue
mkdir $OPENCV_DIR -ErrorAction SilentlyContinue
git submodule update --init --recursive
Push-Location -Path $OPENCV_BUILD_DIR
$CMakeArgs = $CMAKE_OPTIONS + ("-DCMAKE_INSTALL_PREFIX=$OPENCV_DIR", "-DCMAKE_BUILD_TYPE=Release", "-DOPENCV_EXTRA_MODULES_PATH=$OPENCV_CONTRIB_DIR", $REPO_LOCATION)
Write-Host "cmake -G $CMAKE_CONFIG_GENERATOR $CMakeArgs"
cmake -G $CMAKE_CONFIG_GENERATOR @CMakeArgs
if($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode ) }
cmake --build . --target install --config release -- -j $env:NUMBER_OF_PROCESSORS
if($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode ) }
Pop-Location
================================================
FILE: .windows/msvc_1_install_CUDA.ps1
================================================
param([Parameter(mandatory=$true)][string] $FileName)
$VERSION = "9.1"
$argumentList = "-s nvcc_$VERSION cublas_$VERSION cublas_dev_$VERSION cudart_$VERSION cufft_$VERSION cufft_dev_$VERSION npp_$VERSION npp_dev_$VERSION"
$envPath = "$env:ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v$VERSION\bin;$env:ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v$VERSION\libnvvp";
Write-Host "Install CUDA from $FileName with argumentList $argumentList"
Start-Process -FilePath $FileName -ArgumentList $argumentList -Wait
if ($env:Path.IndexOf($envPath) -eq (-1)) {
Write-Host "Setting PATH for CUDA"
$env:Path = "${env:Path};${envPath}"
[Environment]::SetEnvironmentVariable("Path", $env:Path, [EnvironmentVariableTarget]::Machine)
}
$oldErrorAction = $ErrorActionPreference
$ErrorActionPreference = "Stop"
nvcc.exe -V
$ErrorActionPreference = $oldErrorAction
================================================
FILE: .windows/msvc_2_build_OCV.ps1
================================================
param([Parameter(mandatory=$true)][bool] $EnableCuda, [Parameter(mandatory=$true)][string] $Compiler)
$CudaSwitch = If ($EnableCuda) {"ON"} Else {"OFF"}
#SCRIPT CONSTANTS
$pwd = Get-Location
$REPO_LOCATION = "$pwd\opencv"
$OPENCV_VERSION_TAG = "3.4.0"
$CMAKE_CONFIG_GENERATOR;
if ($Compiler -eq "vc14") {
$CMAKE_CONFIG_GENERATOR = "Visual Studio 14 2015 Win64"
}
else {
if ($Compiler -eq "vc15"){
if ($EnableCuda) {
throw "Cuda with VS2017 is not supported"
}
$CMAKE_CONFIG_GENERATOR = "Visual Studio 15 2017 Win64"
}
else {
throw "Unknown Compiler"
}
}
$OPENCV_BUILD_DIR = "$pwd\artifacts\$COMPILER\build\opencv";
$OPENCV_DIR = "$pwd\artifacts\$COMPILER\install\opencv";
$OPENCV_CONTRIB_DIR = "$pwd\opencv_contrib\modules";
$CMAKE_OPTIONS = @(
"-DWITH_CUDA:BOOL=$CudaSwitch",
"-DCUDA_ARCH_BIN=5.2",
"-DCUDA_ARCH_PTX=",
"-DBUILD_opencv_java:BOOL=OFF",
"-DBUILD_opencv_python:BOOL=OFF",
"-DBUILD_opencv_python2:BOOL=OFF",
"-DBUILD_opencv_python3:BOOL=OFF",
"-DBUILD_TESTS:BOOL=OFF",
"-DBUILD_PERF_TESTS:BOOL=OFF",
"-DBUILD_DOCS:BOOL=OFF",
"-DBUILD_EXAMPLES:BOOL=OFF",
"-DINSTALL_CREATE_DISTRIB:BOOL=ON"
)
#SCRIPT BODY
Write-Host "CONFIGURE OPENCV PATHS"
$env:OPENCV_DIR = $OPENCV_DIR
$env:OPENCV_LIB = "$OPENCV_DIR\x64\$Compiler\lib"
if ($env:Path.IndexOf("$OPENCV_DIR\x64\$Compiler\bin") -eq (-1)) {
$env:Path = "$env:Path;$OPENCV_DIR\x64\$Compiler\bin"
}
[Environment]::SetEnvironmentVariable("OPENCV_DIR", $env:OPENCV_DIR, [EnvironmentVariableTarget]::Machine)
[Environment]::SetEnvironmentVariable("OPENCV_LIB", $env:OPENCV_LIB, [EnvironmentVariableTarget]::Machine)
[Environment]::SetEnvironmentVariable("Path", $env:Path, [EnvironmentVariableTarget]::Machine)
if (Test-Path "$OPENCV_DIR\x64\$Compiler\bin") {
Write-Host "Compiled OpenCV found. Skip installation"
return;
}
#CHECK EXISTENCE OF GIT AND CMAKE
$oldErrorAction = $ErrorActionPreference
$ErrorActionPreference = "Stop"
git --version
cmake --version
$ErrorActionPreference = $oldErrorAction
Write-Host "INSTALL OPENCV AT $OPENCV_DIR"
mkdir $OPENCV_BUILD_DIR -ErrorAction SilentlyContinue
mkdir $OPENCV_DIR -ErrorAction SilentlyContinue
git submodule update --init --recursive
Push-Location -Path $OPENCV_BUILD_DIR
$CMakeArgs = $CMAKE_OPTIONS + ("-DCMAKE_INSTALL_PREFIX=$OPENCV_DIR", "-DCMAKE_BUILD_TYPE=Release", "-DOPENCV_EXTRA_MODULES_PATH=$OPENCV_CONTRIB_DIR", $REPO_LOCATION)
Write-Host "cmake -G $CMAKE_CONFIG_GENERATOR $CMakeArgs"
cmake -G $CMAKE_CONFIG_GENERATOR @CMakeArgs
if($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode ) }
cmake --build . --target install --config release -- /m
if($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode ) }
Pop-Location
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at benzh@cs.berkeley.edu. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
================================================
FILE: CONTRIBUTING.md
================================================
# How to contribute
Implement more OpenCV functions/modules and submit a PR request.
Before submitting a PR, make sure you have formatted both C/C++ code and Rust
code, otherwise Travis will complain.
You have to have installed `clang-format`. You can install it as part of full llvm toolchain ([download link](http://releases.llvm.org/download.html)) to make formatting happen. On mac you can use `brew install clang-format`.
When you're done run `setup_hooks.sh`. That will enable automatic source code formatting on commit.
================================================
FILE: Cargo.toml
================================================
[package]
name = "cv"
version = "0.2.2"
authors = ["Ben Zhang <benzh@cs.berkeley.edu>"]
build = "build.rs"
repository = "https://github.com/nebgnahz/cv-rs.git"
homepage = "https://github.com/nebgnahz/cv-rs.git"
license = "MIT"
readme = "README.md"
documentation = "rust-vision.s3-website-us-west-2.amazonaws.com"
description = "This library primarily provides a binding and API for OpenCV 3.x."
[dependencies]
bytes = "0.4"
failure = "0.1"
[dev-dependencies]
getopts = "0.2"
float-cmp = "0.4"
[build-dependencies]
cc = { version = "1.0", features = ["parallel"] }
[features]
cuda = []
text = []
tesseract = ["text"]
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2016 Ben Zhang
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
# cv-rs
[![Build Status][travis-image]][travis-url]
[![Build status][appveyor-image]][appveyor-url]
[![standard-readme compliant][standard-readme-image]][standard-readme-url]
This library primarily provides idiomatic bindings and APIs for OpenCV 3.x.
[Documentation](https://nebgnahz.github.io/cv-rs/cv/)
## Table of Contents
- [Background](#background)
- [Install](#install)
- [Usage](#usage)
- [Contribute](#contribute)
- [License](#license)
## Background
OpenCV (Open Source Computer Vision Library: http://opencv.org) is an
open-source BSD-licensed library that includes several hundreds of computer
vision algorithms. It's mainly developed in C++. This library provides Rust
bindings to access OpenCV functionalities. First, C bindings are created
(in [native](native) folder); then [Rust APIs](src/lib.rs) are constructed
atop. Although this manual process seems an inefficient process, it has served
me well as a learning experience to both OpenCV and Rust. In terms of OpenCV API
coverage, modules and functions are implemented as needed.
Please check out the [documentation](https://nebgnahz.github.io/cv-rs/cv/) to
see what has been ported. If you have demand for porting specific features,
please open an issue, or better create a PR.
Attempts to use [rust-bindgen](https://github.com/servo/rust-bindgen)
or [cpp_to_rust](https://github.com/rust-qt/cpp_to_rust) haven't been very
successful (I probably haven't tried hard enough). There is another
port [opencv-rust](https://github.com/kali/opencv-rust/) which generates OpenCV
bindings using a Python script (more automated).
## Install
Before anything, make sure you have OpenCV 3 installed. If you are using windows, follow [this instruction](#windows), otherwise read this
[Introduction to OpenCV][opencv-intro] to get started.
Then in any Rust project, add this to your `Cargo.toml`:
```
[dependencies]
cv = { git = "https://github.com/nebgnahz/cv-rs.git" }
```
And add this to your crate:
```
extern crate cv;
use cv::*;
```
And then, enjoy the power of OpenCV.
If you'd like to use OpenCV GPU functions, it's inside `cv::cuda`. Enable it
with the following code in `Cargo.toml`:
```
[dependencies.cv]
git = "https://github.com/nebgnahz/cv-rs"
features = [ "cuda" ]
```
All possible features are listed below:
- `cuda` - for CUDA support, requires installed CUDA
- `text` - for text recognition support. Requires building from sources, is not included in most package managers by default, e.g. in brew
- `tesseract` - for Tesseract OCR support, requires installed Tesseract
### Windows
#### If you are using MSVC toolchain (mandatory if you want to use CUDA)
##### Prerequisites
- Installed git.
- Installed CMake x64 ([download link](https://cmake.org/download/)).
- Installed Visual Studio 2015 ([download link](https://go.microsoft.com/fwlink/?LinkId=532606&clcid=0x409)), VS2017 is not supported by nVidia at this moment, don't even try, it won't compile.
##### Installation steps
- Create directory `C:\opencv`.
- Copy `.git` and `.windows` folders there (you can run them from the `cv-rs` directory itself, but you may encounter an error that paths are too long)
- Run powershell console as administrator in `c:\opencv`.
- (***Optional, skip these steps if you don't need CUDA***)
1. Download CUDA from [official site](https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=10). Choose `local` package.
1. Run `PowerShell -NoExit -File .\.windows\msvc_1_install_CUDA.ps1 -FileName path_to_installer` (for example, `C:\Users\UserName\Downloads\cuda_9.1.85_win10.exe`).
- Run `PowerShell -NoExit -File (.\.windows\msvc_2_build_OCV.ps1 -EnableCuda $False -Compiler vc15)` (note braces). `1` stays for compilation with CUDA, `0` for compilation without it. Possible compiler values: `vc14` for VS2015/`vc15` for VS2017. **Caution: CUDA is compatible with VS2015 only**
- Wait until installation finishes. Now you have properly configured OpenCV.
#### If you are using GNU toolchain
##### Prerequisites
- Installed git.
- Installed CMake x64 ([download link](https://cmake.org/download/)).
- Installed MinGW ([download link](https://sourceforge.net/projects/mingw-w64/files/latest/download)). Choose architecture `x86_64` during installation.
##### Installation steps
- Create directory `C:\opencv`.
- Copy `.git` and `.windows` folders there (you can run them from the `cv-rs` directory itself, but you may encounter an error that paths are too long)
- Run powershell console as administrator in `c:\opencv`.
- Run `PowerShell -NoExit -File .\.windows\mingw_build_OCV.ps1 -MinGWPath "C:\Program Files\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin"` (your path may be different).
- Wait until installation finishes. Now you have properly configured OpenCV.
## Usage
See available examples on how this library might be used.
- [Display Image](examples/display_image.rs)
- [Video Capture](examples/video_capture.rs), optional GPU code
- [Face Detection](examples/face_detect.rs)
- [Camshift](examples/camshift.rs)
- [HOG Detection](examples/hog.rs), optional GPU code
## Contribute
See [the contribute file](CONTRIBUTING.md)! PRs highly welcome.
You may also simply open up an issue for feature/porting request.
Small note: If editing the README, please conform to the
[standard-readme](https://github.com/RichardLitt/standard-readme) specification.
## License
MIT © Ben Zhang
<!-- links -->
[travis-image]: https://travis-ci.org/nebgnahz/cv-rs.svg?branch=master
[travis-url]: https://travis-ci.org/nebgnahz/cv-rs
[appveyor-image]: https://ci.appveyor.com/api/projects/status/dutogjshst3oyra2/branch/master?svg=true
[appveyor-url]: https://ci.appveyor.com/project/nebgnahz/cv-rs
[standard-readme-image]: https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square
[standard-readme-url]: https://github.com/RichardLitt/standard-readme
[opencv-intro]: http://docs.opencv.org/3.1.0/df/d65/tutorial_table_of_content_introduction.html
================================================
FILE: appveyor.yml
================================================
clone_depth: 50
image: Visual Studio 2017
environment:
RUSTUP_USE_REQWEST: 1
CARGO_HTTP_CHECK_REVOKE: false
matrix:
- TARGET: x86_64-pc-windows-msvc
skip_commits:
files:
- .gitattributes
- .gitignore
- .travis.yml
- .ci\*.sh
- LICENSE
- '*.md'
platform:
- x64
install:
# Install Rust
- appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe
- rustup-init.exe -y --default-host %TARGET%
- set PATH=%PATH%;C:\Users\appveyor\.cargo\bin
- rustc -V
- cargo -V
# Install OpenCV
- ps: .\.windows\msvc_2_build_OCV.ps1 -EnableCuda 0 -Compiler vc15
build_script:
- cargo build --no-default-features
test_script:
- cargo test -v --no-default-features
cache:
- '%USERPROFILE%\.cargo\registry'
- vc15\install -> .windows\msvc_2_build_OCV.ps1
================================================
FILE: assets/OCRHMM_transitions_table.xml
================================================
<?xml version="1.0"?>
<opencv_storage>
<transition_probabilities type_id="opencv-matrix">
<rows>62</rows>
<cols>62</cols>
<dt>d</dt>
<data>
8.50520944078e-05 0.0544758664682 0.0617478205401 0.0385285987667 0.00146714862853 0.00848394641718 0.0317882202849 0.000893046991282 0.0399106953009 0.000786731873272 0.013140548586 0.118371252392 0.0354667233681 0.116691473528 0.000233893259622 0.034509887306 0.000403997448437 0.113565809058 0.0640442270891 0.196980650649 0.0180948330853 0.0160748458431 0.00967467573889 0.00372102913034 0.0153519030406 0.00550712311291 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.100866163733 0.0314799292167 0.00242153301667 0.00502933780386 0.126292260408 0.00204898947564 0.00130390239359 0.00130390239359 0.112973828816 0.00614696842693 0.0 0.289000651951 0.00484306603334 0.00186271770513 0.0848467914688 0.00186271770513 0.0 0.0757194747136 0.053366862252 0.0113625780013 0.0739498928937 0.0027940765577 0.00111763062308 0.0 0.00940672441092 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.123990600299 0.0 0.0241828669088 0.00046998504593 0.136594744713 0.0 0.0 0.107583849605 0.0869472334971 0.0 0.0763939329203 0.0394787438581 0.000299081392865 0.00128177739799 0.152574236274 0.000341807306131 0.00290536210211 0.0535355693228 0.0138431958983 0.115274513993 0.053407391583 0.0 0.0 0.0 0.0107242042299 0.000170903653066 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0556214577567 0.00263608804534 0.00263608804534 0.0282061420851 0.318834849084 0.00355871886121 0.0217477263741 0.00329511005668 0.226110452089 0.00724924212469 0.000527217609068 0.0645841571108 0.00948991696323 0.0267562936602 0.0452089099776 0.00237247924081 0.000131804402267 0.0322261763543 0.067615658363 0.00105443521814 0.0506787926717 0.011862396204 0.00546988269408 0.0 0.0119942006063 0.000131804402267 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0467747490338 0.00432414505657 0.0376672576757 0.147403599628 0.0215824585124 0.0132020357922 0.0106891845351 0.00250009566693 0.00761508731201 0.000982180440578 0.00145413727566 0.0484584869319 0.0227814839854 0.112134392898 0.00517876959578 0.0174496473079 0.00329094225544 0.22472798704 0.197022845262 0.0348482722553 0.0022194726839 0.0134061252344 0.00769162085284 0.0118626988278 0.00371187672998 0.00102044721099 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0729166666667 0.0 0.000508130081301 0.0 0.146214430894 0.111788617886 0.000762195121951 0.0 0.21468495935 0.0 0.0 0.0782520325203 0.0 0.00279471544715 0.111280487805 0.0 0.0 0.0581808943089 0.0162601626016 0.0429369918699 0.114456300813 0.0 0.000762195121951 0.0 0.0282012195122 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0787207872079 0.0 0.0 0.000351432085749 0.212440695836 0.000527148128624 0.0419961342471 0.0789843612722 0.107977508347 0.0 0.0 0.125812686698 0.00773150588649 0.0492883500264 0.0347917764892 0.000615006150062 0.0 0.110964681075 0.081356527851 0.00404146898612 0.0533298190125 0.0 0.000527148128624 0.0 0.0103672465296 0.000175716042875 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.154653160894 0.00144704711947 0.000542642669802 0.00271321334901 0.298996111061 0.00614995025776 0.0 0.00271321334901 0.184136745953 0.0 0.0 0.016460160984 0.0103102107262 0.0121190196256 0.133309215881 0.00090440444967 0.000361761779868 0.0371710228814 0.0124807814054 0.0618612643574 0.0365379397667 0.0 0.00614995025776 0.0 0.0205299810075 0.000452202224835 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0319377484564 0.0157151315233 0.0745496066988 0.0267783134568 0.0643998985029 0.0226507654572 0.0288928359976 0.000439820688489 0.000473653049142 0.000405988327836 0.00314640954073 0.0478558741436 0.0279116975387 0.299247229975 0.0865431785503 0.0175928275395 0.00182694747526 0.0263554089487 0.0856297048127 0.0803856889114 0.00159012095069 0.0491584200288 6.76647213059e-05 0.00296033155713 0.0 0.00348473314726 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.125310173697 0.0 0.0 0.0 0.263027295285 0.0 0.0 0.0 0.014888337469 0.0 0.00248138957816 0.0 0.0 0.0 0.233250620347 0.0 0.0 0.00124069478908 0.0 0.0 0.359801488834 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0458695168114 0.00668002672011 0.000890670229348 0.00267201068804 0.422845691383 0.00400801603206 0.000890670229348 0.0060120240481 0.197951458473 0.000890670229348 0.00222667557337 0.0721442885772 0.00668002672011 0.0334001336005 0.0106880427522 0.00534402137609 0.0 0.00489868626141 0.135381874861 0.00668002672011 0.00935203740815 0.0 0.00801603206413 0.0 0.0164773992429 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.10850279394 0.00172821015035 0.00357163431073 0.0179157785587 0.21712080189 0.00385966933579 0.0033988132957 0.000460856040094 0.153148222824 0.0 0.00558787948615 0.111066305663 0.00483898842099 0.0107149029322 0.0684659254565 0.00397488334581 0.0 0.00138256812028 0.0326055648367 0.0247710121551 0.0354859150873 0.00639437755631 0.000806498070165 0.0 0.18414079152 5.76070050118e-05 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.142847308275 0.0638854467851 0.000619578686493 0.000275368305108 0.226215062646 0.00385515627151 0.0 0.000481894533939 0.159920143192 0.0 0.0 0.00530083987333 0.0549359768691 0.00901831199229 0.0927991188214 0.153242461793 0.0 0.000963789067878 0.037518931571 0.000413052457662 0.0410298774611 0.00068842076277 0.000275368305108 0.0 0.00571389233099 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0555165707641 0.00324799005554 0.0619123042685 0.0696914409447 0.155843374702 0.016380295527 0.238707219761 0.00453114662069 0.0559175571907 0.00272670770094 0.0130721575075 0.0076989393909 0.00364897648215 0.0156384706378 0.0215730697516 0.00425045612206 0.00272670770094 0.00411011087275 0.0990837460152 0.134691340698 0.00978406880927 0.011588507729 0.00312769412755 0.000280690498627 0.0034885819115 0.000761874210558 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0216214746118 0.0155565829911 0.0320378579782 0.0258913758873 0.00579292338655 0.00976365960456 0.0219206396693 0.00244771410699 0.0185754303897 0.000815904702331 0.0101444151323 0.0608664907939 0.0677744839403 0.23911447143 0.0419103048764 0.0337512578531 0.000435149174576 0.141885827735 0.0423726508744 0.0431341619299 0.0949985041747 0.0226005602546 0.0346215562022 0.00329081563273 0.00709837091028 0.00157741575784 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0966494041305 0.00112310476072 0.000623947089287 0.000686341798216 0.202595619891 0.00124789417857 0.000748736507144 0.0483558994197 0.0851687776877 0.0 0.000873525925002 0.101516191427 0.00174705185 0.00118549946964 0.104760716291 0.0722530729394 0.0 0.145878829475 0.0374992200661 0.0552817121108 0.0366880888501 0.0 0.000998315342859 0.0 0.00411805078929 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.000904977375566 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.999095022624 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.143023601179 0.00941305490187 0.0207224291165 0.0281934702643 0.211610957527 0.00680847174941 0.0125659713496 0.0013479860175 0.139322351436 9.13888825424e-05 0.0106924992575 0.0147136100893 0.0268683314675 0.021065137426 0.0920742991615 0.0123831935845 0.00036555553017 0.029153053531 0.110146450684 0.050538052046 0.0292215951929 0.00959583266696 0.00228472206356 0.0 0.0177065959926 9.13888825424e-05 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0315670455934 0.00171128223934 0.0422320009779 0.001466813348 0.125473658477 0.00409485392984 0.002933626696 0.0628896222956 0.108330277472 0.000733406674001 0.00928981787068 0.0301002322454 0.0154626573768 0.0203825938149 0.0375565334311 0.0439738418286 0.00443099865542 0.00161960640508 0.200647842562 0.199425498105 0.0422931182007 0.0 0.00589781200342 6.11172228334e-05 0.00742574257426 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0828099447776 0.000805820870761 0.011542198943 0.000237006138459 0.250088877302 0.00355509207688 0.000805820870761 0.0456473822672 0.276775768492 0.0 4.74012276918e-05 0.028914748892 0.00312848102766 0.006920579243 0.055056525964 0.00109022823691 0.0 0.0702723200531 0.0615741947716 0.0335126679781 0.0341762851658 0.000189604910767 0.0037683976015 0.0 0.0284170360012 0.000663617187685 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0407358156028 0.0375886524823 0.0419769503546 0.0322695035461 0.043085106383 0.0132092198582 0.0246010638298 8.86524822695e-05 0.0436170212766 0.0 0.000886524822695 0.105230496454 0.0573581560284 0.148670212766 0.00833333333333 0.0339095744681 0.000177304964539 0.131826241135 0.144060283688 0.0859485815603 0.000487588652482 0.000531914893617 0.0 0.00168439716312 0.000975177304965 0.00274822695035 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.131552670994 0.0 0.000124812780829 0.0 0.623689465801 0.0 0.0 0.0 0.18072890664 0.0 0.0 0.0 0.000124812780829 0.0 0.0567898152771 0.0 0.0 0.0 0.0 0.0 0.00399400898652 0.0 0.0 0.0 0.00299550673989 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.196585140748 0.00646054453161 0.00230733733272 0.0133825565298 0.193124134749 0.00599907706507 0.000922934933087 0.0539916935856 0.174665436087 0.0 0.0073834794647 0.0535302261191 0.00323027226581 0.0779880018459 0.095062298108 0.000922934933087 0.0 0.03737886479 0.0673742501154 0.00553760959852 0.00138440239963 0.0 0.0 0.0 0.00276880479926 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.092132505176 0.0 0.123188405797 0.0 0.15734989648 0.0 0.0 0.0310559006211 0.166149068323 0.0 0.0 0.00621118012422 0.0 0.00103519668737 0.0207039337474 0.230848861284 0.00310559006211 0.0 0.0 0.142857142857 0.0175983436853 0.00207039337474 0.00103519668737 0.000517598343685 0.00414078674948 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0538403614458 0.0143072289157 0.042921686747 0.0143072289157 0.140436746988 0.00753012048193 0.00978915662651 0.00451807228916 0.181852409639 0.0 0.0 0.0504518072289 0.0730421686747 0.0557228915663 0.0368975903614 0.0798192771084 0.0 0.0286144578313 0.157379518072 0.0316265060241 0.00263554216867 0.0 0.0135542168675 0.000753012048193 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.104328523862 0.0 0.0 0.0 0.369589345172 0.0 0.0 0.0 0.19089900111 0.0 0.00221975582686 0.0732519422863 0.00443951165372 0.0 0.0532741398446 0.0 0.0 0.0 0.0 0.0 0.00887902330744 0.00887902330744 0.00443951165372 0.0 0.0332963374029 0.146503884573 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0094510076442 0.0116747741487 0.012022237665 0.000799166087561 0.00371785962474 0.00357887421821 6.94927032662e-05 0.00267546907575 3.47463516331e-05 6.94927032662e-05 0.0102501737318 0.00681028492008 0.0127171646977 3.47463516331e-05 0.0097637248089 0.00045170257123 0.0105281445448 0.0102849200834 0.00535093815149 0.00615010423905 0.00277970813065 0.00156358582349 0.000868658790827 0.000138985406532 0.000173731758165 6.94927032662e-05 0.0492355802641 0.0562890896456 0.0374913134121 0.00159833217512 0.00879082696317 0.0277623349548 0.000764419735928 0.0339471855455 0.000660180681028 0.0107713690063 0.101841556637 0.032383599722 0.10170257123 0.000208478109798 0.0330785267547 0.000555941626129 0.0980542043085 0.0574704656011 0.16362056984 0.0178596247394 0.0145239749826 0.00868658790827 0.00347463516331 0.0126129256428 0.00458651841557 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0593910159783 0.0 0.0 0.0 0.0530599939705 0.0 0.0 0.0 0.0276354135263 0.0 0.0 0.0354738217265 0.0 0.0 0.0400964727163 0.0 0.0 0.0477338960908 0.000100492412823 0.0 0.0410009044317 0.0 0.0 0.0 0.00251231032057 0.0 0.0841121495327 0.0169832177671 0.0013064013667 0.00271329514622 0.0946638528791 0.00110541654105 0.00070344688976 0.00070344688976 0.0747663551402 0.00331624962315 0.0 0.173650889358 0.00261280273339 0.00100492412823 0.065822530399 0.00100492412823 0.0 0.0647171138579 0.0288413224802 0.00613003718219 0.0603959401065 0.00150738619234 0.000602954476937 0.0 0.00633102200784 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0294084251164 0.0 0.0 5.67730214602e-05 0.00573407516748 0.0 0.0 0.0255478596571 0.00482570682412 0.0 0.0 0.0181673668673 5.67730214602e-05 0.0 0.106335869195 0.00011354604292 0.0 0.0204950607471 0.0 0.0 0.0112410582491 0.0 0.0 0.0 0.00164641762235 0.00011354604292 0.0970818666969 0.0 0.0160667650732 0.000340638128761 0.0936187123879 0.0 0.0 0.0842511638469 0.0601794027478 0.0 0.0507550811854 0.0353128193482 0.000227092085841 0.000851595321903 0.154536164415 0.000283865107301 0.00193028272965 0.0458158283184 0.00919722947655 0.0765868059498 0.0411036675372 0.0 0.0 0.0 0.00794822300443 0.000170319064381 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0157669237361 0.0 0.0 0.0 0.0894601542416 0.0 0.0 0.0 0.0814910025707 0.0 0.0 0.0 0.0 0.0 0.0176520994002 0.0 0.0 0.0177377892031 0.0 0.0 0.0083119108826 0.0 0.0012853470437 0.0 0.00154241645244 0.0 0.0440445586975 0.00171379605827 0.00171379605827 0.0183376178235 0.252013710368 0.00231362467866 0.0141388174807 0.00214224507284 0.187746358183 0.00471293916024 0.000342759211654 0.0419880034276 0.00616966580977 0.0173950299914 0.0382176520994 0.00154241645244 8.56898029135e-05 0.0298200514139 0.0439588688946 0.000685518423308 0.0371036846615 0.00771208226221 0.00419880034276 0.0 0.00856898029135 8.56898029135e-05 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0019322058157 0.000119271963932 0.000596359819661 0.00100188449703 9.54175711457e-05 0.000548651034088 0.000190835142291 0.0 0.000310107106224 0.000262398320651 9.54175711457e-05 0.00388826602419 0.00329190620453 0.00970873786408 0.0 0.000763340569166 0.000811049354739 0.00114501085375 0.00166980749505 0.000429379070156 0.000190835142291 0.00236158488586 7.15631783593e-05 0.0133107511748 0.000500942248515 0.0 0.0447031320818 0.00410295555927 0.035519190859 0.138331623769 0.0202285250829 0.012618973784 0.0100904081487 0.00233773049307 0.00727558979986 0.0010495932826 0.0014074091744 0.0472555521099 0.0229479258605 0.109706352425 0.00484244173565 0.0166980749505 0.00348274134682 0.210705851483 0.185062379237 0.0327997900813 0.00217074974357 0.0137162758522 0.00722788101429 0.0177476682331 0.00372128527468 0.000954175711457 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0470732080086 0.0 0.0 0.0 0.0255234601865 0.0 0.0 0.0 0.0354577410974 0.0 0.0 0.0409598043711 0.0 0.0 0.0602170258291 0.0 0.0 0.038820113098 0.0 0.0 0.0175760354577 0.0 0.0 0.0 0.0 0.0 0.0674002751032 0.0 0.000305670181874 0.0 0.100718324927 0.0672474400122 0.000458505272811 0.0 0.14687452239 0.0 0.0 0.0675531101941 0.0 0.00168118600031 0.0970502827449 0.0 0.0 0.0544092923735 0.00978144581996 0.0258291303683 0.0776402261959 0.0 0.000458505272811 0.0 0.016964695094 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0279106858054 0.0 0.0 0.0 0.0154173312068 0.0 0.0 0.00146198830409 0.0104997341839 0.0 0.0 0.0204678362573 0.0 0.000930356193514 0.0151515151515 0.000132908027645 0.0 0.0530303030303 0.0 0.0 0.0152844231792 0.0 0.0 0.0 0.00212652844232 0.0 0.0734981392876 0.0 0.0 0.00026581605529 0.168394471026 0.000398724082935 0.0317650186071 0.0604731525784 0.0869218500797 0.0 0.0 0.105396065922 0.00584795321637 0.0377458798511 0.0338915470494 0.000531632110579 0.0 0.110446570973 0.0615364167996 0.00305688463583 0.0479797979798 0.0 0.000398724082935 0.0 0.00890483785221 0.000132908027645 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0484241850399 0.0 0.0 0.0 0.0346273501961 0.0 0.0 0.0 0.0175842012715 0.0 0.0 0.0 0.0 0.0 0.0416610307047 0.0 0.0 0.000135263086704 0.0 0.0 0.020559989179 0.0 0.0 0.0 0.00500473420803 0.000135263086704 0.139862031652 0.00108210469363 0.000405789260111 0.00202894630055 0.240903557419 0.00459894494792 0.0 0.00202894630055 0.1464899229 0.0 0.0 0.01230894089 0.00770999594211 0.00906262680914 0.120519410253 0.000676315433518 0.000270526173407 0.0278641958609 0.00933315298255 0.0462599756526 0.0376031381036 0.0 0.00459894494792 0.0 0.0178547274449 0.000405789260111 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 3.0466441215e-05 0.000396063735795 0.00143192273711 3.0466441215e-05 3.0466441215e-05 0.00036559729458 0.0 6.093288243e-05 0.0 0.0 0.00137098985468 0.010480455778 0.0476495140603 0.00012186576486 0.0 0.0 0.00225451664991 0.00109679188374 0.00079212747159 0.0 0.00018279864729 0.0 3.0466441215e-05 0.0 0.0 0.028760320507 0.014166895165 0.0673308350852 0.0248301495902 0.0580081040734 0.0204125156141 0.0262011394449 0.000396063735795 0.000456996618225 0.00036559729458 0.002833379033 0.043780276026 0.0303750418914 0.293300429577 0.0779940895104 0.0158425494318 0.00164518782561 0.0248606160314 0.077658958657 0.0727843280626 0.00143192273711 0.044359138409 6.093288243e-05 0.00268104682692 0.0 0.00313804344515 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0665859564165 0.0 0.0 0.0 0.0556900726392 0.0 0.0 0.0 0.00968523002421 0.0 0.0 0.0 0.0 0.0 0.089588377724 0.0 0.0 0.00121065375303 0.0 0.0 0.118644067797 0.0 0.0 0.0 0.0 0.0 0.0944309927361 0.0 0.0 0.0 0.15617433414 0.0 0.0 0.0 0.0121065375303 0.0 0.00121065375303 0.0 0.0 0.0 0.158595641646 0.0 0.0 0.00121065375303 0.0 0.0 0.234866828087 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.017523364486 0.0 0.0 0.000389408099688 0.0323208722741 0.0 0.0 0.00545171339564 0.0 0.0272585669782 0.0 0.0 0.0 0.0 0.0 0.0 0.000778816199377 0.0 0.0 0.0 0.0 0.0 0.0401090342679 0.00584112149533 0.000778816199377 0.00233644859813 0.378504672897 0.0035046728972 0.000778816199377 0.00545171339564 0.189252336449 0.000778816199377 0.00194704049844 0.0658099688474 0.00584112149533 0.0428348909657 0.00934579439252 0.00467289719626 0.0 0.00428348909657 0.118380062305 0.00584112149533 0.00856697819315 0.0 0.00700934579439 0.0 0.0144080996885 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0148755154236 0.0 0.0 0.0 0.0127355289942 0.0 0.0 0.0 0.0153974633332 0.0 0.0 0.0 0.0 0.0 0.0140403987682 0.0 0.0 0.0 0.0 0.0 0.00480192076831 0.0 0.0 0.0 0.000782921864398 0.0 0.105746646485 0.0015658437288 0.00323607703951 0.0162325799885 0.203089931625 0.00349705099431 0.00307949266663 0.000417558327679 0.146458583433 0.0 0.00506289472311 0.100631556971 0.00438436244063 0.00970823111853 0.0690537084399 0.00360144057623 0.0 0.00125267498304 0.0295422516833 0.0224437601127 0.0345529516154 0.00579362179654 0.000730727073438 0.0 0.167232110235 5.21947909599e-05 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0529742527375 0.0 0.00029594554602 0.0 0.0317648219394 0.0 0.0 9.86485153398e-05 0.0415310249581 0.0 0.0 9.86485153398e-05 0.0 0.00029594554602 0.0378810298905 0.0 0.0 0.00019729703068 9.86485153398e-05 0.0 0.0217026733748 0.0 0.0 0.0 0.00207161882214 0.0 0.128834961034 0.0457729111177 0.000591891092039 0.00019729703068 0.177961921673 0.00276215842952 0.0 0.000394594061359 0.135345763046 0.0 0.0 0.00384729209825 0.0393607576206 0.00660945052777 0.0854296142843 0.109795797573 0.0 0.000789188122719 0.0269310446878 0.00029594554602 0.0402485942587 0.000493242576699 0.00019729703068 0.0 0.00512972279767 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.00405734379226 0.0 0.0 0.0 0.00676223965377 3.86413694501e-05 0.0 0.0 0.00274353723096 0.0 0.0 0.0 0.0 0.0 0.00811468758453 0.0 0.0 3.86413694501e-05 0.0 0.0 0.00239576490591 0.0 0.0 0.0 7.72827389003e-05 0.0 0.0555276478998 0.00312995092546 0.059662274431 0.0671587001043 0.153560802195 0.0158043201051 0.230032072337 0.00436647474787 0.0552571583137 0.00262761312261 0.0125970864407 0.00741914293443 0.00351636461996 0.0150701340856 0.0248464005564 0.00409598516171 0.00262761312261 0.00398006105336 0.0954828239113 0.129796359983 0.0106263765988 0.0111673557711 0.00301402681711 0.000270489586151 0.00340044051161 0.000734186019553 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.000760726239984 0.00699868140785 0.00213003347195 0.00101430165331 0.000152145247997 0.00238360888528 0.0 0.000101430165331 0.000659296074653 0.0 0.000253575413328 0.000405720661325 0.000811441322649 0.00121716198397 0.000253575413328 0.0047165026879 0.0 0.00583223450654 0.000710011157318 0.000304290495994 0.00542651384522 0.00968658078913 0.000760726239984 0.000355005578659 0.000152145247997 0.0 0.0205396084796 0.0180038543463 0.030936200426 0.0246475301755 0.00547722892788 0.0102951617811 0.0204381783142 0.00233289380262 0.0176488487676 0.000760726239984 0.0095851506238 0.0569530378335 0.0635967136626 0.22355208439 0.0392027589005 0.0338269601379 0.000405720661325 0.135206410386 0.0398620549751 0.0403692058018 0.0912871487981 0.0259154072421 0.0326605132366 0.0032457652906 0.00669439091186 0.0014707373973 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0404912836767 0.0 0.000158478605388 7.92393026941e-05 0.0355784469097 0.0 0.0 0.00625990491284 0.01735340729 0.0 0.0 0.0184627575277 0.0 7.92393026941e-05 0.0282884310618 0.0 0.0 0.0790808240887 0.00118858954041 0.0 0.0160063391442 0.0 0.0 0.0 0.000316957210777 0.0 0.081616481775 0.000713153724247 0.000475435816165 0.000475435816165 0.146434231379 0.000792393026941 0.000475435816165 0.0338351822504 0.0627575277338 0.0 0.000554675118859 0.0736925515055 0.00110935023772 0.000792393026941 0.0806656101426 0.0458795562599 0.0 0.132171156894 0.0244057052298 0.0351030110935 0.0312995245642 0.0 0.000633914421553 0.0 0.00277337559429 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.00115473441109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.240184757506 0.0 0.0 0.0 0.0 0.0 0.00115473441109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.757505773672 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0120088165995 0.0 3.80025841757e-05 0.0 0.0800334422741 0.0 0.0 0.000570038762636 0.00646043930987 0.0 0.0 0.0 0.0 0.0 0.00805654784525 0.0 0.0 0.0 3.80025841757e-05 0.0 0.00497833852702 0.0 0.0 0.0 3.80025841757e-05 0.0 0.12495249677 0.0078285323402 0.0172531732158 0.0234475944364 0.216006688455 0.00566238504218 0.0104507106483 0.0014060956145 0.119100098807 7.60051683514e-05 0.00889260469712 0.0122368321046 0.0223455194953 0.017519191305 0.0806034810367 0.0102987003116 0.000304020673406 0.0242456487041 0.0916242304477 0.0420308580984 0.0267918218439 0.0079805426769 0.00190012920879 0.0 0.0147450026602 7.60051683514e-05 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0124152054269 0.0 0.0137377874483 0.0 0.0185161482998 0.0 0.0 0.0170655744699 0.0123298775545 0.0 0.00435172148982 0.00908741840522 0.00443704936217 0.00482102478775 0.0107086479799 0.0176202056402 0.00285848372371 4.26639361748e-05 0.0 0.0348990997909 0.0287554929818 0.0 0.00627159861769 0.0 0.00337045095781 0.0 0.0282435257477 0.00119459021289 0.0363496736209 0.00102393446819 0.0968471351167 0.00285848372371 0.00204786893639 0.0524339775588 0.081786765647 0.000511967234097 0.00866077904347 0.0255556977687 0.0130125005333 0.0166389351082 0.0315713127693 0.0395068048978 0.00452237723452 0.00115192627672 0.140065702462 0.156661973634 0.0439011903238 0.0 0.00725286914971 4.26639361748e-05 0.00686889372413 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.010395010395 0.0 4.158004158e-05 0.0 0.0128898128898 0.0 0.0 0.0122245322245 0.00756756756757 0.0 0.0 0.0 0.0 0.0 0.00935550935551 0.0 0.0 0.0216632016632 0.0 8.31600831601e-05 0.00390852390852 0.0 0.00253638253638 0.0 0.00120582120582 0.0 0.0778378378378 0.000706860706861 0.0101455301455 0.0002079002079 0.225821205821 0.0031185031185 0.000706860706861 0.0461538461538 0.24656964657 0.0 4.158004158e-05 0.0253638253638 0.00274428274428 0.00607068607069 0.052972972973 0.000956340956341 0.0 0.072474012474 0.0540124740125 0.0294386694387 0.0319334719335 0.00016632016632 0.0045738045738 0.0 0.0255301455301 0.000582120582121 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
7.35672772751e-05 0.0002942691091 7.35672772751e-05 0.0 0.0 0.0 0.000367836386375 0.0 0.0 0.0 0.0 0.000588538218201 0.00044140366365 0.101081438976 0.0 0.00537041124108 0.0 0.0014713455455 0.0023541528728 0.00125064371368 7.35672772751e-05 0.0 0.0 0.0 0.0 0.0 0.0338409475465 0.0313396601192 0.0348708894284 0.0267784889281 0.0357536967557 0.010961524314 0.020598837637 7.35672772751e-05 0.0361951004193 0.0 0.000735672772751 0.0876186272346 0.0478187302288 0.173913043478 0.00691532406386 0.0308246891783 0.00014713455455 0.110130214081 0.120723902008 0.071948797175 0.00044140366365 0.00044140366365 0.0 0.00139777826823 0.000809240050026 0.00228058559553 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0331849453662 0.0 0.000202347227843 0.0 0.0333872925941 0.0 0.0 0.0 0.0400647511129 0.0 0.0 0.0 0.000202347227843 0.0 0.0176042088223 0.0 0.0 0.0 0.0 0.0 0.00161877782274 0.0 0.0 0.0 0.0 0.0 0.123229461756 0.0 0.000202347227843 0.0 0.522258195063 0.0 0.0 0.0 0.166531768515 0.0 0.0 0.0 0.000202347227843 0.0 0.0548360987454 0.0 0.0 0.0 0.0 0.0 0.00404694455686 0.0 0.0 0.0 0.00242816673412 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0719386405713 0.0 0.0 0.0 0.0409944459138 0.0 0.0 0.0444326897646 0.0573922242793 0.0 0.0 0.0 0.0 0.0 0.0454906109495 0.0 0.0 0.024332187252 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.148637926474 0.00370272414705 0.00132240148109 0.00766992859032 0.131182226924 0.00343824385083 0.000528960592436 0.0531605395398 0.128801904258 0.0 0.00423168473949 0.0306797143613 0.00185136207353 0.0446971700608 0.0772282464956 0.000528960592436 0.0 0.0335889976197 0.0386141232478 0.00317376355462 0.000793440888654 0.0 0.0 0.0 0.00158688177731 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.00405268490375 0.0 0.0 0.0 0.00506585612969 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00405268490375 0.0 0.00101317122594 0.0 0.0 0.0901722391084 0.0 0.120567375887 0.0 0.156028368794 0.0 0.0 0.0303951367781 0.165146909828 0.0 0.0 0.00607902735562 0.0 0.00101317122594 0.0202634245187 0.225937183384 0.00303951367781 0.0 0.0 0.139817629179 0.0172239108409 0.00405268490375 0.00101317122594 0.00101317122594 0.00405268490375 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0142083897158 0.0 0.0 0.0 0.0290933694181 0.0 0.0 0.0 0.00338294993234 0.0 0.0 0.0 0.0 0.0 0.0175913396482 0.0 0.0 0.0 0.0 0.0 0.00338294993234 0.0 0.0 0.0 0.0 0.0 0.0554803788904 0.0128552097429 0.0385656292287 0.0128552097429 0.140730717185 0.00676589986468 0.00879566982409 0.00405953991881 0.165087956698 0.0 0.0 0.0453315290934 0.0656292286874 0.0500676589986 0.041948579161 0.0717185385656 0.0 0.0257104194858 0.141407307172 0.0284167794317 0.00405953991881 0.0 0.0121786197564 0.000676589986468 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0078125 0.0 0.0 0.0 0.029296875 0.0 0.0 0.0 0.00390625 0.0 0.0 0.0 0.0 0.0 0.03515625 0.0 0.0 0.0 0.0 0.0 0.00390625 0.0 0.0 0.0 0.0 0.0 0.095703125 0.0 0.0 0.0 0.33984375 0.0 0.0 0.0 0.169921875 0.0 0.001953125 0.064453125 0.00390625 0.0 0.064453125 0.0 0.0 0.0 0.0 0.0 0.009765625 0.0078125 0.00390625 0.0 0.029296875 0.12890625 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
</data></transition_probabilities>
</opencv_storage>
================================================
FILE: assets/cuda_haarcascade_frontalface_default.xml
================================================
<?xml version="1.0"?>
<!--
Stump-based 24x24 discrete(?) adaboost frontal face detector.
Created by Rainer Lienhart.
////////////////////////////////////////////////////////////////////////////////////////
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.
-->
<opencv_storage>
<haarcascade_frontalface_default type_id="opencv-haar-classifier">
<size>24 24</size>
<stages>
<_>
<!-- stage 0 -->
<trees>
<_>
<!-- tree 0 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 4 12 9 -1.</_>
<_>6 7 12 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0315119996666908</threshold>
<left_val>2.0875380039215088</left_val>
<right_val>-2.2172100543975830</right_val></_></_>
<_>
<!-- tree 1 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 4 12 7 -1.</_>
<_>10 4 4 7 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0123960003256798</threshold>
<left_val>-1.8633940219879150</left_val>
<right_val>1.3272049427032471</right_val></_></_>
<_>
<!-- tree 2 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 9 18 9 -1.</_>
<_>3 12 18 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0219279993325472</threshold>
<left_val>-1.5105249881744385</left_val>
<right_val>1.0625729560852051</right_val></_></_>
<_>
<!-- tree 3 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>8 18 9 6 -1.</_>
<_>8 20 9 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>5.7529998011887074e-003</threshold>
<left_val>-0.8746389746665955</left_val>
<right_val>1.1760339736938477</right_val></_></_>
<_>
<!-- tree 4 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 5 4 19 -1.</_>
<_>5 5 2 19 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0150140002369881</threshold>
<left_val>-0.7794569730758667</left_val>
<right_val>1.2608419656753540</right_val></_></_>
<_>
<!-- tree 5 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 5 12 16 -1.</_>
<_>6 13 12 8 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0993710011243820</threshold>
<left_val>0.5575129985809326</left_val>
<right_val>-1.8743000030517578</right_val></_></_>
<_>
<!-- tree 6 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 8 12 6 -1.</_>
<_>5 11 12 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>2.7340000960975885e-003</threshold>
<left_val>-1.6911929845809937</left_val>
<right_val>0.4400970041751862</right_val></_></_>
<_>
<!-- tree 7 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>11 14 4 10 -1.</_>
<_>11 19 4 5 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0188590008765459</threshold>
<left_val>-1.4769539833068848</left_val>
<right_val>0.4435009956359863</right_val></_></_>
<_>
<!-- tree 8 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>4 0 7 6 -1.</_>
<_>4 3 7 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>5.9739998541772366e-003</threshold>
<left_val>-0.8590919971466065</left_val>
<right_val>0.8525559902191162</right_val></_></_></trees>
<stage_threshold>-5.0425500869750977</stage_threshold>
<parent>-1</parent>
<next>-1</next></_>
<_>
<!-- stage 1 -->
<trees>
<_>
<!-- tree 0 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 6 12 6 -1.</_>
<_>6 8 12 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0211100000888109</threshold>
<left_val>1.2435649633407593</left_val>
<right_val>-1.5713009834289551</right_val></_></_>
<_>
<!-- tree 1 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 4 12 7 -1.</_>
<_>10 4 4 7 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0203559994697571</threshold>
<left_val>-1.6204780340194702</left_val>
<right_val>1.1817760467529297</right_val></_></_>
<_>
<!-- tree 2 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 8 19 12 -1.</_>
<_>1 12 19 4 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0213089995086193</threshold>
<left_val>-1.9415930509567261</left_val>
<right_val>0.7006909847259522</right_val></_></_>
<_>
<!-- tree 3 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 2 24 3 -1.</_>
<_>8 2 8 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0916600003838539</threshold>
<left_val>-0.5567010045051575</left_val>
<right_val>1.7284419536590576</right_val></_></_>
<_>
<!-- tree 4 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 9 6 15 -1.</_>
<_>9 14 6 5 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0362880006432533</threshold>
<left_val>0.2676379978656769</left_val>
<right_val>-2.1831810474395752</right_val></_></_>
<_>
<!-- tree 5 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 6 14 10 -1.</_>
<_>5 11 14 5 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0191099997609854</threshold>
<left_val>-2.6730210781097412</left_val>
<right_val>0.4567080140113831</right_val></_></_>
<_>
<!-- tree 6 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 0 14 9 -1.</_>
<_>5 3 14 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>8.2539999857544899e-003</threshold>
<left_val>-1.0852910280227661</left_val>
<right_val>0.5356420278549194</right_val></_></_>
<_>
<!-- tree 7 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>13 11 9 6 -1.</_>
<_>16 11 3 6 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0183550007641315</threshold>
<left_val>-0.3520019948482513</left_val>
<right_val>0.9333919882774353</right_val></_></_>
<_>
<!-- tree 8 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 5 6 10 -1.</_>
<_>9 5 2 10 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-7.0569999516010284e-003</threshold>
<left_val>0.9278209805488586</left_val>
<right_val>-0.6634989976882935</right_val></_></_>
<_>
<!-- tree 9 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>10 8 6 10 -1.</_>
<_>12 8 2 10 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-9.8770000040531158e-003</threshold>
<left_val>1.1577470302581787</left_val>
<right_val>-0.2977479994297028</right_val></_></_>
<_>
<!-- tree 10 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 5 4 9 -1.</_>
<_>4 5 2 9 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0158140007406473</threshold>
<left_val>-0.4196060001850128</left_val>
<right_val>1.3576040267944336</right_val></_></_>
<_>
<!-- tree 11 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>18 0 6 11 -1.</_>
<_>20 0 2 11 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0207000002264977</threshold>
<left_val>1.4590020179748535</left_val>
<right_val>-0.1973939985036850</right_val></_></_>
<_>
<!-- tree 12 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 6 24 13 -1.</_>
<_>8 6 8 13 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.1376080065965653</threshold>
<left_val>1.1186759471893311</left_val>
<right_val>-0.5291550159454346</right_val></_></_>
<_>
<!-- tree 13 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 6 6 9 -1.</_>
<_>11 6 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0143189998343587</threshold>
<left_val>-0.3512719869613648</left_val>
<right_val>1.1440860033035278</right_val></_></_>
<_>
<!-- tree 14 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 18 10 6 -1.</_>
<_>7 20 10 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0102530000731349</threshold>
<left_val>-0.6085060238838196</left_val>
<right_val>0.7709850072860718</right_val></_></_>
<_>
<!-- tree 15 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 7 14 12 -1.</_>
<_>5 13 14 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0915080010890961</threshold>
<left_val>0.3881779909133911</left_val>
<right_val>-1.5122940540313721</right_val></_></_></trees>
<stage_threshold>-4.9842400550842285</stage_threshold>
<parent>0</parent>
<next>-1</next></_>
<_>
<!-- stage 2 -->
<trees>
<_>
<!-- tree 0 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 3 24 3 -1.</_>
<_>8 3 8 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0697470009326935</threshold>
<left_val>-1.0130879878997803</left_val>
<right_val>1.4687349796295166</right_val></_></_>
<_>
<!-- tree 1 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 8 15 6 -1.</_>
<_>5 11 15 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0315029993653297</threshold>
<left_val>-1.6463639736175537</left_val>
<right_val>1.0000629425048828</right_val></_></_>
<_>
<!-- tree 2 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 6 5 14 -1.</_>
<_>9 13 5 7 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0142609998583794</threshold>
<left_val>0.4648030102252960</left_val>
<right_val>-1.5959889888763428</right_val></_></_>
<_>
<!-- tree 3 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 5 6 10 -1.</_>
<_>11 5 2 10 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0144530003890395</threshold>
<left_val>-0.6551190018653870</left_val>
<right_val>0.8302180171012878</right_val></_></_>
<_>
<!-- tree 4 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 6 3 12 -1.</_>
<_>6 12 3 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-3.0509999487549067e-003</threshold>
<left_val>-1.3982310295104980</left_val>
<right_val>0.4255059957504273</right_val></_></_>
<_>
<!-- tree 5 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 21 18 3 -1.</_>
<_>9 21 6 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0327229984104633</threshold>
<left_val>-0.5070260167121887</left_val>
<right_val>1.0526109933853149</right_val></_></_>
<_>
<!-- tree 6 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 6 13 6 -1.</_>
<_>5 8 13 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-7.2960001416504383e-003</threshold>
<left_val>0.3635689914226532</left_val>
<right_val>-1.3464889526367187</right_val></_></_>
<_>
<!-- tree 7 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>18 1 6 15 -1.</_>
<_>18 1 3 15 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0504250004887581</threshold>
<left_val>-0.3046140074729919</left_val>
<right_val>1.4504129886627197</right_val></_></_>
<_>
<!-- tree 8 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 1 6 15 -1.</_>
<_>4 1 3 15 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0468790009617805</threshold>
<left_val>-0.4028620123863220</left_val>
<right_val>1.2145609855651855</right_val></_></_>
<_>
<!-- tree 9 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 8 24 15 -1.</_>
<_>8 8 8 15 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0693589970469475</threshold>
<left_val>1.0539360046386719</left_val>
<right_val>-0.4571970105171204</right_val></_></_>
<_>
<!-- tree 10 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 6 14 12 -1.</_>
<_>5 6 7 6 2.</_>
<_>12 12 7 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0490339994430542</threshold>
<left_val>-1.6253089904785156</left_val>
<right_val>0.1537899971008301</right_val></_></_>
<_>
<!-- tree 11 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 12 21 12 -1.</_>
<_>2 16 21 4 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0848279967904091</threshold>
<left_val>0.2840299904346466</left_val>
<right_val>-1.5662059783935547</right_val></_></_>
<_>
<!-- tree 12 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>8 1 4 10 -1.</_>
<_>10 1 2 10 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-1.7229999648407102e-003</threshold>
<left_val>-1.0147459506988525</left_val>
<right_val>0.2329480051994324</right_val></_></_>
<_>
<!-- tree 13 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 13 20 10 -1.</_>
<_>2 13 10 10 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.1156219989061356</threshold>
<left_val>-0.1673289984464645</left_val>
<right_val>1.2804069519042969</right_val></_></_>
<_>
<!-- tree 14 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 1 6 13 -1.</_>
<_>2 1 2 13 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0512799993157387</threshold>
<left_val>1.5162390470504761</left_val>
<right_val>-0.3027110099792481</right_val></_></_>
<_>
<!-- tree 15 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>20 2 4 13 -1.</_>
<_>20 2 2 13 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0427069999277592</threshold>
<left_val>1.7631920576095581</left_val>
<right_val>-0.0518320016562939</right_val></_></_>
<_>
<!-- tree 16 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 5 22 19 -1.</_>
<_>11 5 11 19 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.3717809915542603</threshold>
<left_val>-0.3138920068740845</left_val>
<right_val>1.5357979536056519</right_val></_></_>
<_>
<!-- tree 17 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>18 4 6 9 -1.</_>
<_>20 4 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0194129999727011</threshold>
<left_val>-0.1001759991049767</left_val>
<right_val>0.9365540146827698</right_val></_></_>
<_>
<!-- tree 18 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 3 6 11 -1.</_>
<_>2 3 2 11 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0174390003085136</threshold>
<left_val>-0.4037989974021912</left_val>
<right_val>0.9629300236701965</right_val></_></_>
<_>
<!-- tree 19 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>12 1 4 9 -1.</_>
<_>12 1 2 9 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0396389998495579</threshold>
<left_val>0.1703909933567047</left_val>
<right_val>-2.9602990150451660</right_val></_></_>
<_>
<!-- tree 20 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 6 19 3 -1.</_>
<_>0 7 19 1 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-9.1469995677471161e-003</threshold>
<left_val>0.8878679871559143</left_val>
<right_val>-0.4381870031356812</right_val></_></_>
<_>
<!-- tree 21 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>12 1 4 9 -1.</_>
<_>12 1 2 9 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>1.7219999572262168e-003</threshold>
<left_val>-0.3721860051155090</left_val>
<right_val>0.4001890122890472</right_val></_></_>
<_>
<!-- tree 22 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>8 1 4 9 -1.</_>
<_>10 1 2 9 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0302310008555651</threshold>
<left_val>0.0659240037202835</left_val>
<right_val>-2.6469180583953857</right_val></_></_>
<_>
<!-- tree 23 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 5 14 14 -1.</_>
<_>12 5 7 7 2.</_>
<_>5 12 7 7 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0787959992885590</threshold>
<left_val>-1.7491459846496582</left_val>
<right_val>0.2847529947757721</right_val></_></_>
<_>
<!-- tree 24 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 10 18 2 -1.</_>
<_>1 11 18 1 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>2.1110000088810921e-003</threshold>
<left_val>-0.9390810132026672</left_val>
<right_val>0.2320519983768463</right_val></_></_>
<_>
<!-- tree 25 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>17 13 4 11 -1.</_>
<_>17 13 2 11 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0270910002291203</threshold>
<left_val>-0.0526640005409718</left_val>
<right_val>1.0756820440292358</right_val></_></_>
<_>
<!-- tree 26 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 4 6 9 -1.</_>
<_>0 7 6 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0449649989604950</threshold>
<left_val>-1.8294479846954346</left_val>
<right_val>0.0995619967579842</right_val></_></_></trees>
<stage_threshold>-4.6551899909973145</stage_threshold>
<parent>1</parent>
<next>-1</next></_>
<_>
<!-- stage 3 -->
<trees>
<_>
<!-- tree 0 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 4 12 9 -1.</_>
<_>6 7 12 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0657010003924370</threshold>
<left_val>1.1558510065078735</left_val>
<right_val>-1.0716359615325928</right_val></_></_>
<_>
<!-- tree 1 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 5 12 6 -1.</_>
<_>10 5 4 6 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0158399995416403</threshold>
<left_val>-1.5634720325469971</left_val>
<right_val>0.7687709927558899</right_val></_></_>
<_>
<!-- tree 2 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 1 24 5 -1.</_>
<_>8 1 8 5 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.1457089930772781</threshold>
<left_val>-0.5745009779930115</left_val>
<right_val>1.3808720111846924</right_val></_></_>
<_>
<!-- tree 3 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>4 10 18 6 -1.</_>
<_>4 12 18 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>6.1389999464154243e-003</threshold>
<left_val>-1.4570560455322266</left_val>
<right_val>0.5161030292510986</right_val></_></_>
<_>
<!-- tree 4 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 17 12 6 -1.</_>
<_>2 17 6 3 2.</_>
<_>8 20 6 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>6.7179999314248562e-003</threshold>
<left_val>-0.8353360295295715</left_val>
<right_val>0.5852220058441162</right_val></_></_>
<_>
<!-- tree 5 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>19 3 4 13 -1.</_>
<_>19 3 2 13 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0185180008411407</threshold>
<left_val>-0.3131209909915924</left_val>
<right_val>1.1696679592132568</right_val></_></_>
<_>
<!-- tree 6 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 3 4 13 -1.</_>
<_>3 3 2 13 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0199580006301403</threshold>
<left_val>-0.4344260096549988</left_val>
<right_val>0.9544690251350403</right_val></_></_>
<_>
<!-- tree 7 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 1 24 23 -1.</_>
<_>8 1 8 23 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.2775500118732452</threshold>
<left_val>1.4906179904937744</left_val>
<right_val>-0.1381590068340302</right_val></_></_>
<_>
<!-- tree 8 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 7 8 12 -1.</_>
<_>1 11 8 4 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>9.1859996318817139e-003</threshold>
<left_val>-0.9636150002479553</left_val>
<right_val>0.2766549885272980</right_val></_></_>
<_>
<!-- tree 9 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>14 7 3 14 -1.</_>
<_>14 14 3 7 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0377379991114140</threshold>
<left_val>-2.4464108943939209</left_val>
<right_val>0.2361959964036942</right_val></_></_>
<_>
<!-- tree 10 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 12 16 6 -1.</_>
<_>3 12 8 3 2.</_>
<_>11 15 8 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0184630006551743</threshold>
<left_val>0.1753920018672943</left_val>
<right_val>-1.3423130512237549</right_val></_></_>
<_>
<!-- tree 11 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 6 12 6 -1.</_>
<_>6 8 12 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0111149996519089</threshold>
<left_val>0.4871079921722412</left_val>
<right_val>-0.8985189795494080</right_val></_></_>
<_>
<!-- tree 12 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>8 7 6 12 -1.</_>
<_>8 13 6 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0339279994368553</threshold>
<left_val>0.1787420064210892</left_val>
<right_val>-1.6342279911041260</right_val></_></_>
<_>
<!-- tree 13 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>15 15 9 6 -1.</_>
<_>15 17 9 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0356490015983582</threshold>
<left_val>-1.9607399702072144</left_val>
<right_val>0.1810249984264374</right_val></_></_>
<_>
<!-- tree 14 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 17 18 3 -1.</_>
<_>1 18 18 1 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0114380000159144</threshold>
<left_val>0.9901069998741150</left_val>
<right_val>-0.3810319900512695</right_val></_></_>
<_>
<!-- tree 15 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>4 4 16 12 -1.</_>
<_>4 10 16 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0652360022068024</threshold>
<left_val>-2.5794160366058350</left_val>
<right_val>0.2475360035896301</right_val></_></_>
<_>
<!-- tree 16 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 1 4 20 -1.</_>
<_>2 1 2 20 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0422720015048981</threshold>
<left_val>1.4411840438842773</left_val>
<right_val>-0.2950829863548279</right_val></_></_>
<_>
<!-- tree 17 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 0 18 2 -1.</_>
<_>3 1 18 1 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>1.9219999667257071e-003</threshold>
<left_val>-0.4960860013961792</left_val>
<right_val>0.6317359805107117</right_val></_></_>
<_>
<!-- tree 18 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 5 20 14 -1.</_>
<_>1 5 10 7 2.</_>
<_>11 12 10 7 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.1292179971933365</threshold>
<left_val>-2.3314270973205566</left_val>
<right_val>0.0544969998300076</right_val></_></_>
<_>
<!-- tree 19 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 8 14 12 -1.</_>
<_>5 12 14 4 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0229310002177954</threshold>
<left_val>-0.8444709777832031</left_val>
<right_val>0.3873809874057770</right_val></_></_>
<_>
<!-- tree 20 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 14 7 9 -1.</_>
<_>3 17 7 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0341200008988380</threshold>
<left_val>-1.4431500434875488</left_val>
<right_val>0.0984229966998100</right_val></_></_>
<_>
<!-- tree 21 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>14 15 9 6 -1.</_>
<_>14 17 9 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0262230001389980</threshold>
<left_val>0.1822309941053391</left_val>
<right_val>-1.2586519718170166</right_val></_></_>
<_>
<!-- tree 22 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 15 9 6 -1.</_>
<_>1 17 9 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0222369991242886</threshold>
<left_val>0.0698079988360405</left_val>
<right_val>-2.3820950984954834</right_val></_></_>
<_>
<!-- tree 23 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>11 6 8 10 -1.</_>
<_>15 6 4 5 2.</_>
<_>11 11 4 5 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-5.8240001089870930e-003</threshold>
<left_val>0.3933250010013580</left_val>
<right_val>-0.2754279971122742</right_val></_></_>
<_>
<!-- tree 24 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 5 14 14 -1.</_>
<_>5 5 7 7 2.</_>
<_>12 12 7 7 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0436530001461506</threshold>
<left_val>0.1483269929885864</left_val>
<right_val>-1.1368780136108398</right_val></_></_>
<_>
<!-- tree 25 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 0 12 5 -1.</_>
<_>10 0 4 5 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0572669990360737</threshold>
<left_val>0.2462809979915619</left_val>
<right_val>-1.2687400579452515</right_val></_></_>
<_>
<!-- tree 26 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 0 6 9 -1.</_>
<_>9 3 6 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>2.3409998975694180e-003</threshold>
<left_val>-0.7544890046119690</left_val>
<right_val>0.2716380059719086</right_val></_></_>
<_>
<!-- tree 27 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 6 6 9 -1.</_>
<_>11 6 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0129960002377629</threshold>
<left_val>-0.3639490008354187</left_val>
<right_val>0.7095919847488403</right_val></_></_>
<_>
<!-- tree 28 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 0 6 9 -1.</_>
<_>9 0 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0265170000493526</threshold>
<left_val>-2.3221859931945801</left_val>
<right_val>0.0357440002262592</right_val></_></_>
<_>
<!-- tree 29 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>10 6 6 9 -1.</_>
<_>12 6 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-5.8400002308189869e-003</threshold>
<left_val>0.4219430088996887</left_val>
<right_val>-0.0481849983334541</right_val></_></_>
<_>
<!-- tree 30 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>8 6 6 9 -1.</_>
<_>10 6 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0165689997375011</threshold>
<left_val>1.1099940538406372</left_val>
<right_val>-0.3484970033168793</right_val></_></_>
<_>
<!-- tree 31 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 8 18 4 -1.</_>
<_>9 8 6 4 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0681570023298264</threshold>
<left_val>-3.3269989490509033</left_val>
<right_val>0.2129900008440018</right_val></_></_></trees>
<stage_threshold>-4.4531588554382324</stage_threshold>
<parent>2</parent>
<next>-1</next></_>
<_>
<!-- stage 4 -->
<trees>
<_>
<!-- tree 0 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 0 12 9 -1.</_>
<_>6 3 12 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0399740003049374</threshold>
<left_val>-1.2173449993133545</left_val>
<right_val>1.0826710462570190</right_val></_></_>
<_>
<!-- tree 1 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 0 24 6 -1.</_>
<_>8 0 8 6 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.1881950050592423</threshold>
<left_val>-0.4828940033912659</left_val>
<right_val>1.4045250415802002</right_val></_></_>
<_>
<!-- tree 2 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>4 7 16 12 -1.</_>
<_>4 11 16 4 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0780270025134087</threshold>
<left_val>-1.0782150030136108</left_val>
<right_val>0.7404029965400696</right_val></_></_>
<_>
<!-- tree 3 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>11 6 6 6 -1.</_>
<_>11 6 3 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>1.1899999663000926e-004</threshold>
<left_val>-1.2019979953765869</left_val>
<right_val>0.3774920105934143</right_val></_></_>
<_>
<!-- tree 4 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 20 24 3 -1.</_>
<_>8 20 8 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0850569978356361</threshold>
<left_val>-0.4393909871578217</left_val>
<right_val>1.2647340297698975</right_val></_></_>
<_>
<!-- tree 5 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>11 6 4 9 -1.</_>
<_>11 6 2 9 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>8.9720003306865692e-003</threshold>
<left_val>-0.1844049990177155</left_val>
<right_val>0.4572640061378479</right_val></_></_>
<_>
<!-- tree 6 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>4 13 15 4 -1.</_>
<_>9 13 5 4 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>8.8120000436902046e-003</threshold>
<left_val>0.3039669990539551</left_val>
<right_val>-0.9599109888076782</right_val></_></_>
<_>
<!-- tree 7 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>11 6 4 9 -1.</_>
<_>11 6 2 9 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0235079992562532</threshold>
<left_val>1.2487529516220093</left_val>
<right_val>0.0462279990315437</right_val></_></_>
<_>
<!-- tree 8 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 6 4 9 -1.</_>
<_>11 6 2 9 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>7.0039997808635235e-003</threshold>
<left_val>-0.5944210290908814</left_val>
<right_val>0.5396329760551453</right_val></_></_>
<_>
<!-- tree 9 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 12 6 12 -1.</_>
<_>9 18 6 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0338519997894764</threshold>
<left_val>0.2849609851837158</left_val>
<right_val>-1.4895249605178833</right_val></_></_>
<_>
<!-- tree 10 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 22 18 2 -1.</_>
<_>1 23 18 1 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-3.2530000898987055e-003</threshold>
<left_val>0.4812079966068268</left_val>
<right_val>-0.5271239876747131</right_val></_></_>
<_>
<!-- tree 11 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>10 7 4 10 -1.</_>
<_>10 12 4 5 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0290970001369715</threshold>
<left_val>0.2674390077590942</left_val>
<right_val>-1.6007850170135498</right_val></_></_>
<_>
<!-- tree 12 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 7 8 10 -1.</_>
<_>6 12 8 5 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-8.4790000692009926e-003</threshold>
<left_val>-1.3107639551162720</left_val>
<right_val>0.1524309962987900</right_val></_></_>
<_>
<!-- tree 13 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 6 10 6 -1.</_>
<_>7 8 10 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0107950000092387</threshold>
<left_val>0.4561359882354736</left_val>
<right_val>-0.7205089926719666</right_val></_></_>
<_>
<!-- tree 14 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 14 10 4 -1.</_>
<_>0 16 10 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0246200002729893</threshold>
<left_val>-1.7320619821548462</left_val>
<right_val>0.0683630034327507</right_val></_></_>
<_>
<!-- tree 15 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 18 18 2 -1.</_>
<_>6 19 18 1 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>3.7380000576376915e-003</threshold>
<left_val>-0.1930329948663712</left_val>
<right_val>0.6824349761009216</right_val></_></_>
<_>
<!-- tree 16 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 1 22 3 -1.</_>
<_>1 2 22 1 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0122640002518892</threshold>
<left_val>-1.6095290184020996</left_val>
<right_val>0.0752680003643036</right_val></_></_>
<_>
<!-- tree 17 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 16 18 3 -1.</_>
<_>6 17 18 1 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-4.8670000396668911e-003</threshold>
<left_val>0.7428650259971619</left_val>
<right_val>-0.2151020020246506</right_val></_></_>
<_>
<!-- tree 18 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 4 6 15 -1.</_>
<_>5 4 3 15 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0767259970307350</threshold>
<left_val>-0.2683509886264801</left_val>
<right_val>1.3094140291213989</right_val></_></_>
<_>
<!-- tree 19 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>20 4 4 10 -1.</_>
<_>20 4 2 10 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0285780001431704</threshold>
<left_val>-0.0587930008769035</left_val>
<right_val>1.2196329832077026</right_val></_></_>
<_>
<!-- tree 20 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 4 4 10 -1.</_>
<_>2 4 2 10 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0196940004825592</threshold>
<left_val>-0.3514289855957031</left_val>
<right_val>0.8492699861526489</right_val></_></_>
<_>
<!-- tree 21 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 16 20 6 -1.</_>
<_>12 16 10 3 2.</_>
<_>2 19 10 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0290939994156361</threshold>
<left_val>-1.0507299900054932</left_val>
<right_val>0.2980630099773407</right_val></_></_>
<_>
<!-- tree 22 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 12 8 9 -1.</_>
<_>4 12 4 9 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0291440002620220</threshold>
<left_val>0.8254780173301697</left_val>
<right_val>-0.3268719911575317</right_val></_></_>
<_>
<!-- tree 23 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>12 0 6 9 -1.</_>
<_>14 0 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0197410006076097</threshold>
<left_val>0.2045260071754456</left_val>
<right_val>-0.8376020193099976</right_val></_></_>
<_>
<!-- tree 24 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 10 6 6 -1.</_>
<_>8 10 3 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>4.3299999088048935e-003</threshold>
<left_val>0.2057790011167526</left_val>
<right_val>-0.6682980060577393</right_val></_></_>
<_>
<!-- tree 25 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>11 8 12 6 -1.</_>
<_>17 8 6 3 2.</_>
<_>11 11 6 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0355009995400906</threshold>
<left_val>-1.2969900369644165</left_val>
<right_val>0.1389749944210053</right_val></_></_>
<_>
<!-- tree 26 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 8 12 6 -1.</_>
<_>0 8 6 3 2.</_>
<_>6 11 6 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0161729995161295</threshold>
<left_val>-1.3110569715499878</left_val>
<right_val>0.0757519975304604</right_val></_></_>
<_>
<!-- tree 27 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>12 0 6 9 -1.</_>
<_>14 0 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0221510007977486</threshold>
<left_val>-1.0524389743804932</left_val>
<right_val>0.1924110054969788</right_val></_></_>
<_>
<!-- tree 28 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 0 6 9 -1.</_>
<_>8 0 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0227070003747940</threshold>
<left_val>-1.3735309839248657</left_val>
<right_val>0.0667809993028641</right_val></_></_>
<_>
<!-- tree 29 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>8 14 9 6 -1.</_>
<_>8 16 9 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0166079998016357</threshold>
<left_val>-0.0371359996497631</left_val>
<right_val>0.7784640192985535</right_val></_></_>
<_>
<!-- tree 30 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 16 9 6 -1.</_>
<_>0 18 9 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0133090000599623</threshold>
<left_val>-0.9985070228576660</left_val>
<right_val>0.1224810034036636</right_val></_></_>
<_>
<!-- tree 31 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>10 8 6 10 -1.</_>
<_>12 8 2 10 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0337320007383823</threshold>
<left_val>1.4461359977722168</left_val>
<right_val>0.0131519995629787</right_val></_></_>
<_>
<!-- tree 32 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 19 12 3 -1.</_>
<_>9 19 6 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0169350001960993</threshold>
<left_val>-0.3712129890918732</left_val>
<right_val>0.5284219980239868</right_val></_></_>
<_>
<!-- tree 33 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 10 20 2 -1.</_>
<_>2 11 20 1 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>3.3259999472647905e-003</threshold>
<left_val>-0.5756850242614746</left_val>
<right_val>0.3926190137863159</right_val></_></_>
<_>
<!-- tree 34 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 9 18 12 -1.</_>
<_>2 9 9 6 2.</_>
<_>11 15 9 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0836440026760101</threshold>
<left_val>0.0161160007119179</left_val>
<right_val>-2.1173279285430908</right_val></_></_>
<_>
<!-- tree 35 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 0 18 24 -1.</_>
<_>3 0 9 24 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.2578519880771637</threshold>
<left_val>-0.0816090032458305</left_val>
<right_val>0.9878249764442444</right_val></_></_>
<_>
<!-- tree 36 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 6 14 10 -1.</_>
<_>5 6 7 5 2.</_>
<_>12 11 7 5 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0365669988095760</threshold>
<left_val>-1.1512110233306885</left_val>
<right_val>0.0964590013027191</right_val></_></_>
<_>
<!-- tree 37 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 5 10 12 -1.</_>
<_>14 5 5 6 2.</_>
<_>9 11 5 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0164459999650717</threshold>
<left_val>0.3731549978256226</left_val>
<right_val>-0.1458539962768555</right_val></_></_>
<_>
<!-- tree 38 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>4 5 12 12 -1.</_>
<_>4 5 6 6 2.</_>
<_>10 11 6 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-3.7519999314099550e-003</threshold>
<left_val>0.2617929875850678</left_val>
<right_val>-0.5815669894218445</right_val></_></_>
<_>
<!-- tree 39 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>4 14 18 3 -1.</_>
<_>4 15 18 1 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-6.3660000450909138e-003</threshold>
<left_val>0.7547739744186401</left_val>
<right_val>-0.1705520004034042</right_val></_></_>
<_>
<!-- tree 40 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 13 8 8 -1.</_>
<_>6 17 8 4 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-3.8499999791383743e-003</threshold>
<left_val>0.2265399992465973</left_val>
<right_val>-0.6387640237808228</right_val></_></_>
<_>
<!-- tree 41 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 16 18 6 -1.</_>
<_>3 19 18 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0454940013587475</threshold>
<left_val>-1.2640299797058105</left_val>
<right_val>0.2526069879531860</right_val></_></_>
<_>
<!-- tree 42 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 0 6 6 -1.</_>
<_>3 0 3 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0239410009235144</threshold>
<left_val>0.8706840276718140</left_val>
<right_val>-0.2710469961166382</right_val></_></_>
<_>
<!-- tree 43 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 6 12 18 -1.</_>
<_>10 6 4 18 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0775580033659935</threshold>
<left_val>-1.3901610374450684</left_val>
<right_val>0.2361229956150055</right_val></_></_>
<_>
<!-- tree 44 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 1 4 14 -1.</_>
<_>8 1 2 14 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0236140005290508</threshold>
<left_val>0.0661400035023689</left_val>
<right_val>-1.2645419836044312</right_val></_></_>
<_>
<!-- tree 45 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 2 19 2 -1.</_>
<_>3 3 19 1 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-2.5750000495463610e-003</threshold>
<left_val>-0.5384169816970825</left_val>
<right_val>0.3037909865379334</right_val></_></_>
<_>
<!-- tree 46 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 8 22 13 -1.</_>
<_>12 8 11 13 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.1201080009341240</threshold>
<left_val>-0.3534300029277802</left_val>
<right_val>0.5286620259284973</right_val></_></_>
<_>
<!-- tree 47 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>8 9 11 4 -1.</_>
<_>8 11 11 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>2.2899999748915434e-003</threshold>
<left_val>-0.5870199799537659</left_val>
<right_val>0.2406100034713745</right_val></_></_>
<_>
<!-- tree 48 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 12 15 10 -1.</_>
<_>5 12 5 10 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0697169974446297</threshold>
<left_val>-0.3334890007972717</left_val>
<right_val>0.5191630125045776</right_val></_></_>
<_>
<!-- tree 49 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>12 16 12 6 -1.</_>
<_>16 16 4 6 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0466700010001659</threshold>
<left_val>0.6979539990425110</left_val>
<right_val>-0.0148959998041391</right_val></_></_>
<_>
<!-- tree 50 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 16 12 6 -1.</_>
<_>4 16 4 6 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0501290000975132</threshold>
<left_val>0.8614619970321655</left_val>
<right_val>-0.2598600089550018</right_val></_></_>
<_>
<!-- tree 51 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>19 1 5 12 -1.</_>
<_>19 5 5 4 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0301479995250702</threshold>
<left_val>0.1933279931545258</left_val>
<right_val>-0.5913109779357910</right_val></_></_></trees>
<stage_threshold>-4.3864588737487793</stage_threshold>
<parent>3</parent>
<next>-1</next></_>
<_>
<!-- stage 5 -->
<trees>
<_>
<!-- tree 0 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 2 24 4 -1.</_>
<_>8 2 8 4 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0910850018262863</threshold>
<left_val>-0.8923310041427612</left_val>
<right_val>1.0434230566024780</right_val></_></_>
<_>
<!-- tree 1 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 8 12 4 -1.</_>
<_>6 10 12 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0128189995884895</threshold>
<left_val>-1.2597670555114746</left_val>
<right_val>0.5531709790229797</right_val></_></_>
<_>
<!-- tree 2 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 5 9 6 -1.</_>
<_>10 5 3 6 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0159319993108511</threshold>
<left_val>-0.8625440001487732</left_val>
<right_val>0.6373180150985718</right_val></_></_>
<_>
<!-- tree 3 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 17 6 6 -1.</_>
<_>9 20 6 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>2.2780001163482666e-003</threshold>
<left_val>-0.7463920116424561</left_val>
<right_val>0.5315560102462769</right_val></_></_>
<_>
<!-- tree 4 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 7 22 15 -1.</_>
<_>0 12 22 5 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0318409986793995</threshold>
<left_val>-1.2650489807128906</left_val>
<right_val>0.3615390062332153</right_val></_></_>
<_>
<!-- tree 5 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>4 1 17 9 -1.</_>
<_>4 4 17 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>2.6960000395774841e-003</threshold>
<left_val>-0.9829040169715881</left_val>
<right_val>0.3601300120353699</right_val></_></_>
<_>
<!-- tree 6 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 5 6 10 -1.</_>
<_>9 5 2 10 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0120550002902746</threshold>
<left_val>0.6406840085983276</left_val>
<right_val>-0.5012500286102295</right_val></_></_>
<_>
<!-- tree 7 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>18 1 6 8 -1.</_>
<_>18 1 3 8 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0213249996304512</threshold>
<left_val>-0.2403499931097031</left_val>
<right_val>0.8544800281524658</right_val></_></_>
<_>
<!-- tree 8 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 1 6 7 -1.</_>
<_>3 1 3 7 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0304860007017851</threshold>
<left_val>-0.3427360057830811</left_val>
<right_val>1.1428849697113037</right_val></_></_>
<_>
<!-- tree 9 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>18 0 6 22 -1.</_>
<_>18 0 3 22 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0450799986720085</threshold>
<left_val>1.0976949930191040</left_val>
<right_val>-0.1797460019588471</right_val></_></_>
<_>
<!-- tree 10 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 0 6 22 -1.</_>
<_>3 0 3 22 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0717009976506233</threshold>
<left_val>1.5735000371932983</left_val>
<right_val>-0.3143349885940552</right_val></_></_>
<_>
<!-- tree 11 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>16 7 8 16 -1.</_>
<_>16 7 4 16 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0592180006206036</threshold>
<left_val>-0.2758240103721619</left_val>
<right_val>1.0448570251464844</right_val></_></_>
<_>
<!-- tree 12 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 10 19 6 -1.</_>
<_>2 12 19 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>6.7010000348091125e-003</threshold>
<left_val>-1.0974019765853882</left_val>
<right_val>0.1980119943618774</right_val></_></_>
<_>
<!-- tree 13 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 9 6 12 -1.</_>
<_>9 13 6 4 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0410469993948936</threshold>
<left_val>0.3054769933223724</left_val>
<right_val>-1.3287999629974365</right_val></_></_>
<_>
<!-- tree 14 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 15 17 6 -1.</_>
<_>2 17 17 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-8.5499999113380909e-004</threshold>
<left_val>0.2580710053443909</left_val>
<right_val>-0.7005289793014526</right_val></_></_>
<_>
<!-- tree 15 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>14 7 3 14 -1.</_>
<_>14 14 3 7 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0303600002080202</threshold>
<left_val>-1.2306419610977173</left_val>
<right_val>0.2260939925909042</right_val></_></_>
<_>
<!-- tree 16 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 6 8 10 -1.</_>
<_>5 6 4 5 2.</_>
<_>9 11 4 5 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0129300002008677</threshold>
<left_val>0.4075860083103180</left_val>
<right_val>-0.5123450160026550</right_val></_></_>
<_>
<!-- tree 17 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>15 8 9 11 -1.</_>
<_>18 8 3 11 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0373679995536804</threshold>
<left_val>-0.0947550013661385</left_val>
<right_val>0.6176509857177734</right_val></_></_>
<_>
<!-- tree 18 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 8 9 11 -1.</_>
<_>3 8 3 11 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0244340002536774</threshold>
<left_val>-0.4110060036182404</left_val>
<right_val>0.4763050079345703</right_val></_></_>
<_>
<!-- tree 19 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>8 6 10 18 -1.</_>
<_>8 15 10 9 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0570079982280731</threshold>
<left_val>0.2524929940700531</left_val>
<right_val>-0.6866980195045471</right_val></_></_>
<_>
<!-- tree 20 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 7 3 14 -1.</_>
<_>7 14 3 7 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0163139998912811</threshold>
<left_val>-0.9392840266227722</left_val>
<right_val>0.1144810020923615</right_val></_></_>
<_>
<!-- tree 21 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 14 24 8 -1.</_>
<_>8 14 8 8 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.1764889955520630</threshold>
<left_val>1.2451089620590210</left_val>
<right_val>-0.0565190017223358</right_val></_></_>
<_>
<!-- tree 22 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 10 18 14 -1.</_>
<_>10 10 9 14 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.1761460006237030</threshold>
<left_val>-0.3252820074558258</left_val>
<right_val>0.8279150128364563</right_val></_></_>
<_>
<!-- tree 23 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>14 12 6 6 -1.</_>
<_>14 15 6 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-7.3910001665353775e-003</threshold>
<left_val>0.3478370010852814</left_val>
<right_val>-0.1792909950017929</right_val></_></_>
<_>
<!-- tree 24 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 0 10 16 -1.</_>
<_>7 0 5 8 2.</_>
<_>12 8 5 8 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0608909986913204</threshold>
<left_val>0.0550980009138584</left_val>
<right_val>-1.5480779409408569</right_val></_></_>
<_>
<!-- tree 25 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>10 0 9 6 -1.</_>
<_>13 0 3 6 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0291230008006096</threshold>
<left_val>-1.0255639553070068</left_val>
<right_val>0.2410690039396286</right_val></_></_>
<_>
<!-- tree 26 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>4 3 16 4 -1.</_>
<_>12 3 8 4 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0456489995121956</threshold>
<left_val>1.0301599502563477</left_val>
<right_val>-0.3167209923267365</right_val></_></_>
<_>
<!-- tree 27 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>10 0 9 6 -1.</_>
<_>13 0 3 6 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0373330004513264</threshold>
<left_val>0.2162059992551804</left_val>
<right_val>-0.8258990049362183</right_val></_></_>
<_>
<!-- tree 28 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 1 20 4 -1.</_>
<_>1 1 10 2 2.</_>
<_>11 3 10 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0244110003113747</threshold>
<left_val>-1.5957959890365601</left_val>
<right_val>0.0511390008032322</right_val></_></_>
<_>
<!-- tree 29 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>10 0 9 6 -1.</_>
<_>13 0 3 6 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0598069988191128</threshold>
<left_val>-1.0312290191650391</left_val>
<right_val>0.1309230029582977</right_val></_></_>
<_>
<!-- tree 30 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 0 9 6 -1.</_>
<_>8 0 3 6 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0301060006022453</threshold>
<left_val>-1.4781630039215088</left_val>
<right_val>0.0372119992971420</right_val></_></_>
<_>
<!-- tree 31 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>8 18 10 6 -1.</_>
<_>8 20 10 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>7.4209999293088913e-003</threshold>
<left_val>-0.2402410060167313</left_val>
<right_val>0.4933399856090546</right_val></_></_>
<_>
<!-- tree 32 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 3 6 9 -1.</_>
<_>8 3 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-2.1909999195486307e-003</threshold>
<left_val>0.2894150018692017</left_val>
<right_val>-0.5725960135459900</right_val></_></_>
<_>
<!-- tree 33 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 3 12 6 -1.</_>
<_>7 5 12 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0208609998226166</threshold>
<left_val>-0.2314839959144592</left_val>
<right_val>0.6376590132713318</right_val></_></_>
<_>
<!-- tree 34 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 10 18 3 -1.</_>
<_>0 11 18 1 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-6.6990000195801258e-003</threshold>
<left_val>-1.2107750177383423</left_val>
<right_val>0.0640180036425591</right_val></_></_>
<_>
<!-- tree 35 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 10 22 3 -1.</_>
<_>1 11 22 1 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0187580008059740</threshold>
<left_val>0.2446130067110062</left_val>
<right_val>-0.9978669881820679</right_val></_></_>
<_>
<!-- tree 36 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 11 8 8 -1.</_>
<_>9 11 4 8 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0443230010569096</threshold>
<left_val>-1.3699189424514771</left_val>
<right_val>0.0360519997775555</right_val></_></_>
<_>
<!-- tree 37 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>12 11 6 6 -1.</_>
<_>12 11 3 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0228599999099970</threshold>
<left_val>0.2128839939832687</left_val>
<right_val>-1.0397620201110840</right_val></_></_>
<_>
<!-- tree 38 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 11 6 6 -1.</_>
<_>9 11 3 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-9.8600005730986595e-004</threshold>
<left_val>0.3244360089302063</left_val>
<right_val>-0.5429180264472961</right_val></_></_>
<_>
<!-- tree 39 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 10 11 6 -1.</_>
<_>7 12 11 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0172390006482601</threshold>
<left_val>-0.2832390069961548</left_val>
<right_val>0.4446820020675659</right_val></_></_>
<_>
<!-- tree 40 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 13 24 4 -1.</_>
<_>0 13 12 2 2.</_>
<_>12 15 12 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0345310010015965</threshold>
<left_val>-2.3107020854949951</left_val>
<right_val>-3.1399999279528856e-003</right_val></_></_>
<_>
<!-- tree 41 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 4 22 12 -1.</_>
<_>13 4 11 6 2.</_>
<_>2 10 11 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0670069977641106</threshold>
<left_val>0.2871569991111755</left_val>
<right_val>-0.6448100209236145</right_val></_></_>
<_>
<!-- tree 42 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 0 20 17 -1.</_>
<_>12 0 10 17 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.2377689927816391</threshold>
<left_val>-0.2717480063438416</left_val>
<right_val>0.8021910190582275</right_val></_></_>
<_>
<!-- tree 43 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>14 0 2 24 -1.</_>
<_>14 0 1 24 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0129030002281070</threshold>
<left_val>-1.5317620038986206</left_val>
<right_val>0.2142360061407089</right_val></_></_>
<_>
<!-- tree 44 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>8 0 2 24 -1.</_>
<_>9 0 1 24 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0105149997398257</threshold>
<left_val>0.0770379975438118</left_val>
<right_val>-1.0581140518188477</right_val></_></_>
<_>
<!-- tree 45 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>14 1 2 22 -1.</_>
<_>14 1 1 22 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0169690009206533</threshold>
<left_val>0.1430670022964478</left_val>
<right_val>-0.8582839965820313</right_val></_></_>
<_>
<!-- tree 46 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>8 1 2 22 -1.</_>
<_>9 1 1 22 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-7.2460002265870571e-003</threshold>
<left_val>-1.1020129919052124</left_val>
<right_val>0.0649069994688034</right_val></_></_>
<_>
<!-- tree 47 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>17 6 3 18 -1.</_>
<_>18 6 1 18 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0105569995939732</threshold>
<left_val>0.0139640001580119</left_val>
<right_val>0.6360149979591370</right_val></_></_>
<_>
<!-- tree 48 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 14 9 6 -1.</_>
<_>6 16 9 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>6.1380001716315746e-003</threshold>
<left_val>-0.3454590141773224</left_val>
<right_val>0.5629680156707764</right_val></_></_>
<_>
<!-- tree 49 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>13 14 9 4 -1.</_>
<_>13 16 9 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0131580000743270</threshold>
<left_val>0.1992730051279068</left_val>
<right_val>-1.5040320158004761</right_val></_></_>
<_>
<!-- tree 50 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 18 18 3 -1.</_>
<_>3 19 18 1 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>3.1310000922530890e-003</threshold>
<left_val>-0.4090369939804077</left_val>
<right_val>0.3779639899730682</right_val></_></_>
<_>
<!-- tree 51 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 4 8 18 -1.</_>
<_>13 4 4 9 2.</_>
<_>9 13 4 9 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.1092069968581200</threshold>
<left_val>-2.2227079868316650</left_val>
<right_val>0.1217819973826408</right_val></_></_>
<_>
<!-- tree 52 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 17 18 3 -1.</_>
<_>0 18 18 1 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>8.1820003688335419e-003</threshold>
<left_val>-0.2865200042724609</left_val>
<right_val>0.6789079904556274</right_val></_></_></trees>
<stage_threshold>-4.1299300193786621</stage_threshold>
<parent>4</parent>
<next>-1</next></_>
<_>
<!-- stage 6 -->
<trees>
<_>
<!-- tree 0 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 2 12 4 -1.</_>
<_>6 2 6 4 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0313469991087914</threshold>
<left_val>-0.8888459801673889</left_val>
<right_val>0.9493680000305176</right_val></_></_>
<_>
<!-- tree 1 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 8 14 6 -1.</_>
<_>6 11 14 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0319180004298687</threshold>
<left_val>-1.1146880388259888</left_val>
<right_val>0.4888899922370911</right_val></_></_>
<_>
<!-- tree 2 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 5 6 6 -1.</_>
<_>10 5 3 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>6.5939999185502529e-003</threshold>
<left_val>-1.0097689628601074</left_val>
<right_val>0.4972380101680756</right_val></_></_>
<_>
<!-- tree 3 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>10 5 6 16 -1.</_>
<_>10 13 6 8 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0261480007320642</threshold>
<left_val>0.2599129974842072</left_val>
<right_val>-1.2537480592727661</right_val></_></_>
<_>
<!-- tree 4 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 4 9 16 -1.</_>
<_>4 4 3 16 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0128450002521276</threshold>
<left_val>-0.5713859796524048</left_val>
<right_val>0.5965949892997742</right_val></_></_>
<_>
<!-- tree 5 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 0 18 9 -1.</_>
<_>5 3 18 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0263449996709824</threshold>
<left_val>-0.5520319938659668</left_val>
<right_val>0.3021740019321442</right_val></_></_>
<_>
<!-- tree 6 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 15 5 8 -1.</_>
<_>9 19 5 4 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0150830000638962</threshold>
<left_val>-1.2871240377426147</left_val>
<right_val>0.2235420048236847</right_val></_></_>
<_>
<!-- tree 7 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>20 0 4 9 -1.</_>
<_>20 0 2 9 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0388870015740395</threshold>
<left_val>1.7425049543380737</left_val>
<right_val>-0.0997470021247864</right_val></_></_>
<_>
<!-- tree 8 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 0 18 3 -1.</_>
<_>2 1 18 1 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-5.7029998861253262e-003</threshold>
<left_val>-1.0523240566253662</left_val>
<right_val>0.1836259961128235</right_val></_></_>
<_>
<!-- tree 9 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 22 19 2 -1.</_>
<_>5 23 19 1 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-1.4860000228509307e-003</threshold>
<left_val>0.5678420066833496</left_val>
<right_val>-0.4674200117588043</right_val></_></_>
<_>
<!-- tree 10 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 0 4 9 -1.</_>
<_>2 0 2 9 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0284860003739595</threshold>
<left_val>1.3082909584045410</left_val>
<right_val>-0.2646090090274811</right_val></_></_>
<_>
<!-- tree 11 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 6 19 18 -1.</_>
<_>5 12 19 6 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0662249997258186</threshold>
<left_val>-0.4621070027351379</left_val>
<right_val>0.4174959957599640</right_val></_></_>
<_>
<!-- tree 12 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 1 6 9 -1.</_>
<_>2 1 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>8.8569996878504753e-003</threshold>
<left_val>-0.4147489964962006</left_val>
<right_val>0.5920479893684387</right_val></_></_>
<_>
<!-- tree 13 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 5 14 12 -1.</_>
<_>13 5 7 6 2.</_>
<_>6 11 7 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0113559998571873</threshold>
<left_val>0.3610309958457947</left_val>
<right_val>-0.4578120112419128</right_val></_></_>
<_>
<!-- tree 14 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 1 20 2 -1.</_>
<_>0 2 20 1 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-2.7679998893290758e-003</threshold>
<left_val>-0.8923889994621277</left_val>
<right_val>0.1419900059700012</right_val></_></_>
<_>
<!-- tree 15 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 2 22 3 -1.</_>
<_>1 3 22 1 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0112469997256994</threshold>
<left_val>0.2935340106487274</left_val>
<right_val>-0.9733060002326965</right_val></_></_>
<_>
<!-- tree 16 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 8 7 9 -1.</_>
<_>2 11 7 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>7.1970000863075256e-003</threshold>
<left_val>-0.7933490276336670</left_val>
<right_val>0.1831340044736862</right_val></_></_>
<_>
<!-- tree 17 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 12 22 4 -1.</_>
<_>13 12 11 2 2.</_>
<_>2 14 11 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0317689999938011</threshold>
<left_val>0.1552309989929199</left_val>
<right_val>-1.3245639801025391</right_val></_></_>
<_>
<!-- tree 18 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 12 22 4 -1.</_>
<_>0 12 11 2 2.</_>
<_>11 14 11 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0251739993691444</threshold>
<left_val>0.0342149995267391</left_val>
<right_val>-2.0948131084442139</right_val></_></_>
<_>
<!-- tree 19 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 7 6 11 -1.</_>
<_>11 7 2 11 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>7.5360001064836979e-003</threshold>
<left_val>-0.3945060074329376</left_val>
<right_val>0.5133399963378906</right_val></_></_>
<_>
<!-- tree 20 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 1 9 6 -1.</_>
<_>10 1 3 6 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0328730009496212</threshold>
<left_val>0.0883729979395866</left_val>
<right_val>-1.2814120054244995</right_val></_></_>
<_>
<!-- tree 21 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>11 2 4 10 -1.</_>
<_>11 7 4 5 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-2.7379998937249184e-003</threshold>
<left_val>0.5528650283813477</left_val>
<right_val>-0.4638499915599823</right_val></_></_>
<_>
<!-- tree 22 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 4 12 12 -1.</_>
<_>6 10 12 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0380750000476837</threshold>
<left_val>-1.8497270345687866</left_val>
<right_val>0.0459440015256405</right_val></_></_>
<_>
<!-- tree 23 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>18 1 6 15 -1.</_>
<_>18 6 6 5 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0389840006828308</threshold>
<left_val>-0.4822370111942291</left_val>
<right_val>0.3476060032844544</right_val></_></_>
<_>
<!-- tree 24 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 15 18 3 -1.</_>
<_>3 16 18 1 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>2.8029999230057001e-003</threshold>
<left_val>-0.4515469968318939</left_val>
<right_val>0.4280630052089691</right_val></_></_>
<_>
<!-- tree 25 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>18 5 6 9 -1.</_>
<_>18 8 6 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0541459992527962</threshold>
<left_val>-0.8452079892158508</left_val>
<right_val>0.1667490005493164</right_val></_></_>
<_>
<!-- tree 26 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 5 16 6 -1.</_>
<_>1 5 8 3 2.</_>
<_>9 8 8 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-8.3280000835657120e-003</threshold>
<left_val>0.3534829914569855</left_val>
<right_val>-0.4716320037841797</right_val></_></_>
<_>
<!-- tree 27 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>11 0 6 9 -1.</_>
<_>13 0 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0337780006229877</threshold>
<left_val>0.1846310049295425</left_val>
<right_val>-1.6686669588088989</right_val></_></_>
<_>
<!-- tree 28 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 4 24 14 -1.</_>
<_>0 4 12 7 2.</_>
<_>12 11 12 7 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.1123809963464737</threshold>
<left_val>-1.2521569728851318</left_val>
<right_val>0.0359920002520084</right_val></_></_>
<_>
<!-- tree 29 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>13 0 4 13 -1.</_>
<_>13 0 2 13 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0104080000892282</threshold>
<left_val>-0.8162040114402771</left_val>
<right_val>0.2342859953641892</right_val></_></_>
<_>
<!-- tree 30 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 0 4 13 -1.</_>
<_>9 0 2 13 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-4.9439999274909496e-003</threshold>
<left_val>-0.9258469939231873</left_val>
<right_val>0.1003480032086372</right_val></_></_>
<_>
<!-- tree 31 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>11 6 6 9 -1.</_>
<_>13 6 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-9.3029998242855072e-003</threshold>
<left_val>0.5649930238723755</left_val>
<right_val>-0.1888190060853958</right_val></_></_>
<_>
<!-- tree 32 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>8 7 6 9 -1.</_>
<_>10 7 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0117499995976686</threshold>
<left_val>0.8030239939689636</left_val>
<right_val>-0.3827700018882752</right_val></_></_>
<_>
<!-- tree 33 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>13 17 9 6 -1.</_>
<_>13 19 9 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0232170000672340</threshold>
<left_val>-0.8492699861526489</left_val>
<right_val>0.1967120021581650</right_val></_></_>
<_>
<!-- tree 34 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 18 14 6 -1.</_>
<_>2 18 7 3 2.</_>
<_>9 21 7 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0168660003691912</threshold>
<left_val>-0.4059189856052399</left_val>
<right_val>0.5069530010223389</right_val></_></_>
<_>
<!-- tree 35 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 18 18 4 -1.</_>
<_>12 18 9 2 2.</_>
<_>3 20 9 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0240310002118349</threshold>
<left_val>-1.5297520160675049</left_val>
<right_val>0.2334499955177307</right_val></_></_>
<_>
<!-- tree 36 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 20 15 4 -1.</_>
<_>5 20 5 4 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0369459986686707</threshold>
<left_val>0.6300770044326782</left_val>
<right_val>-0.3178040087223053</right_val></_></_>
<_>
<!-- tree 37 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 15 15 9 -1.</_>
<_>14 15 5 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0615639984607697</threshold>
<left_val>0.5862789750099182</left_val>
<right_val>-0.0121079999953508</right_val></_></_>
<_>
<!-- tree 38 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>4 4 16 4 -1.</_>
<_>4 6 16 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0216610003262758</threshold>
<left_val>-0.2562370002269745</left_val>
<right_val>1.0409849882125854</right_val></_></_>
<_>
<!-- tree 39 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 6 10 6 -1.</_>
<_>7 8 10 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-3.6710000131279230e-003</threshold>
<left_val>0.2917110025882721</left_val>
<right_val>-0.8328729867935181</right_val></_></_>
<_>
<!-- tree 40 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 14 15 10 -1.</_>
<_>5 14 5 10 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0448490008711815</threshold>
<left_val>-0.3963319957256317</left_val>
<right_val>0.4566200077533722</right_val></_></_>
<_>
<!-- tree 41 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 9 10 14 -1.</_>
<_>12 9 5 7 2.</_>
<_>7 16 5 7 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0571950003504753</threshold>
<left_val>0.2102389931678772</left_val>
<right_val>-1.5004800558090210</right_val></_></_>
<_>
<!-- tree 42 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 6 6 9 -1.</_>
<_>9 6 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0113420002162457</threshold>
<left_val>0.4407129883766174</left_val>
<right_val>-0.3865379989147186</right_val></_></_>
<_>
<!-- tree 43 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 6 18 3 -1.</_>
<_>3 7 18 1 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0120040001347661</threshold>
<left_val>0.9395459890365601</left_val>
<right_val>-0.1058949977159500</right_val></_></_>
<_>
<!-- tree 44 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 10 18 3 -1.</_>
<_>0 11 18 1 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0225159991532564</threshold>
<left_val>9.4480002298951149e-003</left_val>
<right_val>-1.6799509525299072</right_val></_></_>
<_>
<!-- tree 45 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 16 18 4 -1.</_>
<_>12 16 9 2 2.</_>
<_>3 18 9 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0198090001940727</threshold>
<left_val>-1.0133639574050903</left_val>
<right_val>0.2414660006761551</right_val></_></_>
<_>
<!-- tree 46 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>4 6 14 6 -1.</_>
<_>4 6 7 3 2.</_>
<_>11 9 7 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0158910006284714</threshold>
<left_val>-0.3750759959220886</left_val>
<right_val>0.4661409854888916</right_val></_></_>
<_>
<!-- tree 47 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>13 0 2 18 -1.</_>
<_>13 0 1 18 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-9.1420002281665802e-003</threshold>
<left_val>-0.8048409819602966</left_val>
<right_val>0.1781699955463409</right_val></_></_>
<_>
<!-- tree 48 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 0 2 18 -1.</_>
<_>10 0 1 18 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-4.4740000739693642e-003</threshold>
<left_val>-1.0562069416046143</left_val>
<right_val>0.0733050033450127</right_val></_></_>
<_>
<!-- tree 49 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 7 15 10 -1.</_>
<_>10 7 5 10 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.1274250000715256</threshold>
<left_val>0.2016559988260269</left_val>
<right_val>-1.5467929840087891</right_val></_></_>
<_>
<!-- tree 50 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 20 21 4 -1.</_>
<_>8 20 7 4 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0477030016481876</threshold>
<left_val>-0.3793779909610748</left_val>
<right_val>0.3788599967956543</right_val></_></_>
<_>
<!-- tree 51 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>10 5 5 18 -1.</_>
<_>10 14 5 9 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0536080002784729</threshold>
<left_val>0.2122049927711487</left_val>
<right_val>-1.2399710416793823</right_val></_></_>
<_>
<!-- tree 52 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 2 24 6 -1.</_>
<_>0 2 12 3 2.</_>
<_>12 5 12 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0396809987723827</threshold>
<left_val>-1.0257550477981567</left_val>
<right_val>0.0512829981744289</right_val></_></_>
<_>
<!-- tree 53 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 1 22 8 -1.</_>
<_>12 1 11 4 2.</_>
<_>1 5 11 4 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0673270002007484</threshold>
<left_val>-1.0304750204086304</left_val>
<right_val>0.2300529927015305</right_val></_></_>
<_>
<!-- tree 54 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>4 0 15 9 -1.</_>
<_>4 3 15 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.1333760023117065</threshold>
<left_val>-0.2086900025606155</left_val>
<right_val>1.2272510528564453</right_val></_></_>
<_>
<!-- tree 55 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 0 24 19 -1.</_>
<_>8 0 8 19 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.2091930061578751</threshold>
<left_val>0.8792989850044251</left_val>
<right_val>-0.0442549996078014</right_val></_></_>
<_>
<!-- tree 56 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 21 18 3 -1.</_>
<_>11 21 9 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0655890032649040</threshold>
<left_val>1.0443429946899414</left_val>
<right_val>-0.2168209999799728</right_val></_></_>
<_>
<!-- tree 57 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 7 10 4 -1.</_>
<_>9 7 5 4 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0618829987943172</threshold>
<left_val>0.1379819959402084</left_val>
<right_val>-1.9009059667587280</right_val></_></_>
<_>
<!-- tree 58 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 7 10 4 -1.</_>
<_>10 7 5 4 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0255789998918772</threshold>
<left_val>-1.6607600450515747</left_val>
<right_val>5.8439997956156731e-003</right_val></_></_>
<_>
<!-- tree 59 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>17 8 6 16 -1.</_>
<_>20 8 3 8 2.</_>
<_>17 16 3 8 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0348270013928413</threshold>
<left_val>0.7994040250778198</left_val>
<right_val>-0.0824069976806641</right_val></_></_>
<_>
<!-- tree 60 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 15 20 4 -1.</_>
<_>1 15 10 2 2.</_>
<_>11 17 10 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0182099994271994</threshold>
<left_val>-0.9607399702072144</left_val>
<right_val>0.0663200020790100</right_val></_></_>
<_>
<!-- tree 61 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>14 15 10 6 -1.</_>
<_>14 17 10 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0150709999725223</threshold>
<left_val>0.1989939957857132</left_val>
<right_val>-0.7643300294876099</right_val></_></_></trees>
<stage_threshold>-4.0218091011047363</stage_threshold>
<parent>5</parent>
<next>-1</next></_>
<_>
<!-- stage 7 -->
<trees>
<_>
<!-- tree 0 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 0 16 9 -1.</_>
<_>3 3 16 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0463249981403351</threshold>
<left_val>-1.0362670421600342</left_val>
<right_val>0.8220149874687195</right_val></_></_>
<_>
<!-- tree 1 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>15 6 7 15 -1.</_>
<_>15 11 7 5 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0154069997370243</threshold>
<left_val>-1.2327589988708496</left_val>
<right_val>0.2964769899845123</right_val></_></_>
<_>
<!-- tree 2 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 1 6 13 -1.</_>
<_>11 1 2 13 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0128089999780059</threshold>
<left_val>-0.7585229873657227</left_val>
<right_val>0.5798550248146057</right_val></_></_>
<_>
<!-- tree 3 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>17 2 6 14 -1.</_>
<_>17 2 3 14 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0491509996354580</threshold>
<left_val>-0.3898389935493469</left_val>
<right_val>0.8968030214309692</right_val></_></_>
<_>
<!-- tree 4 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 14 12 10 -1.</_>
<_>3 14 6 5 2.</_>
<_>9 19 6 5 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0126210004091263</threshold>
<left_val>-0.7179930210113525</left_val>
<right_val>0.5044090151786804</right_val></_></_>
<_>
<!-- tree 5 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 6 10 6 -1.</_>
<_>7 8 10 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0187689997255802</threshold>
<left_val>0.5514760017395020</left_val>
<right_val>-0.7055540084838867</right_val></_></_>
<_>
<!-- tree 6 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 2 6 14 -1.</_>
<_>4 2 3 14 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0419650003314018</threshold>
<left_val>-0.4478209912776947</left_val>
<right_val>0.7098550200462341</right_val></_></_>
<_>
<!-- tree 7 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>10 4 5 12 -1.</_>
<_>10 8 5 4 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0514019988477230</threshold>
<left_val>-1.0932120084762573</left_val>
<right_val>0.2670190036296845</right_val></_></_>
<_>
<!-- tree 8 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 17 24 5 -1.</_>
<_>8 17 8 5 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0709609985351563</threshold>
<left_val>0.8361840248107910</left_val>
<right_val>-0.3831810057163239</right_val></_></_>
<_>
<!-- tree 9 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>15 7 5 12 -1.</_>
<_>15 11 5 4 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0167459994554520</threshold>
<left_val>-0.2573310136795044</left_val>
<right_val>0.2596650123596191</right_val></_></_>
<_>
<!-- tree 10 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 1 6 12 -1.</_>
<_>3 1 3 6 2.</_>
<_>6 7 3 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-6.2400000169873238e-003</threshold>
<left_val>0.3163149952888489</left_val>
<right_val>-0.5879690051078796</right_val></_></_>
<_>
<!-- tree 11 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>12 13 6 6 -1.</_>
<_>12 16 6 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0393979996442795</threshold>
<left_val>-1.0491210222244263</left_val>
<right_val>0.1682240068912506</right_val></_></_>
<_>
<!-- tree 12 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 13 6 6 -1.</_>
<_>6 16 6 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.</threshold>
<left_val>0.1614419966936112</left_val>
<right_val>-0.8787689805030823</right_val></_></_>
<_>
<!-- tree 13 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>14 6 3 16 -1.</_>
<_>14 14 3 8 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0223079994320869</threshold>
<left_val>-0.6905350089073181</left_val>
<right_val>0.2360700070858002</right_val></_></_>
<_>
<!-- tree 14 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>1 12 13 6 -1.</_>
<_>1 14 13 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>1.8919999711215496e-003</threshold>
<left_val>0.2498919963836670</left_val>
<right_val>-0.5658329725265503</right_val></_></_>
<_>
<!-- tree 15 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>13 1 4 9 -1.</_>
<_>13 1 2 9 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>1.0730000212788582e-003</threshold>
<left_val>-0.5041580200195313</left_val>
<right_val>0.3837450146675110</right_val></_></_>
<_>
<!-- tree 16 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 0 9 6 -1.</_>
<_>10 0 3 6 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0392309986054897</threshold>
<left_val>0.0426190011203289</left_val>
<right_val>-1.3875889778137207</right_val></_></_>
<_>
<!-- tree 17 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>12 2 6 9 -1.</_>
<_>12 2 3 9 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0622380003333092</threshold>
<left_val>0.1411940008401871</left_val>
<right_val>-1.0688860416412354</right_val></_></_>
<_>
<!-- tree 18 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 2 6 9 -1.</_>
<_>9 2 3 9 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>2.1399999968707561e-003</threshold>
<left_val>-0.8962240219116211</left_val>
<right_val>0.1979639977216721</right_val></_></_>
<_>
<!-- tree 19 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 18 12 6 -1.</_>
<_>6 20 12 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>9.1800000518560410e-004</threshold>
<left_val>-0.4533729851245880</left_val>
<right_val>0.4353269934654236</right_val></_></_>
<_>
<!-- tree 20 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 6 6 9 -1.</_>
<_>9 6 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-6.9169998168945313e-003</threshold>
<left_val>0.3382279872894287</left_val>
<right_val>-0.4479300081729889</right_val></_></_>
<_>
<!-- tree 21 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 7 12 3 -1.</_>
<_>7 7 6 3 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0238669998943806</threshold>
<left_val>-0.7890859842300415</left_val>
<right_val>0.2251179963350296</right_val></_></_>
<_>
<!-- tree 22 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>8 3 8 21 -1.</_>
<_>8 10 8 7 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.1026280000805855</threshold>
<left_val>-2.2831439971923828</left_val>
<right_val>-5.3960001096129417e-003</right_val></_></_>
<_>
<!-- tree 23 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 4 10 12 -1.</_>
<_>7 8 10 4 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-9.5239998772740364e-003</threshold>
<left_val>0.3934670090675354</left_val>
<right_val>-0.5224220156669617</right_val></_></_>
<_>
<!-- tree 24 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 1 6 9 -1.</_>
<_>0 4 6 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0398770011961460</threshold>
<left_val>0.0327990017831326</left_val>
<right_val>-1.5079489946365356</right_val></_></_>
<_>
<!-- tree 25 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>15 2 2 20 -1.</_>
<_>15 2 1 20 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0131449997425079</threshold>
<left_val>-1.0839990377426147</left_val>
<right_val>0.1848240047693253</right_val></_></_>
<_>
<!-- tree 26 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 3 6 9 -1.</_>
<_>0 6 6 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0505909994244576</threshold>
<left_val>-1.8822289705276489</left_val>
<right_val>-2.2199999075382948e-003</right_val></_></_>
<_>
<!-- tree 27 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>15 3 2 21 -1.</_>
<_>15 3 1 21 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0249170009046793</threshold>
<left_val>0.1459340006113052</left_val>
<right_val>-2.2196519374847412</right_val></_></_>
<_>
<!-- tree 28 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 0 2 23 -1.</_>
<_>8 0 1 23 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-7.6370001770555973e-003</threshold>
<left_val>-1.0164569616317749</left_val>
<right_val>0.0587970018386841</right_val></_></_>
<_>
<!-- tree 29 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>15 8 9 4 -1.</_>
<_>15 10 9 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0429119989275932</threshold>
<left_val>0.1544300019741058</left_val>
<right_val>-1.1843889951705933</right_val></_></_>
<_>
<!-- tree 30 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 8 9 4 -1.</_>
<_>0 10 9 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>2.3000000510364771e-004</threshold>
<left_val>-0.7730579972267151</left_val>
<right_val>0.1218990013003349</right_val></_></_>
<_>
<!-- tree 31 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>8 14 9 6 -1.</_>
<_>8 16 9 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>9.0929996222257614e-003</threshold>
<left_val>-0.1145009994506836</left_val>
<right_val>0.7109130024909973</right_val></_></_>
<_>
<!-- tree 32 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 14 9 6 -1.</_>
<_>0 16 9 2 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0111450003460050</threshold>
<left_val>0.0700009986758232</left_val>
<right_val>-1.0534820556640625</right_val></_></_>
<_>
<!-- tree 33 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 10 18 4 -1.</_>
<_>9 10 6 4 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0524530000984669</threshold>
<left_val>-1.7594360113143921</left_val>
<right_val>0.1952379941940308</right_val></_></_>
<_>
<!-- tree 34 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 0 24 19 -1.</_>
<_>8 0 8 19 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.2302069962024689</threshold>
<left_val>0.9584029912948608</left_val>
<right_val>-0.2504569888114929</right_val></_></_>
<_>
<!-- tree 35 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 1 8 12 -1.</_>
<_>9 7 8 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0163659993559122</threshold>
<left_val>0.4673190116882324</left_val>
<right_val>-0.2110839933156967</right_val></_></_>
<_>
<!-- tree 36 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>10 6 4 10 -1.</_>
<_>12 6 2 10 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0172080006450415</threshold>
<left_val>0.7083569765090942</left_val>
<right_val>-0.2801829874515533</right_val></_></_>
<_>
<!-- tree 37 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 9 10 12 -1.</_>
<_>12 9 5 6 2.</_>
<_>7 15 5 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0366480015218258</threshold>
<left_val>-1.1013339757919312</left_val>
<right_val>0.2434110045433044</right_val></_></_>
<_>
<!-- tree 38 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 0 3 19 -1.</_>
<_>6 0 1 19 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0103049995377660</threshold>
<left_val>-1.0933129787445068</left_val>
<right_val>0.0562589988112450</right_val></_></_>
<_>
<!-- tree 39 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>14 0 6 10 -1.</_>
<_>16 0 2 10 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0137130003422499</threshold>
<left_val>-0.2643809914588928</left_val>
<right_val>0.1982100009918213</right_val></_></_>
<_>
<!-- tree 40 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>2 0 6 12 -1.</_>
<_>2 0 3 6 2.</_>
<_>5 6 3 6 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0293080005794764</threshold>
<left_val>-0.2214239984750748</left_val>
<right_val>1.0525950193405151</right_val></_></_>
<_>
<!-- tree 41 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 11 24 2 -1.</_>
<_>0 12 24 1 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>0.0240770000964403</threshold>
<left_val>0.1848569959402084</left_val>
<right_val>-1.7203969955444336</right_val></_></_>
<_>
<!-- tree 42 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>4 9 13 4 -1.</_>
<_>4 11 13 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>6.1280000954866409e-003</threshold>
<left_val>-0.9272149801254273</left_val>
<right_val>0.0587529987096787</right_val></_></_>
<_>
<!-- tree 43 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 8 6 9 -1.</_>
<_>9 11 6 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0223779994994402</threshold>
<left_val>1.9646559953689575</left_val>
<right_val>0.0277859997004271</right_val></_></_>
<_>
<!-- tree 44 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 12 16 4 -1.</_>
<_>0 14 16 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-7.0440000854432583e-003</threshold>
<left_val>0.2142760008573532</left_val>
<right_val>-0.4840759932994843</right_val></_></_>
<_>
<!-- tree 45 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>18 12 6 9 -1.</_>
<_>18 15 6 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0406030006706715</threshold>
<left_val>-1.1754349470138550</left_val>
<right_val>0.1606120020151138</right_val></_></_>
<_>
<!-- tree 46 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>0 12 6 9 -1.</_>
<_>0 15 6 3 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0244660004973412</threshold>
<left_val>-1.1239900588989258</left_val>
<right_val>0.0411100015044212</right_val></_></_>
<_>
<!-- tree 47 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>8 7 10 4 -1.</_>
<_>8 7 5 4 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>2.5309999473392963e-003</threshold>
<left_val>-0.1716970056295395</left_val>
<right_val>0.3217880129814148</right_val></_></_>
<_>
<!-- tree 48 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>8 7 6 9 -1.</_>
<_>10 7 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0195889994502068</threshold>
<left_val>0.8272020220756531</left_val>
<right_val>-0.2637670040130615</right_val></_></_>
<_>
<!-- tree 49 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>11 0 6 9 -1.</_>
<_>13 0 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0296359993517399</threshold>
<left_val>-1.1524770259857178</left_val>
<right_val>0.1499930024147034</right_val></_></_>
<_>
<!-- tree 50 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 0 6 9 -1.</_>
<_>9 0 2 9 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0150300003588200</threshold>
<left_val>-1.0491830110549927</left_val>
<right_val>0.0401609987020493</right_val></_></_>
<_>
<!-- tree 51 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>12 3 6 15 -1.</_>
<_>14 3 2 15 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0607150010764599</threshold>
<left_val>-1.0903840065002441</left_val>
<right_val>0.1533080041408539</right_val></_></_>
<_>
<!-- tree 52 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>6 3 6 15 -1.</_>
<_>8 3 2 15 3.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0127900000661612</threshold>
<left_val>0.4224860072135925</left_val>
<right_val>-0.4239920079708099</right_val></_></_>
<_>
<!-- tree 53 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>15 2 9 4 -1.</_>
<_>15 4 9 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0202479995787144</threshold>
<left_val>-0.9186699986457825</left_val>
<right_val>0.1848569959402084</right_val></_></_>
<_>
<!-- tree 54 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>5 10 6 7 -1.</_>
<_>8 10 3 7 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0306839998811483</threshold>
<left_val>-1.5958670377731323</left_val>
<right_val>2.5760000571608543e-003</right_val></_></_>
<_>
<!-- tree 55 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>9 14 6 10 -1.</_>
<_>9 19 6 5 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0207180008292198</threshold>
<left_val>-0.6629999876022339</left_val>
<right_val>0.3103719949722290</right_val></_></_>
<_>
<!-- tree 56 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>7 13 5 8 -1.</_>
<_>7 17 5 4 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-1.7290000105276704e-003</threshold>
<left_val>0.1918340027332306</left_val>
<right_val>-0.6508499979972839</right_val></_></_>
<_>
<!-- tree 57 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>14 5 3 16 -1.</_>
<_>14 13 3 8 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>-0.0313940010964870</threshold>
<left_val>-0.6364300251007080</left_val>
<right_val>0.1540839970111847</right_val></_></_>
<_>
<!-- tree 58 -->
<_>
<!-- ro
gitextract_n68vdvyl/
├── .ci/
│ ├── install_cuda.sh
│ └── travis_build_opencv.sh
├── .clang-format
├── .gitattributes
├── .gitignore
├── .gitmodules
├── .travis.yml
├── .windows/
│ ├── mingw_build_OCV.ps1
│ ├── msvc_1_install_CUDA.ps1
│ └── msvc_2_build_OCV.ps1
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Cargo.toml
├── LICENSE
├── README.md
├── appveyor.yml
├── assets/
│ ├── OCRHMM_transitions_table.xml
│ ├── cuda_haarcascade_frontalface_default.xml
│ └── haarcascade_frontalface_default.xml
├── build.rs
├── examples/
│ ├── calc_gradient.rs
│ ├── calc_hist.rs
│ ├── camshift.rs
│ ├── display_image.rs
│ ├── face_detect.rs
│ ├── hog.rs
│ ├── hs_hist.rs
│ └── video_capture.rs
├── native/
│ ├── common-rust.cc
│ ├── common-rust.h
│ ├── common.h
│ ├── cuda/
│ │ ├── cuda.cc
│ │ └── cuda.h
│ ├── features2d.cc
│ ├── features2d.h
│ ├── hash.cc
│ ├── hash.h
│ ├── highgui.cc
│ ├── highgui.h
│ ├── imcodecs.cc
│ ├── imcodecs.h
│ ├── imgproc.cc
│ ├── imgproc.h
│ ├── mat.cc
│ ├── mat.h
│ ├── objdetect.cc
│ ├── objdetect.h
│ ├── text/
│ │ ├── text.cc
│ │ └── text.h
│ ├── utils.cc
│ ├── utils.h
│ ├── video.cc
│ ├── video.h
│ ├── videoio.cc
│ └── videoio.h
├── rustfmt.toml
├── setup_hooks.sh
├── src/
│ ├── core.rs
│ ├── cuda.rs
│ ├── errors.rs
│ ├── features2d/
│ │ ├── bow_k_means_trainer.rs
│ │ ├── descriptor_matcher.rs
│ │ ├── mod.rs
│ │ ├── mser.rs
│ │ ├── sift.rs
│ │ └── surf.rs
│ ├── hash.rs
│ ├── highgui.rs
│ ├── imgcodecs.rs
│ ├── imgproc.rs
│ ├── lib.rs
│ ├── mat.rs
│ ├── objdetect.rs
│ ├── text/
│ │ ├── hmm.rs
│ │ ├── holisticword.rs
│ │ ├── macros.rs
│ │ ├── mod.rs
│ │ └── tesseract.rs
│ ├── video.rs
│ └── videoio.rs
└── tests/
├── benchmark.rs
├── floatutils.rs
├── test_basic_ops.rs
├── test_features2d.rs
├── test_hash.rs
├── test_imgproc.rs
├── test_objdetect.rs
├── test_text.rs
├── test_video.rs
└── utils.rs
SYMBOL INDEX (769 symbols across 55 files)
FILE: build.rs
function opencv_include (line 8) | pub fn opencv_include() -> String {
function opencv_link (line 17) | pub fn opencv_link() {
function try_opencv_link (line 24) | fn try_opencv_link() -> Result<(), Box<Error>> {
function get_opencv_lib_path (line 36) | fn get_opencv_lib_path<'a, T: Iterator<Item = &'a io::Result<fs::DirEntr...
type BuildError (line 64) | struct BuildError {
method new (line 69) | fn new<T: Into<String>>(details: T) -> Self {
method fmt (line 83) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
method description (line 77) | fn description(&self) -> &str {
function opencv_include (line 93) | pub fn opencv_include() -> String {
function opencv_link (line 101) | pub fn opencv_link() {
function main (line 130) | fn main() {
function get_files (line 158) | fn get_files(path: &str) -> Vec<std::path::PathBuf> {
FILE: examples/calc_gradient.rs
function main (line 5) | fn main() {
FILE: examples/calc_hist.rs
function main (line 7) | fn main() {
FILE: examples/camshift.rs
type SelectionStatus (line 7) | struct SelectionStatus {
function on_mouse (line 12) | fn on_mouse(event: MouseEventType, x: i32, y: i32, _: i32, data: MouseCa...
function main (line 35) | fn main() {
FILE: examples/display_image.rs
function main (line 8) | fn main() {
FILE: examples/face_detect.rs
function main (line 11) | fn main() {
FILE: examples/hog.rs
function main (line 20) | fn main() {
function run (line 24) | fn run() -> Result<()> {
function run_detect_for_image (line 69) | fn run_detect_for_image<P: AsRef<Path>, OD: ObjectDetect>(detector: &mut...
function print_usage (line 94) | fn print_usage(program: &str, opts: getopts::Options) {
FILE: examples/hs_hist.rs
function main (line 8) | fn main() {
FILE: examples/video_capture.rs
function main (line 30) | fn main() {
FILE: native/common-rust.cc
function cv_vec_drop (line 5) | void cv_vec_drop(CVec<void>* vec, unsigned int depth) {
function c_drop (line 19) | void c_drop(void* value) {
FILE: native/common.h
type Point2i (line 8) | typedef struct {
type Point2f (line 13) | typedef struct {
type Size2i (line 18) | typedef struct {
type Size2f (line 23) | typedef struct {
type Rect (line 28) | typedef struct {
type RotatedRect (line 35) | typedef struct {
type Scalar (line 41) | typedef struct {
type KeyPoint (line 48) | typedef struct {
type DMatch (line 57) | typedef struct {
type CDisposableString (line 64) | typedef struct {
function Result (line 74) | static Result<T> FromFunction(std::function<T()> function) {
function catch (line 90) | struct EmptyResult {
FILE: native/cuda/cuda.cc
function cv_cuda_gpu_mat_drop (line 15) | void cv_cuda_gpu_mat_drop(cv::cuda::GpuMat* gpu_image) {
function cv_cuda_gpu_mat_upload (line 20) | void cv_cuda_gpu_mat_upload(cv::cuda::GpuMat* gpu_image, cv::Mat* image) {
function cv_cuda_hog_drop (line 50) | void cv_cuda_hog_drop(cv::Ptr<cv::cuda::HOG>* hog) {
function cv_cuda_hog_set_detector (line 55) | void cv_cuda_hog_set_detector(cv::Ptr<cv::cuda::HOG>* hog, std::vector<f...
function cv_cuda_hog_detect (line 59) | void cv_cuda_hog_detect(cv::Ptr<cv::cuda::HOG>* hog, cv::cuda::GpuMat* i...
function cv_cuda_hog_detect_with_conf (line 65) | void cv_cuda_hog_detect_with_conf(cv::Ptr<cv::cuda::HOG>* hog,
function cv_cuda_hog_set_gamma_correction (line 77) | void cv_cuda_hog_set_gamma_correction(cv::Ptr<cv::cuda::HOG>* hog, bool ...
function cv_cuda_hog_set_group_threshold (line 81) | void cv_cuda_hog_set_group_threshold(cv::Ptr<cv::cuda::HOG>* hog, int gr...
function cv_cuda_hog_set_hit_threshold (line 85) | void cv_cuda_hog_set_hit_threshold(cv::Ptr<cv::cuda::HOG>* hog, double h...
function cv_cuda_hog_set_l2hys_threshold (line 89) | void cv_cuda_hog_set_l2hys_threshold(cv::Ptr<cv::cuda::HOG>* hog, double...
function cv_cuda_hog_set_num_levels (line 93) | void cv_cuda_hog_set_num_levels(cv::Ptr<cv::cuda::HOG>* hog, int num_lev...
function cv_cuda_hog_set_scale_factor (line 97) | void cv_cuda_hog_set_scale_factor(cv::Ptr<cv::cuda::HOG>* hog, double sc...
function cv_cuda_hog_set_win_sigma (line 101) | void cv_cuda_hog_set_win_sigma(cv::Ptr<cv::cuda::HOG>* hog, double win_s...
function cv_cuda_hog_set_win_stride (line 105) | void cv_cuda_hog_set_win_stride(cv::Ptr<cv::cuda::HOG>* hog, Size2i win_...
function cv_cuda_hog_get_gamma_correction (line 110) | bool cv_cuda_hog_get_gamma_correction(cv::Ptr<cv::cuda::HOG>* hog) {
function cv_cuda_hog_get_group_threshold (line 114) | int cv_cuda_hog_get_group_threshold(cv::Ptr<cv::cuda::HOG>* hog) {
function cv_cuda_hog_get_hit_threshold (line 118) | double cv_cuda_hog_get_hit_threshold(cv::Ptr<cv::cuda::HOG>* hog) {
function cv_cuda_hog_get_l2hys_threshold (line 122) | double cv_cuda_hog_get_l2hys_threshold(cv::Ptr<cv::cuda::HOG>* hog) {
function cv_cuda_hog_get_num_levels (line 126) | int cv_cuda_hog_get_num_levels(cv::Ptr<cv::cuda::HOG>* hog) {
function cv_cuda_hog_get_scale_factor (line 130) | double cv_cuda_hog_get_scale_factor(cv::Ptr<cv::cuda::HOG>* hog) {
function cv_cuda_hog_get_win_sigma (line 134) | double cv_cuda_hog_get_win_sigma(cv::Ptr<cv::cuda::HOG>* hog) {
function Size2i (line 138) | Size2i cv_cuda_hog_get_win_stride(cv::Ptr<cv::cuda::HOG>* hog) {
function cv_cuda_cascade_drop (line 154) | void cv_cuda_cascade_drop(cv::Ptr<cv::cuda::CascadeClassifier>* cascade) {
function cv_cuda_cascade_detect (line 159) | void cv_cuda_cascade_detect(cv::Ptr<cv::cuda::CascadeClassifier>* cascade,
function cv_cuda_cascade_set_find_largest_object (line 171) | void cv_cuda_cascade_set_find_largest_object(cv::Ptr<cv::cuda::CascadeCl...
function cv_cuda_cascade_set_max_num_objects (line 175) | void cv_cuda_cascade_set_max_num_objects(cv::Ptr<cv::cuda::CascadeClassi...
function cv_cuda_cascade_set_min_neighbors (line 179) | void cv_cuda_cascade_set_min_neighbors(cv::Ptr<cv::cuda::CascadeClassifi...
function cv_cuda_cascade_set_max_object_size (line 183) | void cv_cuda_cascade_set_max_object_size(cv::Ptr<cv::cuda::CascadeClassi...
function cv_cuda_cascade_set_min_object_size (line 188) | void cv_cuda_cascade_set_min_object_size(cv::Ptr<cv::cuda::CascadeClassi...
function cv_cuda_cascade_set_scale_factor (line 193) | void cv_cuda_cascade_set_scale_factor(cv::Ptr<cv::cuda::CascadeClassifie...
function Size2i (line 197) | Size2i cv_cuda_cascade_get_classifier_size(cv::Ptr<cv::cuda::CascadeClas...
function cv_cuda_cascade_get_find_largest_object (line 203) | bool cv_cuda_cascade_get_find_largest_object(cv::Ptr<cv::cuda::CascadeCl...
function cv_cuda_cascade_get_max_num_objects (line 207) | int cv_cuda_cascade_get_max_num_objects(cv::Ptr<cv::cuda::CascadeClassif...
function cv_cuda_cascade_get_min_neighbors (line 211) | int cv_cuda_cascade_get_min_neighbors(cv::Ptr<cv::cuda::CascadeClassifie...
function Size2i (line 215) | Size2i cv_cuda_cascade_get_max_object_size(cv::Ptr<cv::cuda::CascadeClas...
function Size2i (line 221) | Size2i cv_cuda_cascade_get_min_object_size(cv::Ptr<cv::cuda::CascadeClas...
function cv_cuda_cascade_get_scale_factor (line 227) | double cv_cuda_cascade_get_scale_factor(cv::Ptr<cv::cuda::CascadeClassif...
FILE: native/features2d.cc
function cv_mser_drop (line 27) | void cv_mser_drop(cv::Ptr<cv::MSER>* detector) {
function cv_mser_detect_regions (line 32) | void cv_mser_detect_regions(cv::Ptr<cv::MSER>* detector,
function cv_mser_detect_and_compute (line 45) | void cv_mser_detect_and_compute(cv::Ptr<cv::MSER>* detector,
function cv_surf_drop (line 60) | void cv_surf_drop(cv::Ptr<cv::xfeatures2d::SURF>* detector) {
function cv_surf_detect_and_compute (line 65) | void cv_surf_detect_and_compute(cv::Ptr<cv::xfeatures2d::SURF>* detector,
function cv_sift_drop (line 80) | void cv_sift_drop(cv::Ptr<cv::xfeatures2d::SIFT>* detector) {
function cv_sift_detect_and_compute (line 85) | void cv_sift_detect_and_compute(cv::Ptr<cv::xfeatures2d::SIFT>* detector,
function cv_matcher_drop (line 101) | void cv_matcher_drop(cv::Ptr<cv::DescriptorMatcher>* descriptorMatcher) {
function cv_matcher_add (line 106) | void cv_matcher_add(cv::Ptr<cv::DescriptorMatcher>& descriptorMatcher, C...
function cv_matcher_train (line 112) | void cv_matcher_train(cv::Ptr<cv::DescriptorMatcher>& descriptorMatcher) {
function cv_matcher_is_empty (line 116) | bool cv_matcher_is_empty(cv::Ptr<cv::DescriptorMatcher>& descriptorMatch...
function cv_matcher_match (line 120) | void cv_matcher_match(cv::Ptr<cv::DescriptorMatcher>& descriptorMatcher,
function cv_matcher_match_two (line 128) | void cv_matcher_match_two(cv::Ptr<cv::DescriptorMatcher>& descriptorMatc...
function cv_matcher_knn_match (line 137) | void cv_matcher_knn_match(cv::Ptr<cv::DescriptorMatcher>& descriptorMatc...
function cv_bow_trainer_drop (line 150) | void cv_bow_trainer_drop(cv::BOWKMeansTrainer* trainer) {
function cv_bow_trainer_add (line 155) | void cv_bow_trainer_add(cv::BOWKMeansTrainer& trainer, cv::Mat& descript...
FILE: native/hash.cc
function cv_hash_compute (line 6) | void cv_hash_compute(cv::Ptr<cv::img_hash::PHash>* hash, cv::Mat& mat, c...
function cv_hash_compare (line 10) | double cv_hash_compare(cv::Ptr<cv::img_hash::PHash>* hash, cv::Mat& lhs,...
function cv_average_hash_drop (line 19) | void cv_average_hash_drop(cv::Ptr<cv::img_hash::AverageHash>* hash) {
function cv_block_mean_hash_drop (line 29) | void cv_block_mean_hash_drop(cv::Ptr<cv::img_hash::BlockMeanHash>* hash) {
function cv_color_moment_hash_drop (line 39) | void cv_color_moment_hash_drop(cv::Ptr<cv::img_hash::ColorMomentHash>* h...
function cv_marr_hildreth_hash_drop (line 48) | void cv_marr_hildreth_hash_drop(cv::Ptr<cv::img_hash::MarrHildrethHash>*...
function cv_phash_drop (line 58) | void cv_phash_drop(cv::Ptr<cv::img_hash::PHash>* hash) {
function cv_radial_variance_hash_drop (line 68) | void cv_radial_variance_hash_drop(cv::Ptr<cv::img_hash::RadialVarianceHa...
FILE: native/highgui.cc
function cv_named_window (line 5) | void cv_named_window(const char* const winname, int flags) {
function cv_destroy_window (line 9) | void cv_destroy_window(const char* const winname) {
function cv_set_mouse_callback (line 13) | void cv_set_mouse_callback(const char* const winname, cv::MouseCallback ...
function cv_imshow (line 17) | void cv_imshow(const char* const winname, cv::Mat* mat) {
function cv_wait_key (line 23) | int cv_wait_key(int delay) {
FILE: native/imcodecs.cc
function cv_imencode (line 18) | void cv_imencode(const char* const ext,
FILE: native/imgproc.cc
function cv_line (line 5) | void cv_line(cv::Mat* mat, Point2i pt1, Point2i pt2, Scalar color, int t...
function cv_rectangle (line 12) | void cv_rectangle(cv::Mat* mat, Rect crect, Scalar color, int thickness,...
function cv_ellipse (line 18) | void cv_ellipse(cv::Mat* mat,
function cv_cvt_color (line 35) | void cv_cvt_color(cv::Mat* mat, cv::Mat* out, int code) {
function cv_pyr_down (line 39) | void cv_pyr_down(cv::Mat* mat, cv::Mat* out) {
function cv_threshold (line 43) | void cv_threshold(cv::Mat* mat, cv::Mat* out, double thresh, double maxv...
function cv_erode (line 47) | void cv_erode(
function cv_dilate (line 54) | void cv_dilate(
function cv_gaussian_blur (line 61) | void cv_gaussian_blur(cv::Mat* mat, cv::Mat* out, Size2i ksize, double s...
function cv_resize (line 66) | void cv_resize(cv::Mat* from, cv::Mat* to, Size2i dsize, double fx, doub...
function cv_calc_hist (line 71) | void cv_calc_hist(const cv::Mat* images,
function cv_calc_back_project (line 82) | void cv_calc_back_project(const cv::Mat* images,
function cv_compare_hist (line 91) | void cv_compare_hist(cv::Mat* first_image, cv::Mat* second_image, int me...
function cv_sobel (line 96) | void cv_sobel(
function cv_scharr (line 101) | void cv_scharr(cv::Mat* src, cv::Mat* dst, int ddepth, int dx, int dy, d...
function EmptyResult (line 105) | EmptyResult
FILE: native/mat.cc
function cv_mat_is_valid (line 38) | bool cv_mat_is_valid(cv::Mat* mat) {
function cv_mat_flip (line 48) | void cv_mat_flip(cv::Mat* image, int code) {
function cv_mat_cols (line 52) | int cv_mat_cols(const cv::Mat* const mat) {
function cv_mat_rows (line 56) | int cv_mat_rows(const cv::Mat* const mat) {
function cv_mat_depth (line 60) | int cv_mat_depth(const cv::Mat* const mat) {
function cv_mat_channels (line 64) | int cv_mat_channels(const cv::Mat* const mat) {
function cv_mat_type (line 68) | int cv_mat_type(const cv::Mat* const mat) {
function cv_mat_total (line 76) | size_t cv_mat_total(const cv::Mat* const mat) {
function cv_mat_elem_size (line 80) | size_t cv_mat_elem_size(const cv::Mat* const mat) {
function cv_mat_elem_size1 (line 84) | size_t cv_mat_elem_size1(const cv::Mat* const mat) {
function cv_mat_step1 (line 88) | size_t cv_mat_step1(const cv::Mat* const mat, int i) {
function cv_mat_drop (line 92) | void cv_mat_drop(cv::Mat* mat) {
function cv_mat_in_range (line 97) | void cv_mat_in_range(cv::Mat* mat, Scalar lowerb, Scalar upperb, cv::Mat...
function cv_mat_min_max_loc (line 103) | void cv_mat_min_max_loc(
function cv_mat_mix_channels (line 128) | void cv_mat_mix_channels(cv::Mat* src, size_t nsrcs, cv::Mat* dst, size_...
function cv_mat_normalize (line 132) | void cv_mat_normalize(cv::Mat* src, cv::Mat* dst, double alpha, double b...
function cv_mat_bitwise_and (line 136) | void cv_mat_bitwise_and(const cv::Mat* const src1, const cv::Mat* const ...
function cv_mat_bitwise_not (line 140) | void cv_mat_bitwise_not(const cv::Mat* const src, cv::Mat* const dst) {
function cv_mat_bitwise_or (line 144) | void cv_mat_bitwise_or(const cv::Mat* const src1, const cv::Mat* const s...
function cv_mat_bitwise_xor (line 148) | void cv_mat_bitwise_xor(const cv::Mat* const src1, const cv::Mat* const ...
function cv_mat_count_non_zero (line 152) | int cv_mat_count_non_zero(const cv::Mat* const src) {
function cv_mat_copy_make_border (line 156) | void cv_mat_copy_make_border(
FILE: native/objdetect.cc
function cv_cascade_classifier_load (line 10) | bool cv_cascade_classifier_load(cv::CascadeClassifier* cascade, const ch...
function cv_cascade_classifier_drop (line 18) | void cv_cascade_classifier_drop(cv::CascadeClassifier* cascade) {
function cv_cascade_classifier_detect (line 23) | void cv_cascade_classifier_detect(cv::CascadeClassifier* cascade,
function cv_hog_drop (line 52) | void cv_hog_drop(cv::HOGDescriptor* hog) {
function cv_hog_detector_drop (line 65) | void cv_hog_detector_drop(std::vector<float>* detector) {
function cv_hog_set_svm_detector (line 70) | void cv_hog_set_svm_detector(cv::HOGDescriptor* hog, std::vector<float>*...
function cv_hog_detect (line 74) | void cv_hog_detect(cv::HOGDescriptor* hog,
FILE: native/text/text.cc
function cv_ocr_run (line 5) | void cv_ocr_run(cv::Ptr<cv::text::BaseOCR>& ocr,
function cv_tesseract_new (line 24) | void cv_tesseract_new(const char* datapath,
function cv_tesseract_drop (line 36) | void cv_tesseract_drop(cv::Ptr<cv::text::OCRTesseract>* ocr) {
function cv_hmm_new (line 41) | void cv_hmm_new(const char* classifier_filename,
function cv_hmm_drop (line 60) | void cv_hmm_drop(cv::Ptr<cv::text::OCRHMMDecoder>* ocr) {
function cv_holistic_new (line 65) | void cv_holistic_new(const char* archive_file,
function cv_holistic_drop (line 75) | void cv_holistic_drop(cv::Ptr<cv::text::OCRHolisticWordRecognizer>* ocr) {
FILE: native/utils.cc
function cv_to_ffi (line 7) | void cv_to_ffi(const cv::Rect& source, Rect* dest) {
function cv_to_ffi (line 14) | void cv_to_ffi(const cv::Point& source, Point2i* dest) {
function cv_to_ffi (line 19) | void cv_to_ffi(const cv::KeyPoint& source, KeyPoint* dest) {
function cv_to_ffi (line 29) | void cv_to_ffi(const cv::DMatch& source, DMatch* dest) {
function cv_to_ffi (line 36) | void cv_to_ffi(const std::string& source, CDisposableString* dest) {
function ffi_to_cv (line 42) | void ffi_to_cv(const cv::Mat& source, cv::Mat* dest) {
FILE: native/video.cc
function cv_term_criteria_drop (line 9) | void cv_term_criteria_drop(cv::TermCriteria* criteria) {
function RotatedRect (line 14) | RotatedRect cv_camshift(cv::Mat* bp_image, Rect crect, cv::TermCriteria*...
FILE: native/videoio.cc
function cv_videocapture_is_opened (line 17) | bool cv_videocapture_is_opened(const cv::VideoCapture* const cap) {
function cv_videocapture_read (line 21) | bool cv_videocapture_read(cv::VideoCapture* cap, cv::Mat* mat) {
function cv_videocapture_drop (line 25) | void cv_videocapture_drop(cv::VideoCapture* cap) {
function cv_videocapture_set (line 30) | bool cv_videocapture_set(cv::VideoCapture* cap, int property, double val...
function cv_videocapture_get (line 34) | double cv_videocapture_get(cv::VideoCapture* cap, int property) {
function cv_videowriter_drop (line 48) | void cv_videowriter_drop(cv::VideoWriter* writer) {
function cv_videowriter_open (line 53) | bool cv_videowriter_open(
function cv_videowriter_is_opened (line 59) | bool cv_videowriter_is_opened(cv::VideoWriter* writer) {
function cv_videowriter_write (line 63) | void cv_videowriter_write(cv::VideoWriter* writer, cv::Mat* mat) {
function cv_videowriter_set (line 67) | bool cv_videowriter_set(cv::VideoWriter* writer, int property, double va...
function cv_videowriter_get (line 71) | double cv_videowriter_get(cv::VideoWriter* writer, int property) {
FILE: src/core.rs
type CTermCriteria (line 8) | pub(crate) enum CTermCriteria {}
function cv_term_criteria_new (line 11) | fn cv_term_criteria_new(t: TermType, count: c_int, epsilon: f64) -> *mut...
function cv_term_criteria_drop (line 12) | fn cv_term_criteria_drop(criteria: *mut CTermCriteria);
type KeyPoint (line 18) | pub struct KeyPoint {
type Scalar (line 36) | pub struct Scalar {
method new (line 45) | pub fn new(v0: c_int, v1: c_int, v2: c_int, v3: c_int) -> Self {
method all (line 55) | pub fn all(v: c_int) -> Self {
type Point2i (line 68) | pub struct Point2i {
method new (line 78) | pub fn new(x: c_int, y: c_int) -> Self {
type Point2f (line 86) | pub struct Point2f {
method new (line 96) | pub fn new(x: f32, y: f32) -> Self {
type Size2i (line 104) | pub struct Size2i {
method new (line 114) | pub fn new(width: c_int, height: c_int) -> Self {
type Size2f (line 125) | pub struct Size2f {
type Rect (line 136) | pub struct Rect {
method new (line 149) | pub fn new(x: c_int, y: c_int, width: c_int, height: c_int) -> Self {
method scale (line 159) | pub fn scale(&self, ratio: f32) -> Rect {
method normalize_to_mat (line 174) | pub fn normalize_to_mat(&self, mat: &Mat) -> Rect2f {
type Rect2f (line 186) | pub struct Rect2f {
method normalize_to_mat (line 200) | pub fn normalize_to_mat(&self, mat: &Mat) -> Rect {
type LineType (line 213) | pub enum LineType {
type FlipCode (line 227) | pub enum FlipCode {
type FromBytes (line 237) | pub trait FromBytes {
method from_bytes (line 239) | fn from_bytes(bytes: &[u8]) -> Self;
method from_bytes (line 243) | fn from_bytes(bytes: &[u8]) -> (T, T, T) {
method from_bytes (line 254) | fn from_bytes(bytes: &[u8]) -> u8 {
method from_bytes (line 260) | fn from_bytes(bytes: &[u8]) -> i8 {
method from_bytes (line 267) | fn from_bytes(bytes: &[u8]) -> u16 {
method from_bytes (line 272) | fn from_bytes(bytes: &[u8]) -> u16 {
method from_bytes (line 279) | fn from_bytes(bytes: &[u8]) -> i16 {
method from_bytes (line 284) | fn from_bytes(bytes: &[u8]) -> i16 {
method from_bytes (line 291) | fn from_bytes(bytes: &[u8]) -> f32 {
method from_bytes (line 296) | fn from_bytes(bytes: &[u8]) -> f32 {
method from_bytes (line 303) | fn from_bytes(bytes: &[u8]) -> i32 {
method from_bytes (line 308) | fn from_bytes(bytes: &[u8]) -> i32 {
method from_bytes (line 315) | fn from_bytes(bytes: &[u8]) -> f64 {
method from_bytes (line 320) | fn from_bytes(bytes: &[u8]) -> f64 {
type CvType (line 338) | pub enum CvType {
type RotatedRect (line 376) | pub struct RotatedRect {
method points (line 384) | pub fn points(&self) -> [Point2f; 4] {
method bounding_rect (line 404) | pub fn bounding_rect(&self) -> Rect {
type NormType (line 419) | pub enum NormType {
type TermType (line 441) | pub enum TermType {
type TermCriteria (line 452) | pub struct TermCriteria {
method new (line 458) | pub fn new(t: TermType, max_count: c_int, epsilon: f64) -> Self {
method drop (line 465) | fn drop(&mut self) {
FILE: src/cuda.rs
type CGpuMat (line 15) | pub enum CGpuMat {}
type GpuMat (line 19) | pub struct GpuMat {
method default (line 43) | pub fn default() -> GpuMat {
method from_raw (line 53) | pub(crate) fn from_raw(inner: *mut CGpuMat) -> GpuMat {
method upload (line 63) | pub fn upload(&mut self, mat: &Mat) {
method from (line 85) | fn from(mat: Mat) -> GpuMat {
function cv_cuda_gpu_mat_default (line 34) | fn cv_cuda_gpu_mat_default() -> *mut CGpuMat;
function cv_cuda_gpu_mat_drop (line 35) | fn cv_cuda_gpu_mat_drop(gpu_mat: *mut CGpuMat);
function cv_cuda_gpu_mat_upload (line 36) | fn cv_cuda_gpu_mat_upload(gpu_mat: *mut CGpuMat, cpu_mat: *const CMat);
function cv_mat_from_gpu_mat (line 37) | fn cv_mat_from_gpu_mat(gpu_mat: *mut CGpuMat) -> *mut CMat;
function cv_cuda_gpu_mat_from_mat (line 38) | fn cv_cuda_gpu_mat_from_mat(mat: *mut CMat) -> *mut CGpuMat;
method drop (line 71) | fn drop(&mut self) {
method from (line 79) | fn from(gpu_mat: GpuMat) -> Mat {
type CGpuHog (line 92) | pub enum CGpuHog {}
type GpuHog (line 96) | pub struct GpuHog {
method new (line 174) | pub fn new(win_size: Size2i, block_size: Size2i, block_stride: Size2i,...
method return_score (line 186) | pub fn return_score(&mut self, should: bool) {
method with_params (line 191) | pub fn with_params(params: HogParams) -> GpuHog {
method update_params (line 220) | fn update_params(inner: *mut CGpuHog, params: &mut HogParams) {
method set_svm_detector (line 232) | pub fn set_svm_detector(&mut self, detector: SvmDetector) {
method _detect (line 237) | fn _detect(&self, mat: &GpuMat) -> Vec<(Rect, f64)> {
method _detect_with_confidence (line 246) | fn _detect_with_confidence(&self, mat: &GpuMat) -> Vec<(Rect, f64)> {
function cv_cuda_hog_default (line 110) | fn cv_cuda_hog_default() -> *mut CGpuHog;
function cv_cuda_hog_new (line 111) | fn cv_cuda_hog_new(
function cv_cuda_hog_drop (line 118) | fn cv_cuda_hog_drop(hog: *mut CGpuHog);
function cv_cuda_hog_set_detector (line 119) | fn cv_cuda_hog_set_detector(hog: *mut CGpuHog, d: *const CSvmDetector);
function cv_cuda_hog_detect (line 120) | fn cv_cuda_hog_detect(hog: *mut CGpuHog, mat: *mut CGpuMat, found: *mut ...
function cv_cuda_hog_detect_with_conf (line 121) | fn cv_cuda_hog_detect_with_conf(
function cv_cuda_hog_set_gamma_correction (line 128) | fn cv_cuda_hog_set_gamma_correction(hog: *mut CGpuHog, gamma: bool);
function cv_cuda_hog_set_group_threshold (line 129) | fn cv_cuda_hog_set_group_threshold(hog: *mut CGpuHog, group_threshold: c...
function cv_cuda_hog_set_hit_threshold (line 130) | fn cv_cuda_hog_set_hit_threshold(hog: *mut CGpuHog, hit_threshold: c_dou...
function cv_cuda_hog_set_l2hys_threshold (line 131) | fn cv_cuda_hog_set_l2hys_threshold(hog: *mut CGpuHog, l2hys_threshold: c...
function cv_cuda_hog_set_num_levels (line 132) | fn cv_cuda_hog_set_num_levels(hog: *mut CGpuHog, num_levels: usize);
function cv_cuda_hog_set_scale_factor (line 133) | fn cv_cuda_hog_set_scale_factor(hog: *mut CGpuHog, scale_factor: c_double);
function cv_cuda_hog_set_win_sigma (line 134) | fn cv_cuda_hog_set_win_sigma(hog: *mut CGpuHog, win_sigma: c_double);
function cv_cuda_hog_set_win_stride (line 135) | fn cv_cuda_hog_set_win_stride(hog: *mut CGpuHog, win_stride: Size2i);
function cv_cuda_hog_get_gamma_correction (line 137) | fn cv_cuda_hog_get_gamma_correction(hog: *mut CGpuHog) -> bool;
function cv_cuda_hog_get_group_threshold (line 138) | fn cv_cuda_hog_get_group_threshold(hog: *mut CGpuHog) -> c_int;
function cv_cuda_hog_get_hit_threshold (line 139) | fn cv_cuda_hog_get_hit_threshold(hog: *mut CGpuHog) -> c_double;
function cv_cuda_hog_get_l2hys_threshold (line 140) | fn cv_cuda_hog_get_l2hys_threshold(hog: *mut CGpuHog) -> c_double;
function cv_cuda_hog_get_num_levels (line 141) | fn cv_cuda_hog_get_num_levels(hog: *mut CGpuHog) -> usize;
function cv_cuda_hog_get_scale_factor (line 142) | fn cv_cuda_hog_get_scale_factor(hog: *mut CGpuHog) -> c_double;
function cv_cuda_hog_get_win_sigma (line 143) | fn cv_cuda_hog_get_win_sigma(hog: *mut CGpuHog) -> c_double;
function cv_cuda_hog_get_win_stride (line 144) | fn cv_cuda_hog_get_win_stride(hog: *mut CGpuHog) -> Size2i;
method detect (line 148) | fn detect(&self, image: &Mat) -> Vec<(Rect, f64)> {
method default (line 160) | fn default() -> GpuHog {
method drop (line 260) | fn drop(&mut self) {
type CGpuCascade (line 267) | pub enum CGpuCascade {}
type GpuCascade (line 271) | pub struct GpuCascade {
method from_path (line 307) | pub fn from_path<P: AsRef<Path>>(path: P) -> Result<Self, Error> {
method detect_multiscale (line 317) | pub fn detect_multiscale(&self, mat: &GpuMat) -> Vec<Rect> {
method set_find_largest_object (line 326) | pub fn set_find_largest_object(&mut self, value: bool) {
method set_max_num_objects (line 333) | pub fn set_max_num_objects(&mut self, max: c_int) {
method set_min_neighbors (line 340) | pub fn set_min_neighbors(&mut self, min: c_int) {
method set_max_object_size (line 347) | pub fn set_max_object_size(&mut self, max: Size2i) {
method set_min_object_size (line 354) | pub fn set_min_object_size(&mut self, min: Size2i) {
method set_scale_factor (line 361) | pub fn set_scale_factor(&mut self, factor: f64) {
method get_classifier_size (line 368) | pub fn get_classifier_size(&self) -> Size2i {
method get_find_largest_object_flag (line 373) | pub fn get_find_largest_object_flag(&self) -> bool {
method get_max_num_objects (line 378) | pub fn get_max_num_objects(&self) -> c_int {
method get_min_neighbors (line 384) | pub fn get_min_neighbors(&self) -> c_int {
method get_max_object_size (line 389) | pub fn get_max_object_size(&self) -> Size2i {
method get_min_object_size (line 394) | pub fn get_min_object_size(&self) -> Size2i {
method get_scale_factor (line 399) | pub fn get_scale_factor(&self) -> f64 {
function cv_cuda_cascade_new (line 279) | fn cv_cuda_cascade_new(filename: *const c_char) -> *mut CGpuCascade;
function cv_cuda_cascade_drop (line 280) | fn cv_cuda_cascade_drop(cascade: *mut CGpuCascade);
function cv_cuda_cascade_detect (line 281) | fn cv_cuda_cascade_detect(cascade: *mut CGpuCascade, image: *const CGpuM...
function cv_cuda_cascade_set_find_largest_object (line 283) | fn cv_cuda_cascade_set_find_largest_object(cascade: *mut CGpuCascade, va...
function cv_cuda_cascade_set_max_num_objects (line 284) | fn cv_cuda_cascade_set_max_num_objects(cascade: *mut CGpuCascade, max: c...
function cv_cuda_cascade_set_min_neighbors (line 285) | fn cv_cuda_cascade_set_min_neighbors(cascade: *mut CGpuCascade, min: c_i...
function cv_cuda_cascade_set_max_object_size (line 286) | fn cv_cuda_cascade_set_max_object_size(cascade: *mut CGpuCascade, max: S...
function cv_cuda_cascade_set_min_object_size (line 287) | fn cv_cuda_cascade_set_min_object_size(cascade: *mut CGpuCascade, min: S...
function cv_cuda_cascade_set_scale_factor (line 288) | fn cv_cuda_cascade_set_scale_factor(cascade: *mut CGpuCascade, factor: c...
function cv_cuda_cascade_get_classifier_size (line 290) | fn cv_cuda_cascade_get_classifier_size(cascade: *const CGpuCascade) -> S...
function cv_cuda_cascade_get_find_largest_object (line 291) | fn cv_cuda_cascade_get_find_largest_object(cascade: *const CGpuCascade) ...
function cv_cuda_cascade_get_max_num_objects (line 292) | fn cv_cuda_cascade_get_max_num_objects(cascade: *const CGpuCascade) -> c...
function cv_cuda_cascade_get_min_neighbors (line 293) | fn cv_cuda_cascade_get_min_neighbors(cascade: *const CGpuCascade) -> c_int;
function cv_cuda_cascade_get_max_object_size (line 294) | fn cv_cuda_cascade_get_max_object_size(cascade: *const CGpuCascade) -> S...
function cv_cuda_cascade_get_min_object_size (line 295) | fn cv_cuda_cascade_get_min_object_size(cascade: *const CGpuCascade) -> S...
function cv_cuda_cascade_get_scale_factor (line 296) | fn cv_cuda_cascade_get_scale_factor(cascade: *const CGpuCascade) -> c_do...
method detect (line 405) | fn detect(&self, image: &Mat) -> Vec<(Rect, f64)> {
method drop (line 413) | fn drop(&mut self) {
FILE: src/errors.rs
type CvError (line 6) | pub enum CvError {
FILE: src/features2d/bow_k_means_trainer.rs
type CBOWKMeansTrainer (line 4) | enum CBOWKMeansTrainer {}
function cv_bow_trainer_new (line 7) | fn cv_bow_trainer_new(
function cv_bow_trainer_drop (line 13) | fn cv_bow_trainer_drop(bow_trainer: *mut CBOWKMeansTrainer);
function cv_bow_trainer_add (line 14) | fn cv_bow_trainer_add(bow_trainer: *mut CBOWKMeansTrainer, descriptors: ...
function cv_bow_trainer_cluster (line 15) | fn cv_bow_trainer_cluster(bow_trainer: *mut CBOWKMeansTrainer) -> *mut C...
type BOWKMeansTrainer (line 20) | pub struct BOWKMeansTrainer {
method new (line 44) | pub fn new(cluster_count: i32, term_criteria: TermCriteria, attempts: ...
method add (line 50) | pub fn add(&mut self, descriptors: &Mat) {
method cluster (line 57) | pub fn cluster(&mut self) -> Mat {
type KMeansCenters (line 27) | pub enum KMeansCenters {
method drop (line 35) | fn drop(&mut self) {
FILE: src/features2d/descriptor_matcher.rs
type CDescriptorMatcher (line 5) | enum CDescriptorMatcher {}
function cv_matcher_new (line 8) | fn cv_matcher_new(descriptor_matcher_type: *const c_char) -> *mut CDescr...
function cv_matcher_drop (line 9) | fn cv_matcher_drop(descriptor_matcher: *mut CDescriptorMatcher);
function cv_matcher_add (line 10) | fn cv_matcher_add(descriptor_matcher: *mut CDescriptorMatcher, descripto...
function cv_matcher_train (line 11) | fn cv_matcher_train(descriptor_matcher: *mut CDescriptorMatcher);
function cv_matcher_is_empty (line 12) | fn cv_matcher_is_empty(descriptor_matcher: *mut CDescriptorMatcher) -> b...
function cv_matcher_match (line 13) | fn cv_matcher_match(
function cv_matcher_match_two (line 18) | fn cv_matcher_match_two(
function cv_matcher_knn_match (line 24) | fn cv_matcher_knn_match(
type DMatch (line 35) | pub struct DMatch {
type DescriptorMatcherType (line 45) | pub enum DescriptorMatcherType {
method as_str (line 54) | pub(crate) fn as_str(&self) -> &'static str {
type DescriptorMatcher (line 67) | pub struct DescriptorMatcher {
method new (line 81) | pub fn new(descriptor_matcher_type: DescriptorMatcherType) -> Descript...
method add (line 88) | pub fn add(&mut self, descriptors: &Vec<&Mat>) {
method train (line 97) | pub fn train(&mut self) {
method is_empty (line 102) | pub fn is_empty(&self) -> bool {
method match_ (line 107) | pub fn match_(&self, query_descriptors: &Mat) -> Vec<DMatch> {
method match_two (line 117) | pub fn match_two(&self, query_descriptors: &Mat, train_descriptors: &M...
method knn_match (line 131) | pub fn knn_match(&self, query_descriptors: &Mat, k: usize) -> Vec<Vec<...
method drop (line 72) | fn drop(&mut self) {
FILE: src/features2d/mod.rs
type Feature2D (line 18) | pub trait Feature2D {
method detect_and_compute (line 20) | fn detect_and_compute(&self, image: &Mat, mask: &Mat) -> (Vec<KeyPoint...
FILE: src/features2d/mser.rs
type CMSER (line 6) | enum CMSER {}
function cv_mser_new (line 9) | fn cv_mser_new(
function cv_mser_drop (line 20) | fn cv_mser_drop(cmser: *mut CMSER);
function cv_mser_detect_regions (line 21) | fn cv_mser_detect_regions(
type MSER (line 31) | pub struct MSER {
method new (line 37) | pub fn new(
method detect_regions (line 65) | pub fn detect_regions(&self, image: &Mat) -> (Vec<Vec<Point2i>>, Vec<R...
method drop (line 78) | fn drop(&mut self) {
type MSERBuilder (line 87) | pub struct MSERBuilder {
method delta (line 101) | pub fn delta(mut self, value: c_int) -> Self {
method min_area (line 107) | pub fn min_area(mut self, value: c_int) -> Self {
method max_area (line 113) | pub fn max_area(mut self, value: c_int) -> Self {
method max_variation (line 119) | pub fn max_variation(mut self, value: f64) -> Self {
method min_diversity (line 125) | pub fn min_diversity(mut self, value: f64) -> Self {
method max_evolution (line 131) | pub fn max_evolution(mut self, value: c_int) -> Self {
method area_threshold (line 137) | pub fn area_threshold(mut self, value: f64) -> Self {
method min_margin (line 143) | pub fn min_margin(mut self, value: f64) -> Self {
method edge_blur_size (line 149) | pub fn edge_blur_size(mut self, value: c_int) -> Self {
method into (line 156) | fn into(self) -> MSER {
FILE: src/features2d/sift.rs
type CSIFT (line 7) | enum CSIFT {}
function cv_sift_new (line 10) | fn cv_sift_new(
function cv_sift_drop (line 17) | fn cv_sift_drop(cmser: *mut CSIFT);
function cv_sift_detect_and_compute (line 18) | fn cv_sift_detect_and_compute(
type SIFT (line 30) | pub struct SIFT {
method new (line 36) | pub fn new(
method drop (line 49) | fn drop(&mut self) {
type SIFTBuilder (line 58) | pub struct SIFTBuilder {
method features (line 68) | pub fn features(mut self, value: c_int) -> Self {
method octave_layers (line 74) | pub fn octave_layers(mut self, value: c_int) -> Self {
method contrast_threshold (line 80) | pub fn contrast_threshold(mut self, value: f64) -> Self {
method edge_threshold (line 86) | pub fn edge_threshold(mut self, value: f64) -> Self {
method sigma (line 92) | pub fn sigma(mut self, value: f64) -> Self {
method into (line 99) | fn into(self) -> SIFT {
method detect_and_compute (line 111) | fn detect_and_compute(&self, image: &Mat, mask: &Mat) -> (Vec<KeyPoint>,...
FILE: src/features2d/surf.rs
type CSURF (line 7) | enum CSURF {}
function cv_surf_new (line 10) | fn cv_surf_new(
function cv_surf_drop (line 17) | fn cv_surf_drop(cmser: *mut CSURF);
function cv_surf_detect_and_compute (line 18) | fn cv_surf_detect_and_compute(
type SURF (line 30) | pub struct SURF {
method new (line 36) | pub fn new(hessian_threshold: f64, octaves: c_int, octave_layers: c_in...
method drop (line 43) | fn drop(&mut self) {
type SURFBuilder (line 52) | pub struct SURFBuilder {
method hessian_threshold (line 62) | pub fn hessian_threshold(mut self, value: f64) -> Self {
method octaves (line 68) | pub fn octaves(mut self, value: c_int) -> Self {
method octave_layers (line 74) | pub fn octave_layers(mut self, value: c_int) -> Self {
method extended (line 80) | pub fn extended(mut self, value: bool) -> Self {
method upright (line 86) | pub fn upright(mut self, value: bool) -> Self {
method into (line 93) | fn into(self) -> SURF {
method detect_and_compute (line 105) | fn detect_and_compute(&self, image: &Mat, mask: &Mat) -> (Vec<KeyPoint>,...
FILE: src/hash.rs
function cv_hash_compute (line 8) | fn cv_hash_compute(phash: *const CHash, mat: *const CMat, result: *mut C...
function cv_hash_compare (line 9) | fn cv_hash_compare(phash: *const CHash, lhs: *const CMat, rhs: *mut CMat...
function cv_average_hash_new (line 11) | fn cv_average_hash_new() -> *mut CHash;
function cv_average_hash_drop (line 12) | fn cv_average_hash_drop(phash: *mut CHash);
function cv_block_mean_hash_new (line 13) | fn cv_block_mean_hash_new() -> *mut CHash;
function cv_block_mean_hash_drop (line 14) | fn cv_block_mean_hash_drop(phash: *mut CHash);
function cv_color_moment_hash_new (line 15) | fn cv_color_moment_hash_new() -> *mut CHash;
function cv_color_moment_hash_drop (line 16) | fn cv_color_moment_hash_drop(phash: *mut CHash);
function cv_marr_hildreth_hash_new (line 17) | fn cv_marr_hildreth_hash_new() -> *mut CHash;
function cv_marr_hildreth_hash_drop (line 18) | fn cv_marr_hildreth_hash_drop(phash: *mut CHash);
function cv_phash_new (line 19) | fn cv_phash_new() -> *mut CHash;
function cv_phash_drop (line 20) | fn cv_phash_drop(phash: *mut CHash);
function cv_radial_variance_hash_new (line 21) | fn cv_radial_variance_hash_new() -> *mut CHash;
function cv_radial_variance_hash_drop (line 22) | fn cv_radial_variance_hash_drop(phash: *mut CHash);
type CHash (line 27) | pub enum CHash {}
type HashImpl (line 29) | pub trait HashImpl {
method get_value (line 30) | fn get_value(&self) -> *const CHash;
type HashImplInterface (line 35) | pub trait HashImplInterface: HashImpl {}
type Hash (line 38) | pub trait Hash {
method compute (line 40) | fn compute(&self, mat: &Mat) -> Mat;
method compare (line 43) | fn compare(&self, lhs: &Mat, rhs: &Mat) -> f64;
method compute (line 48) | fn compute(&self, mat: &Mat) -> Mat {
method compare (line 56) | fn compare(&self, lhs: &Mat, rhs: &Mat) -> f64 {
FILE: src/highgui.rs
function cv_named_window (line 10) | fn cv_named_window(name: *const c_char, flags: WindowFlag);
function cv_destroy_window (line 11) | fn cv_destroy_window(name: *const c_char);
function cv_set_mouse_callback (line 12) | fn cv_set_mouse_callback(
function cv_imshow (line 17) | fn cv_imshow(name: *const c_char, cmat: *mut CMat);
function cv_wait_key (line 18) | fn cv_wait_key(delay_ms: c_int) -> c_int;
function highgui_named_window (line 24) | pub fn highgui_named_window(name: &str, flags: WindowFlag) -> Result<(),...
function highgui_destroy_window (line 33) | pub fn highgui_destroy_window(name: &str) {
type MouseCallbackData (line 41) | pub type MouseCallbackData = *mut c_void;
type MouseCallback (line 45) | pub type MouseCallback = fn(MouseEventType, c_int, c_int, c_int, MouseCa...
function highgui_set_mouse_callback (line 49) | pub fn highgui_set_mouse_callback(name: &str, on_mouse: MouseCallback, u...
type WindowFlag (line 80) | pub enum WindowFlag {
type MouseEventType (line 94) | pub enum MouseEventType {
type Show (line 122) | pub trait Show {
method show (line 124) | fn show(&self, name: &str, delay: c_int) -> Result<(), Error>;
method show (line 128) | fn show(&self, name: &str, delay: c_int) -> Result<(), Error> {
FILE: src/imgcodecs.rs
function cv_imread (line 13) | fn cv_imread(input: *const c_char, flags: ImageReadMode) -> *mut CMat;
function cv_imdecode (line 14) | fn cv_imdecode(buf: *const u8, l: usize, m: ImageReadMode) -> *mut CMat;
function cv_imencode (line 15) | fn cv_imencode(
type ImageReadMode (line 30) | pub enum ImageReadMode {
type ImageWriteMode (line 68) | pub enum ImageWriteMode {
type ImageWritePngStrategy (line 106) | pub enum ImageWritePngStrategy {
method image_decode (line 125) | pub fn image_decode(buf: &[u8], mode: ImageReadMode) -> Mat {
method image_encode (line 133) | pub fn image_encode(&self, ext: &str, flags: Vec<ImageWriteMode>) -> Res...
method from_path (line 147) | pub fn from_path<P: AsRef<Path>>(path: P, flags: ImageReadMode) -> Resul...
FILE: src/imgproc.rs
function cv_line (line 12) | fn cv_line(
function cv_rectangle (line 22) | fn cv_rectangle(cmat: *mut CMat, rect: Rect, color: Scalar, thickness: c...
function cv_ellipse (line 24) | fn cv_ellipse(
function cv_cvt_color (line 37) | fn cv_cvt_color(cmat: *const CMat, output: *mut CMat, code: ColorConvers...
function cv_pyr_down (line 38) | fn cv_pyr_down(cmat: *const CMat, output: *mut CMat);
function cv_threshold (line 39) | fn cv_threshold(from: *const CMat, to: *mut CMat, thresh: f64, maxval: f...
function cv_erode (line 40) | fn cv_erode(
function cv_dilate (line 49) | fn cv_dilate(
function cv_gaussian_blur (line 58) | fn cv_gaussian_blur(
function cv_resize (line 66) | fn cv_resize(
function cv_calc_hist (line 74) | fn cv_calc_hist(
function cv_calc_back_project (line 84) | fn cv_calc_back_project(
function cv_compare_hist (line 93) | fn cv_compare_hist(
function cv_sobel (line 100) | fn cv_sobel(
function cv_scharr (line 112) | fn cv_scharr(
function cv_canny (line 123) | fn cv_canny(
type HistogramComparisionMethod (line 137) | pub enum HistogramComparisionMethod {
type ThresholdType (line 157) | pub enum ThresholdType {
type ColorConversion (line 173) | pub enum ColorConversion {
type InterpolationFlag (line 313) | pub enum InterpolationFlag {
method line (line 339) | pub fn line(&self, pt1: Point2i, pt2: Point2i) {
method line_custom (line 345) | pub fn line_custom(
method rectangle (line 360) | pub fn rectangle(&self, rect: Rect) {
method rectangle_custom (line 365) | pub fn rectangle_custom(&self, rect: Rect, color: Scalar, thickness: c_i...
method rectangle2f (line 370) | pub fn rectangle2f(&self, rect: Rect2f) {
method ellipse (line 376) | pub fn ellipse(&self, center: Point2i, axes: Size2i, angle: f64, start_a...
method ellipse_custom (line 391) | pub fn ellipse_custom(
method cvt_color (line 420) | pub fn cvt_color(&self, code: ColorConversion) -> Mat {
method pyr_down (line 428) | pub fn pyr_down(&self) -> Mat {
method threshold (line 436) | pub fn threshold(&self, thresh: f64, maxval: f64, threshold_type: Thresh...
method erode (line 444) | pub fn erode(
method dilate (line 469) | pub fn dilate(
method gaussian_blur (line 494) | pub fn gaussian_blur(&self, dsize: Size2i, sigma_x: f64, sigma_y: f64, b...
method resize_to (line 504) | pub fn resize_to(&self, dsize: Size2i, interpolation: InterpolationFlag)...
method resize_by (line 514) | pub fn resize_by(&self, fx: f64, fy: f64, interpolation: InterpolationFl...
method calc_hist (line 521) | pub fn calc_hist<T: AsRef<[c_int]>, U: AsRef<[c_int]>, MElem: AsRef<[f32...
method calc_back_project (line 549) | pub fn calc_back_project<T: AsRef<[c_int]>, MElem: AsRef<[f32]>, M: AsRe...
method compare_hist (line 579) | pub fn compare_hist(&self, other: &Mat, method: HistogramComparisionMeth...
method sobel (line 585) | pub fn sobel(
method scharr (line 603) | pub fn scharr(&self, ddepth: i32, dx: i32, dy: i32, scale: f64, delta: f...
method canny (line 612) | pub fn canny(
method matrix_to_vec (line 637) | fn matrix_to_vec<T, MElem: AsRef<[T]>, M: AsRef<[MElem]>>(value: M) -> V...
FILE: src/lib.rs
function c_drop (line 49) | fn c_drop(value: *mut c_void);
type CResult (line 53) | struct CResult<T: Copy> {
type CEmptyResult (line 59) | struct CEmptyResult {
method into (line 90) | fn into(self) -> Result<(), String> {
function into (line 64) | fn into(self) -> Result<T, String> {
function from_callback (line 78) | pub fn from_callback<F: FnOnce(*mut CResult<T>)>(func: F) -> CResult<T> {
type CDisposableString (line 104) | struct CDisposableString {
method drop (line 109) | fn drop(&mut self) {
method default (line 117) | fn default() -> Self {
type CVecView (line 126) | pub(crate) struct CVecView<T: Sized> {
function pack (line 131) | fn pack<T, U: Sized, F>(v: &Vec<T>, mut f: F) -> CVecView<U>
type Pack (line 144) | pub(crate) trait Pack {
method pack (line 146) | fn pack(v: &Self::In) -> Self;
type In (line 150) | type In = T;
method pack (line 151) | fn pack(v: &T) -> Self {
type In (line 157) | type In = Vec<T::In>;
method pack (line 158) | fn pack(v: &Self::In) -> Self {
method drop (line 164) | fn drop(&mut self) {
type CVec (line 173) | pub(crate) struct CVec<T: Sized + NestedVec> {
function unpack (line 179) | unsafe fn unpack<T: NestedVec, U, F>(v: &CVec<T>, mut f: F) -> Vec<U>
type Unpack (line 186) | pub(crate) trait Unpack {
method unpack (line 188) | fn unpack(&self) -> Self::Out;
type Out (line 192) | type Out = Vec<T::Out>;
method unpack (line 193) | fn unpack(&self) -> Self::Out {
type Out (line 199) | type Out = T;
method unpack (line 200) | fn unpack(&self) -> Self::Out {
type Out (line 245) | type Out = String;
method unpack (line 247) | fn unpack(&self) -> Self::Out {
type NestedVec (line 205) | pub(crate) trait NestedVec {
constant LEVEL (line 206) | const LEVEL: u32;
constant LEVEL (line 210) | const LEVEL: u32 = T::LEVEL + 1;
constant LEVEL (line 214) | const LEVEL: u32 = 0;
constant LEVEL (line 218) | const LEVEL: u32 = 0;
method default (line 222) | fn default() -> Self {
method drop (line 231) | fn drop(&mut self) {
function path_to_cstring (line 252) | fn path_to_cstring<P: AsRef<Path>>(path: P) -> Result<CString, Error> {
type COption (line 261) | pub(crate) struct COption<T> {
FILE: src/mat.rs
type CMat (line 15) | pub enum CMat {}
method new (line 18) | pub(crate) fn new() -> *mut CMat {
function cv_mat_new (line 24) | fn cv_mat_new() -> *mut CMat;
function cv_mat_from_file_storage (line 25) | fn cv_mat_from_file_storage(path: *const c_char, section: *const c_char)...
function cv_mat_new_with_size (line 26) | fn cv_mat_new_with_size(rows: c_int, cols: c_int, t: c_int) -> *mut CMat;
function cv_mat_zeros (line 27) | fn cv_mat_zeros(rows: c_int, cols: c_int, t: c_int) -> *mut CMat;
function cv_mat_from_buffer (line 28) | fn cv_mat_from_buffer(rows: c_int, cols: c_int, t: CvType, buffer: *cons...
function cv_mat_is_valid (line 29) | fn cv_mat_is_valid(mat: *mut CMat) -> bool;
function cv_mat_rows (line 30) | fn cv_mat_rows(cmat: *const CMat) -> c_int;
function cv_mat_cols (line 31) | fn cv_mat_cols(cmat: *const CMat) -> c_int;
function cv_mat_depth (line 32) | fn cv_mat_depth(cmat: *const CMat) -> c_int;
function cv_mat_channels (line 33) | fn cv_mat_channels(cmat: *const CMat) -> c_int;
function cv_mat_data (line 34) | fn cv_mat_data(cmat: *const CMat) -> *const u8;
function cv_mat_total (line 35) | fn cv_mat_total(cmat: *const CMat) -> usize;
function cv_mat_step1 (line 36) | fn cv_mat_step1(cmat: *const CMat, i: c_int) -> usize;
function cv_mat_elem_size (line 37) | fn cv_mat_elem_size(cmat: *const CMat) -> usize;
function cv_mat_elem_size1 (line 38) | fn cv_mat_elem_size1(cmat: *const CMat) -> usize;
function cv_mat_type (line 39) | fn cv_mat_type(cmat: *const CMat) -> CvType;
function cv_mat_roi (line 40) | fn cv_mat_roi(cmat: *const CMat, rect: Rect) -> *mut CMat;
function cv_mat_flip (line 41) | fn cv_mat_flip(src: *mut CMat, code: c_int);
function cv_mat_drop (line 42) | fn cv_mat_drop(mat: *mut CMat);
function cv_mat_eye (line 43) | fn cv_mat_eye(rows: c_int, cols: c_int, cv_type: CvType) -> *mut CMat;
function cv_mat_in_range (line 44) | fn cv_mat_in_range(cmat: *const CMat, lowerb: Scalar, upperb: Scalar, ds...
function cv_mat_min_max_loc (line 45) | fn cv_mat_min_max_loc(
function cv_mat_mix_channels (line 53) | fn cv_mat_mix_channels(
function cv_mat_normalize (line 61) | fn cv_mat_normalize(csrc: *const CMat, cdst: *mut CMat, alpha: c_double,...
function cv_mat_bitwise_and (line 62) | fn cv_mat_bitwise_and(src1: *const CMat, src2: *const CMat, dst: *mut CM...
function cv_mat_bitwise_not (line 63) | fn cv_mat_bitwise_not(src: *const CMat, dst: *mut CMat);
function cv_mat_bitwise_or (line 64) | fn cv_mat_bitwise_or(src1: *const CMat, src2: *const CMat, dst: *mut CMat);
function cv_mat_bitwise_xor (line 65) | fn cv_mat_bitwise_xor(src1: *const CMat, src2: *const CMat, dst: *mut CM...
function cv_mat_count_non_zero (line 66) | fn cv_mat_count_non_zero(src: *const CMat) -> c_int;
function cv_mat_copy_make_border (line 67) | fn cv_mat_copy_make_border(
type Mat (line 83) | pub struct Mat {
method into (line 103) | fn into(self) -> CMat {
method from_file_storage (line 110) | pub fn from_file_storage<P: AsRef<Path>>(path: P, section: &str) -> Re...
method from_raw (line 123) | pub(crate) fn from_raw(raw: *mut CMat) -> Mat {
method new (line 134) | pub fn new() -> Mat {
method from_buffer (line 164) | pub fn from_buffer(rows: c_int, cols: c_int, cv_type: CvType, buf: &[u...
method with_size (line 170) | pub fn with_size(rows: c_int, cols: c_int, t: c_int) -> Self {
method zeros (line 176) | pub fn zeros(rows: c_int, cols: c_int, t: c_int) -> Self {
method data (line 182) | pub fn data(&self) -> &[u8] {
method total (line 191) | pub fn total(&self) -> usize {
method elem_size (line 199) | pub fn elem_size(&self) -> usize {
method elem_size1 (line 208) | pub fn elem_size1(&self) -> usize {
method step1 (line 216) | pub fn step1(&self, i: c_int) -> usize {
method size (line 221) | pub fn size(&self) -> Size2i {
method is_valid (line 226) | pub fn is_valid(&self) -> bool {
method roi (line 231) | pub fn roi(&self, rect: Rect) -> Mat {
method flip (line 237) | pub fn flip(&mut self, code: FlipCode) {
method cv_type (line 250) | pub fn cv_type(&self) -> CvType {
method eye (line 255) | pub fn eye(rows: i32, cols: i32, cv_type: CvType) -> Mat {
method at (line 270) | pub fn at<T: FromBytes>(&self, i0: i32) -> T {
method at2 (line 294) | pub fn at2<T: FromBytes>(&self, i0: i32, i1: i32) -> T {
method at3 (line 308) | pub fn at3<T: FromBytes>(&self, i0: i32, i1: i32, i2: i32) -> T {
method in_range (line 322) | pub fn in_range(&self, lowerb: Scalar, upperb: Scalar) -> Mat {
method min_max_loc (line 339) | pub fn min_max_loc(&self, mask: &Mat) -> (f64, f64, Point2i, Point2i) {
method mix_channels (line 351) | pub fn mix_channels<T: AsRef<[(c_int, c_int)]>>(&self, nsrcs: usize, n...
method normalize (line 362) | pub fn normalize(&self, alpha: f64, beta: f64, t: NormType) -> Mat {
method count_non_zero (line 369) | pub fn count_non_zero(&self) -> c_int {
method copy_make_border (line 381) | pub fn copy_make_border(
type BorderType (line 400) | pub enum BorderType {
constant Default (line 420) | pub const Default: BorderType = BorderType::Reflect101;
method drop (line 424) | fn drop(&mut self) {
type Output (line 432) | type Output = Self;
method bitand (line 433) | fn bitand(self, rhs: Self) -> Self::Output {
type Output (line 441) | type Output = Mat;
method bitand (line 442) | fn bitand(self, rhs: &'a Mat) -> Self::Output {
type Output (line 450) | type Output = Self;
method bitor (line 451) | fn bitor(self, rhs: Self) -> Self::Output {
type Output (line 459) | type Output = Mat;
method bitor (line 460) | fn bitor(self, rhs: &'a Mat) -> Self::Output {
type Output (line 468) | type Output = Self;
method bitxor (line 469) | fn bitxor(self, rhs: Self) -> Self::Output {
type Output (line 477) | type Output = Mat;
method bitxor (line 478) | fn bitxor(self, rhs: &'a Mat) -> Self::Output {
type Output (line 486) | type Output = Self;
method not (line 487) | fn not(self) -> Self::Output {
method clone (line 495) | fn clone(&self) -> Self {
type Output (line 501) | type Output = Mat;
method not (line 502) | fn not(self) -> Self::Output {
FILE: src/objdetect.rs
type CCascadeClassifier (line 13) | enum CCascadeClassifier {}
function cv_cascade_classifier_new (line 16) | fn cv_cascade_classifier_new() -> *mut CCascadeClassifier;
function cv_cascade_classifier_load (line 17) | fn cv_cascade_classifier_load(cc: *mut CCascadeClassifier, p: *const c_c...
function cv_cascade_classifier_drop (line 18) | fn cv_cascade_classifier_drop(p: *mut CCascadeClassifier);
function cv_cascade_classifier_detect (line 19) | fn cv_cascade_classifier_detect(
type ObjectDetect (line 35) | pub trait ObjectDetect {
method detect (line 38) | fn detect(&self, image: &Mat) -> Vec<(Rect, f64)>;
method detect (line 48) | fn detect(&self, image: &Mat) -> Vec<(Rect, f64)> {
method detect (line 329) | fn detect(&self, image: &Mat) -> Vec<(Rect, f64)> {
type CascadeClassifier (line 43) | pub struct CascadeClassifier {
method new (line 58) | pub fn new() -> CascadeClassifier {
method from_path (line 65) | pub fn from_path<P: AsRef<Path>>(path: P) -> Result<Self, Error> {
method load (line 72) | pub fn load<P: AsRef<Path>>(&self, path: P) -> Result<(), Error> {
method detect_multiscale (line 85) | pub fn detect_multiscale(&self, mat: &Mat) -> Vec<Rect> {
method detect_with_params (line 103) | pub fn detect_with_params(
method drop (line 129) | fn drop(&mut self) {
type CSvmDetector (line 138) | pub enum CSvmDetector {}
type SvmDetector (line 142) | pub struct SvmDetector {
method default_people_detector (line 158) | pub fn default_people_detector() -> SvmDetector {
method daimler_people_detector (line 165) | pub fn daimler_people_detector() -> SvmDetector {
function cv_hog_default_people_detector (line 148) | fn cv_hog_default_people_detector() -> *mut CSvmDetector;
function cv_hog_daimler_people_detector (line 149) | fn cv_hog_daimler_people_detector() -> *mut CSvmDetector;
function cv_hog_detector_drop (line 150) | fn cv_hog_detector_drop(d: *mut CSvmDetector);
method drop (line 173) | fn drop(&mut self) {
type HogParams (line 182) | pub struct HogParams {
constant DEFAULT_WIN_SIGMA (line 252) | const DEFAULT_WIN_SIGMA: f64 = -1f64;
constant DEFAULT_NLEVELS (line 253) | const DEFAULT_NLEVELS: usize = 64;
method default (line 256) | fn default() -> HogParams {
type CHogDescriptor (line 289) | enum CHogDescriptor {}
type HogDescriptor (line 293) | pub struct HogDescriptor {
method with_params (line 354) | pub fn with_params(params: HogParams) -> HogDescriptor {
method set_svm_detector (line 362) | pub fn set_svm_detector(&mut self, detector: SvmDetector) {
function cv_hog_new (line 303) | fn cv_hog_new() -> *mut CHogDescriptor;
function cv_hog_drop (line 304) | fn cv_hog_drop(hog: *mut CHogDescriptor);
function cv_hog_set_svm_detector (line 305) | fn cv_hog_set_svm_detector(hog: *mut CHogDescriptor, svm: *mut CSvmDetec...
function cv_hog_detect (line 306) | fn cv_hog_detect(
method default (line 320) | fn default() -> HogDescriptor {
method drop (line 368) | fn drop(&mut self) {
FILE: src/text/hmm.rs
function cv_hmm_new (line 11) | fn cv_hmm_new(
function cv_hmm_drop (line 19) | fn cv_hmm_drop(ocr: *mut COCR);
type ClassifierType (line 25) | pub enum ClassifierType {
type OcrHmmDecoder (line 32) | pub struct OcrHmmDecoder {
method new (line 38) | pub fn new<P: AsRef<Path>>(
method drop (line 72) | fn drop(&mut self) {
method get_value (line 80) | fn get_value(&self) -> *mut COCR {
FILE: src/text/holisticword.rs
function cv_holistic_new (line 10) | fn cv_holistic_new(
function cv_holistic_drop (line 16) | fn cv_holistic_drop(ocr: *mut COCR);
type OcrHolisticWord (line 21) | pub struct OcrHolisticWord {
method new (line 27) | pub fn new<PArch: AsRef<Path>, PWeights: AsRef<Path>, PWords: AsRef<Pa...
method drop (line 50) | fn drop(&mut self) {
method get_value (line 58) | fn get_value(&self) -> *mut COCR {
FILE: src/text/mod.rs
function cv_ocr_run (line 18) | fn cv_ocr_run(
type COCR (line 31) | pub enum COCR {}
type OcrImpl (line 33) | pub trait OcrImpl {
method get_value (line 34) | fn get_value(&self) -> *mut COCR;
type ComponentLevel (line 41) | pub enum ComponentLevel {
type OcrImplInterface (line 47) | pub trait OcrImplInterface: private::OcrImpl {}
type Ocr (line 50) | pub trait Ocr {
method run (line 52) | fn run(&self, image: &Mat, component_level: ComponentLevel) -> (String...
method run (line 56) | fn run(&self, image: &Mat, component_level: ComponentLevel) -> (String...
FILE: src/text/tesseract.rs
function cv_tesseract_new (line 10) | fn cv_tesseract_new(
function cv_tesseract_drop (line 18) | fn cv_tesseract_drop(ocr: *mut COCR);
type EngineMode (line 24) | pub enum EngineMode {
type PageSegmentationMode (line 34) | pub enum PageSegmentationMode {
type OcrTesseract (line 50) | pub struct OcrTesseract {
method new (line 56) | pub fn new(
method drop (line 81) | fn drop(&mut self) {
method get_value (line 89) | fn get_value(&self) -> *mut COCR {
function to_nullable_string (line 96) | fn to_nullable_string(value: &Option<CString>) -> *const c_char {
function unwrap_or_null (line 100) | fn unwrap_or_null(value: &Option<*const c_char>) -> *const c_char {
FILE: src/video.rs
function cv_camshift (line 15) | fn cv_camshift(image: *mut CMat, w: Rect, c_criteria: *const CTermCriter...
method camshift (line 23) | pub fn camshift(&self, wndw: Rect, criteria: &TermCriteria) -> RotatedRe...
FILE: src/videoio.rs
type CVideoCapture (line 13) | enum CVideoCapture {}
function cv_videocapture_new (line 16) | fn cv_videocapture_new(index: c_int) -> *mut CVideoCapture;
function cv_videocapture_from_file (line 17) | fn cv_videocapture_from_file(path: *const c_char) -> *mut CVideoCapture;
function cv_videocapture_from_gst_pipeline (line 18) | fn cv_videocapture_from_gst_pipeline(pipeline: *const c_char) -> *mut CV...
function cv_videocapture_is_opened (line 19) | fn cv_videocapture_is_opened(ccap: *const CVideoCapture) -> bool;
function cv_videocapture_read (line 20) | fn cv_videocapture_read(v: *mut CVideoCapture, m: *mut CMat) -> bool;
function cv_videocapture_drop (line 21) | fn cv_videocapture_drop(cap: *mut CVideoCapture);
function cv_videocapture_set (line 22) | fn cv_videocapture_set(cap: *mut CVideoCapture, property: CapProp, value...
function cv_videocapture_get (line 23) | fn cv_videocapture_get(cap: *mut CVideoCapture, property: CapProp) -> c_...
type VideoCapture (line 28) | pub struct VideoCapture {
method new (line 124) | pub fn new(index: c_int) -> Self {
method from_path (line 132) | pub fn from_path(path: &str) -> Self {
method from_pipeline (line 140) | pub fn from_pipeline(pipeline: &str) -> Self {
method is_open (line 147) | pub fn is_open(&self) -> bool {
method read (line 158) | pub fn read(&self) -> Option<Mat> {
method set (line 169) | pub fn set(&self, property: CapProp, value: f64) -> bool {
method get (line 174) | pub fn get(&self, property: CapProp) -> Option<f64> {
type CapProp (line 39) | pub enum CapProp {
method drop (line 185) | fn drop(&mut self) {
type CvVideoWriter (line 197) | enum CvVideoWriter {}
type VideoWriter (line 204) | pub struct VideoWriter {
method new (line 245) | pub fn new(path: &str, fourcc: c_int, fps: f64, frame_size: Size2i, is...
method open (line 262) | pub fn open(&self, path: &str, fourcc: c_int, fps: f64, frame_size: Si...
method write (line 269) | pub fn write(&self, mat: &Mat) {
method is_open (line 274) | pub fn is_open(&self) -> bool {
method set (line 280) | pub fn set(&self, property: VideoWriterProperty, value: f64) -> bool {
method get (line 285) | pub fn get(&self, property: VideoWriterProperty) -> Option<f64> {
function cv_videowriter_default (line 209) | fn cv_videowriter_default() -> *mut CvVideoWriter;
function cv_videowriter_new (line 210) | fn cv_videowriter_new(
function cv_videowriter_drop (line 217) | fn cv_videowriter_drop(w: *mut CvVideoWriter);
function cv_videowriter_open (line 219) | fn cv_videowriter_open(
function cv_videowriter_is_opened (line 227) | fn cv_videowriter_is_opened(w: *mut CvVideoWriter) -> bool;
function cv_videowriter_write (line 228) | fn cv_videowriter_write(w: *mut CvVideoWriter, m: *mut CMat);
function cv_videowriter_set (line 229) | fn cv_videowriter_set(w: *mut CvVideoWriter, property: VideoWriterProper...
function cv_videowriter_get (line 230) | fn cv_videowriter_get(w: *mut CvVideoWriter, property: VideoWriterProper...
method default (line 296) | fn default() -> VideoWriter {
method drop (line 304) | fn drop(&mut self) {
type VideoWriterProperty (line 314) | pub enum VideoWriterProperty {
function codec_name_from_4cc (line 331) | pub fn codec_name_from_4cc(value: &str) -> Result<u32, Error> {
function codec_name_to_4cc (line 345) | pub fn codec_name_to_4cc(value: u32) -> String {
FILE: tests/benchmark.rs
function bench_mat_new (line 11) | fn bench_mat_new() {
function bench_decode_lenna (line 18) | fn bench_decode_lenna() {
function bench_face_detect_physicists (line 26) | fn bench_face_detect_physicists() {
FILE: tests/floatutils.rs
function assert_eq (line 7) | pub fn assert_eq(a: f64, b: f64) {
function assert_ne (line 11) | pub fn assert_ne(a: f64, b: f64) {
FILE: tests/test_basic_ops.rs
function test_accessing_pixel (line 13) | fn test_accessing_pixel() {
function test_mat_type (line 26) | fn test_mat_type() {
function test_mat_clone (line 33) | fn test_mat_clone() {
function pixel_eq (line 40) | fn pixel_eq(a: u8, b: u8) -> bool {
FILE: tests/test_features2d.rs
function mser_lenna_detect (line 9) | fn mser_lenna_detect() {
function surf_lenna_detect_and_compute (line 18) | fn surf_lenna_detect_and_compute() {
function sift_lenna_detect_and_compute (line 30) | fn sift_lenna_detect_and_compute() {
function flann_based_matcher (line 42) | fn flann_based_matcher() {
function flann_based_matcher_two (line 57) | fn flann_based_matcher_two() {
function flann_based_matcher_knn (line 69) | fn flann_based_matcher_knn() {
function bow (line 86) | fn bow() {
FILE: tests/test_hash.rs
function hash_multithreading (line 13) | fn hash_multithreading() {
function average_hash_test (line 19) | fn average_hash_test() {
function block_mean_hash_test (line 24) | fn block_mean_hash_test() {
function color_moment_hash_test (line 29) | fn color_moment_hash_test() {
function marr_hildreth_hash_test (line 34) | fn marr_hildreth_hash_test() {
function phash_test (line 39) | fn phash_test() {
function radial_variance_hash_test (line 44) | fn radial_variance_hash_test() {
function test (line 48) | fn test<T: Hash>(hash: T, expected_diff: f64) {
FILE: tests/test_imgproc.rs
constant FIRST_IMAGE_PATH (line 11) | const FIRST_IMAGE_PATH: &str = "assets/Histogram_Comparison_Source_0.png";
constant SECOND_IMAGE_PATH (line 12) | const SECOND_IMAGE_PATH: &str = "assets/Histogram_Comparison_Source_1.png";
function compare_hist_different_dimensions_panic (line 16) | fn compare_hist_different_dimensions_panic() {
function compare_hist_correlation (line 25) | fn compare_hist_correlation() {
function compare_hist_chi_square (line 30) | fn compare_hist_chi_square() {
function compare_hist_intersection (line 35) | fn compare_hist_intersection() {
function compare_hist_bhattacharyya (line 40) | fn compare_hist_bhattacharyya() {
function compare_hist_chi_square_alternative (line 45) | fn compare_hist_chi_square_alternative() {
function compare_hist_kullback_leibler_divergence (line 50) | fn compare_hist_kullback_leibler_divergence() {
function compare_hist (line 54) | fn compare_hist(method: HistogramComparisionMethod, expected_result: f64) {
function get_image_histogram (line 61) | fn get_image_histogram(path: &'static str) -> Mat {
function canny_edge_detection (line 75) | fn canny_edge_detection() {
FILE: tests/test_objdetect.rs
function test_pedestrian_detection (line 21) | fn test_pedestrian_detection() {
function test_cascade_lenna (line 34) | fn test_cascade_lenna() {
function cascade_model_path (line 53) | fn cascade_model_path() -> &'static str {
function cascade_model_path (line 61) | fn cascade_model_path() -> &'static str {
FILE: tests/test_text.rs
constant VOCABULARY (line 10) | const VOCABULARY: &str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST...
function ocr_tesseract_test_line (line 18) | fn ocr_tesseract_test_line() {
function ocr_tesseract_test_word (line 35) | fn ocr_tesseract_test_word() {
function assert_contains (line 51) | fn assert_contains(left: &str, right: &str) {
function ocr_hmm_test (line 57) | fn ocr_hmm_test() {
function ocr_holistic_word_panic (line 82) | fn ocr_holistic_word_panic() {
FILE: tests/test_video.rs
function test_ayuv (line 7) | fn test_ayuv() {
function test_cljr (line 12) | fn test_cljr() {
function test_uyvp (line 17) | fn test_uyvp() {
function test_vyuy (line 22) | fn test_vyuy() {
function test_4cc (line 26) | fn test_4cc(string: &'static str, integer: u32) {
FILE: tests/utils.rs
function close_rect (line 13) | pub fn close_rect(a: Rect, b: Rect, epsilon: i32) -> bool {
function timed (line 20) | pub fn timed<F>(label: &str, inner: F)
function timed_multiple (line 27) | pub fn timed_multiple<F>(label: &str, iteration: usize, mut inner: F)
function load_physicists (line 42) | pub fn load_physicists() -> Mat {
function load_avg_towncentre (line 47) | pub fn load_avg_towncentre() -> Mat {
function load_lenna (line 52) | pub fn load_lenna() -> Mat {
function load_messi_color (line 57) | pub fn load_messi_color() -> Mat {
function load_lenna_as_buf (line 62) | pub fn load_lenna_as_buf() -> Vec<u8> {
function load_image_as_buf (line 66) | fn load_image_as_buf<P: AsRef<Path>>(img: P) -> Vec<u8> {
function load_frontal_face (line 74) | pub fn load_frontal_face() -> CascadeClassifier {
function get_asset_path (line 80) | pub fn get_asset_path(name: &'static str) -> PathBuf {
Condensed preview — 90 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,560K chars).
[
{
"path": ".ci/install_cuda.sh",
"chars": 497,
"preview": "#!/bin/sh\n## Install CUDA (must run as root)\n\nCUDA_PKG_VERSION=\"7-5\"\nCUDA_VERSION=\"7.5\"\n\nCUDA_REPO_PKG=cuda-repo-ubuntu1"
},
{
"path": ".ci/travis_build_opencv.sh",
"chars": 1082,
"preview": "#!/bin/bash\nset -eux -o pipefail\n\nOPENCV_VERSION=${OPENCV_VERSION:-3.4.1}\nOPENCV_BUILD=$(pwd)/opencv/build\nOPENCV_CONTRI"
},
{
"path": ".clang-format",
"chars": 2807,
"preview": "---\nLanguage: Cpp\n# BasedOnStyle: LLVM\nAccessModifierOffset: -2\nAlignAfterOpenBracket: Align\nAlignConsecutiveAss"
},
{
"path": ".gitattributes",
"chars": 6289,
"preview": "[core]\n whitespace=trailing-space,space-before-tab\n[apply]\n whitespace=fix\n* binary\n*.[sS][lL][nN] "
},
{
"path": ".gitignore",
"chars": 318,
"preview": "# Generated by Cargo\n# will have compiled files and executables\n/target/\n/.idea\n\n# As well as generated cv code\n/artifac"
},
{
"path": ".gitmodules",
"chars": 216,
"preview": "[submodule \"opencv_contrib\"]\n\tpath = opencv_contrib\n\turl = https://github.com/opencv/opencv_contrib.git\n\tshallow = true\n"
},
{
"path": ".travis.yml",
"chars": 1430,
"preview": "env:\n global:\n - MAKEFLAGS=\"-j 4\"\nsudo: required\ndist: trusty\n\nlanguage: rust\nrust:\n - stable\n\naddons:\n apt:\n p"
},
{
"path": ".windows/mingw_build_OCV.ps1",
"chars": 2516,
"preview": "param([Parameter(mandatory=$true)][string] $MinGWPath)\n#SCRIPT CONSTANTS\n$pwd = Get-Location\n$REPO_LOCATION = \"$pwd\\open"
},
{
"path": ".windows/msvc_1_install_CUDA.ps1",
"chars": 858,
"preview": "param([Parameter(mandatory=$true)][string] $FileName)\n$VERSION = \"9.1\"\n$argumentList = \"-s nvcc_$VERSION cublas_$VERSION"
},
{
"path": ".windows/msvc_2_build_OCV.ps1",
"chars": 2749,
"preview": "param([Parameter(mandatory=$true)][bool] $EnableCuda, [Parameter(mandatory=$true)][string] $Compiler)\n$CudaSwitch = If ("
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3218,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "CONTRIBUTING.md",
"chars": 530,
"preview": "# How to contribute\n\nImplement more OpenCV functions/modules and submit a PR request.\n\nBefore submitting a PR, make sure"
},
{
"path": "Cargo.toml",
"chars": 620,
"preview": "[package]\nname = \"cv\"\nversion = \"0.2.2\"\nauthors = [\"Ben Zhang <benzh@cs.berkeley.edu>\"]\nbuild = \"build.rs\"\nrepository = "
},
{
"path": "LICENSE",
"chars": 1066,
"preview": "MIT License\n\nCopyright (c) 2016 Ben Zhang\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\n"
},
{
"path": "README.md",
"chars": 6007,
"preview": "# cv-rs\n\n[![Build Status][travis-image]][travis-url]\n[![Build status][appveyor-image]][appveyor-url]\n[![standard-readme "
},
{
"path": "appveyor.yml",
"chars": 807,
"preview": "clone_depth: 50\nimage: Visual Studio 2017\nenvironment:\n RUSTUP_USE_REQWEST: 1\n CARGO_HTTP_CHECK_REVOKE: false\n matrix"
},
{
"path": "assets/OCRHMM_transitions_table.xml",
"chars": 31713,
"preview": "<?xml version=\"1.0\"?>\n<opencv_storage>\n<transition_probabilities type_id=\"opencv-matrix\">\n <rows>62</rows>\n <cols>62</"
},
{
"path": "assets/cuda_haarcascade_frontalface_default.xml",
"chars": 1254733,
"preview": "<?xml version=\"1.0\"?>\n<!--\n Stump-based 24x24 discrete(?) adaboost frontal face detector.\n Created by Rainer Lienh"
},
{
"path": "assets/haarcascade_frontalface_default.xml",
"chars": 930127,
"preview": "<?xml version=\"1.0\"?>\n<!--\n Stump-based 24x24 discrete(?) adaboost frontal face detector.\n Created by Rainer Lienh"
},
{
"path": "build.rs",
"chars": 5074,
"preview": "extern crate cc;\n\n#[cfg(windows)]\nmod windows {\n use std::error::Error;\n use std::{env, fmt, fs, io, process};\n\n "
},
{
"path": "examples/calc_gradient.rs",
"chars": 421,
"preview": "extern crate cv;\n\nuse cv::highgui::*;\n\nfn main() {\n let image_mat = cv::Mat::from_path(\"assets/lenna.png\", cv::imgcod"
},
{
"path": "examples/calc_hist.rs",
"chars": 1811,
"preview": "extern crate cv;\n\nuse cv::highgui::*;\nuse cv::imgcodecs::ImageReadMode;\nuse cv::*;\n\nfn main() {\n ////////////////////"
},
{
"path": "examples/camshift.rs",
"chars": 2818,
"preview": "extern crate cv;\nuse cv::highgui::*;\nuse cv::imgproc::*;\nuse cv::videoio::*;\nuse cv::*;\n\nstruct SelectionStatus {\n se"
},
{
"path": "examples/display_image.rs",
"chars": 730,
"preview": "// This resembles the OpenCV read image example code:\n// http://docs.opencv.org/3.1.0/db/deb/tutorial_display_image.html"
},
{
"path": "examples/face_detect.rs",
"chars": 1112,
"preview": "extern crate cv;\n\nuse cv::highgui::*;\nuse cv::imgcodecs::*;\nuse cv::objdetect::CascadeClassifier;\nuse cv::*;\nuse std::fs"
},
{
"path": "examples/hog.rs",
"chars": 2821,
"preview": "extern crate cv;\nextern crate getopts;\n\nuse cv::highgui::*;\nuse cv::imgcodecs::*;\nuse cv::objdetect::*;\nuse cv::*;\n\n#[cf"
},
{
"path": "examples/hs_hist.rs",
"chars": 1943,
"preview": "extern crate cv;\n\nuse cv::highgui::*;\nuse cv::imgcodecs::ImageReadMode;\nuse cv::imgproc::ColorConversion;\nuse cv::*;\n\nfn"
},
{
"path": "examples/video_capture.rs",
"chars": 1106,
"preview": "// The following code closely resembles the equivalent C code capture live video\n// #include \"opencv2/opencv.hpp\"\n// usi"
},
{
"path": "native/common-rust.cc",
"chars": 498,
"preview": "#include \"common-rust.h\"\n\nextern \"C\" {\n\nvoid cv_vec_drop(CVec<void>* vec, unsigned int depth) {\n if (vec->array != nu"
},
{
"path": "native/common-rust.h",
"chars": 207,
"preview": "#ifndef CV_RS_COMMON_RUST_H\n#define CV_RS_COMMON_RUST_H\n\n#include \"common.h\"\n\nextern \"C\" {\n\nvoid cv_vec_drop(CVec<void>*"
},
{
"path": "native/common.h",
"chars": 2156,
"preview": "#ifndef CV_RS_COMMON_H\n#define CV_RS_COMMON_H\n\n#include <cstddef>\n#include <functional>\n#include <opencv2/core.hpp>\n\ntyp"
},
{
"path": "native/cuda/cuda.cc",
"chars": 7670,
"preview": "#include <opencv2/cudaobjdetect.hpp>\n\n#include \"../utils.h\"\n#include \"cuda.h\"\n\nextern \"C\" {\n\n// ========================"
},
{
"path": "native/cuda/cuda.h",
"chars": 3829,
"preview": "#ifndef OPENCV_CUDA_H_\n#define OPENCV_CUDA_H_\n\n#include \"../common.h\"\n#include <opencv2/cudaobjdetect.hpp>\n#include <std"
},
{
"path": "native/features2d.cc",
"chars": 6443,
"preview": "#include \"features2d.h\"\n#include \"utils.h\"\n\nextern \"C\" {\n\nvoid* cv_mser_new(int delta,\n int min_area,\n "
},
{
"path": "native/features2d.h",
"chars": 4167,
"preview": "#ifndef CV_RS_FEATURES2D_H\n#define CV_RS_FEATURES2D_H\n\n#include \"common.h\"\n#include <opencv2/core.hpp>\n#include <opencv2"
},
{
"path": "native/hash.cc",
"chars": 2141,
"preview": "#include <opencv2/core.hpp>\n#include <opencv2/img_hash.hpp>\n\nextern \"C\" {\n\nvoid cv_hash_compute(cv::Ptr<cv::img_hash::PH"
},
{
"path": "native/hash.h",
"chars": 948,
"preview": "#ifndef HASH_H_\n#define HASH_H_\n\n#include <opencv2/core.hpp>\n#include <opencv2/img_hash.hpp>\n\nextern \"C\" {\n\nvoid cv_hash"
},
{
"path": "native/highgui.cc",
"chars": 571,
"preview": "#include \"highgui.h\"\n\nextern \"C\" {\n\nvoid cv_named_window(const char* const winname, int flags) {\n cv::namedWindow(win"
},
{
"path": "native/highgui.h",
"chars": 457,
"preview": "#ifndef CV_RS_HIGHGUI_H\n#define CV_RS_HIGHGUI_H\n\n#include <opencv2/core.hpp>\n#include <opencv2/highgui.hpp>\n\nextern \"C\" "
},
{
"path": "native/imcodecs.cc",
"chars": 990,
"preview": "#include \"imcodecs.h\"\n\nextern \"C\" {\n\nvoid* cv_imread(const char* const filename, int flags) {\n cv::Mat* image = new c"
},
{
"path": "native/imcodecs.h",
"chars": 575,
"preview": "#ifndef CV_RS_IMCODECS_H\n#define CV_RS_IMCODECS_H\n\n#include \"common.h\"\n#include \"utils.h\"\n#include <opencv2/core.hpp>\n#i"
},
{
"path": "native/imgproc.cc",
"chars": 4391,
"preview": "#include \"imgproc.h\"\n\nextern \"C\" {\n\nvoid cv_line(cv::Mat* mat, Point2i pt1, Point2i pt2, Scalar color, int thickness, in"
},
{
"path": "native/imgproc.h",
"chars": 2401,
"preview": "#ifndef CV_RS_IMGPROC_H\n#define CV_RS_IMGPROC_H\n\n#include \"common.h\"\n#include <opencv2/core.hpp>\n#include <opencv2/imgpr"
},
{
"path": "native/mat.cc",
"chars": 4495,
"preview": "#include \"mat.h\"\n\nextern \"C\" {\n\nvoid* cv_mat_from_file_storage(const char* path, const char* section) {\n auto result "
},
{
"path": "native/mat.h",
"chars": 2314,
"preview": "#ifndef CV_RS_MAT_H\n#define CV_RS_MAT_H\n\n#include \"common.h\"\n#include <opencv2/core.hpp>\n#include <stddef.h>\n#include <s"
},
{
"path": "native/objdetect.cc",
"chars": 3041,
"preview": "#include \"objdetect.h\"\n#include \"utils.h\"\n\nextern \"C\" {\n\nvoid* cv_cascade_classifier_new() {\n return new cv::CascadeC"
},
{
"path": "native/objdetect.h",
"chars": 1431,
"preview": "#ifndef CV_RS_OBJDETECT_H\n#define CV_RS_OBJDETECT_H\n\n#include \"common.h\"\n#include <opencv2/objdetect.hpp>\n\nextern \"C\" {\n"
},
{
"path": "native/text/text.cc",
"chars": 3032,
"preview": "#include \"text.h\"\n#include \"utils.h\"\n\nextern \"C\" {\nvoid cv_ocr_run(cv::Ptr<cv::text::BaseOCR>& ocr,\n cv::"
},
{
"path": "native/text/text.h",
"chars": 1245,
"preview": "#ifndef CV_RS_TEXT_H\n#define CV_RS_TEXT_H\n\n#include \"common.h\"\n#include <opencv2/core.hpp>\n#include <opencv2/text/ocr.hp"
},
{
"path": "native/utils.cc",
"chars": 1127,
"preview": "#include <opencv2/core.hpp>\n#include <vector>\n\n#include \"common.h\"\n#include \"utils.h\"\n\nvoid cv_to_ffi(const cv::Rect& so"
},
{
"path": "native/utils.h",
"chars": 1298,
"preview": "#ifndef UTILS_H_\n#define UTILS_H_\n\n#include <opencv2/core.hpp>\n#include <vector>\n\n#include \"common.h\"\n\nvoid cv_to_ffi(co"
},
{
"path": "native/video.cc",
"chars": 691,
"preview": "#include \"video.h\"\n\nextern \"C\" {\n\nvoid* cv_term_criteria_new(int type, int count, double epsilon) {\n return new cv::T"
},
{
"path": "native/video.h",
"chars": 361,
"preview": "#ifndef CV_RS_VIDEO_H\n#define CV_RS_VIDEO_H\n\n#include \"common.h\"\n#include <opencv2/video/tracking.hpp>\n\nextern \"C\" {\n\nvo"
},
{
"path": "native/videoio.cc",
"chars": 2011,
"preview": "#include \"videoio.h\"\n\nextern \"C\" {\n\nvoid* cv_videocapture_new(int index) {\n return new cv::VideoCapture(index);\n}\n\nvo"
},
{
"path": "native/videoio.h",
"chars": 1231,
"preview": "#ifndef CV_RS_VIDEOIO_H\n#define CV_RS_VIDEOIO_H\n\n#include \"common.h\"\n#include <opencv2/videoio.hpp>\n\nextern \"C\" {\n\nvoid*"
},
{
"path": "rustfmt.toml",
"chars": 15,
"preview": "max_width = 120"
},
{
"path": "setup_hooks.sh",
"chars": 1243,
"preview": "#!/bin/sh\nrustup component add rustfmt-preview\n\nrustfmt_path=`command -v rustfmt`\necho \"#!/bin/bash\ndeclare -a rust_file"
},
{
"path": "src/core.rs",
"chars": 13323,
"preview": "//! Core data structures in OpenCV\n\nuse bytes::{self, ByteOrder};\nuse mat::*;\nuse std::mem;\nuse std::os::raw::c_int;\n\npu"
},
{
"path": "src/cuda.rs",
"chars": 14306,
"preview": "//! Bindings to OpenCV's classes and functions that exploits GPU/Cuda. See\n//! [cv::cuda](http://docs.opencv.org/3.1.0/d"
},
{
"path": "src/errors.rs",
"chars": 680,
"preview": "//! Errors for OpenCV bindings\nuse std::path::PathBuf;\n\n#[derive(Debug, Fail)]\n/// Custom errors that may happen during "
},
{
"path": "src/features2d/bow_k_means_trainer.rs",
"chars": 1815,
"preview": "//! Provide types for matching keypoint descriptors\nuse *;\n\nenum CBOWKMeansTrainer {}\n\nextern \"C\" {\n fn cv_bow_traine"
},
{
"path": "src/features2d/descriptor_matcher.rs",
"chars": 4538,
"preview": "//! Provide types for matching keypoint descriptors\nuse std::os::raw::{c_char, c_int};\nuse *;\n\nenum CDescriptorMatcher {"
},
{
"path": "src/features2d/mod.rs",
"chars": 551,
"preview": "//! Provide 2D image feature detectors and descriptor extractors\nmod bow_k_means_trainer;\nmod descriptor_matcher;\nmod ms"
},
{
"path": "src/features2d/mser.rs",
"chars": 4552,
"preview": "//! Provide the type that encapsulates all the parameters of the MSER extraction algorithm\nuse core::*;\nuse std::os::raw"
},
{
"path": "src/features2d/sift.rs",
"chars": 3177,
"preview": "//! Provide the type that encapsulates all the parameters of the SIFT extraction algorithm\nuse super::*;\nuse core::*;\nus"
},
{
"path": "src/features2d/surf.rs",
"chars": 3084,
"preview": "//! Provide the type that encapsulates all the parameters of the SURF extraction algorithm\nuse super::*;\nuse core::*;\nus"
},
{
"path": "src/hash.rs",
"chars": 3839,
"preview": "//! The module brings implementations of different image hashing algorithms.\nuse self::private::*;\n\nuse mat::CMat;\nuse *"
},
{
"path": "src/highgui.rs",
"chars": 4700,
"preview": "//! highgui: high-level GUI\nuse failure::Error;\nuse mat::*;\nuse std::ffi::CString;\nuse std::mem;\nuse std::os::raw::{c_ch"
},
{
"path": "src/imgcodecs.rs",
"chars": 6436,
"preview": "//! Image file reading and writing, see [OpenCV\n//! imgcodecs](http://docs.opencv.org/3.1.0/d4/da8/group__imgcodecs.html"
},
{
"path": "src/imgproc.rs",
"chars": 17238,
"preview": "//! Image processing, see [OpenCV\n//! imgproc](http://docs.opencv.org/3.1.0/d7/dbd/group__imgproc.html).\n\nuse super::cor"
},
{
"path": "src/lib.rs",
"chars": 5853,
"preview": "//! This library primarily provides a binding and API for OpenCV 3.x.\n//!\n//! This is a work-in-progress and modules/fun"
},
{
"path": "src/mat.rs",
"chars": 17327,
"preview": "//! Mat\n\nuse core::*;\nuse failure::Error;\nuse std::ffi::CString;\nuse std::mem;\nuse std::ops::{BitAnd, BitOr, BitXor, Not"
},
{
"path": "src/objdetect.rs",
"chars": 11371,
"preview": "//! Various object detection algorithms, such as Haar feature-based cascade\n//! classifier for object detection and hist"
},
{
"path": "src/text/hmm.rs",
"chars": 2363,
"preview": "//! HMM\nuse super::private::*;\nuse super::*;\nuse errors::*;\nuse mat::CMat;\nuse std::os::raw::c_char;\nuse std::path::Path"
},
{
"path": "src/text/holisticword.rs",
"chars": 1722,
"preview": "//! Holistic word\nuse super::private::*;\nuse super::*;\nuse errors::*;\nuse std::os::raw::c_char;\nuse std::path::Path;\nuse"
},
{
"path": "src/text/macros.rs",
"chars": 505,
"preview": "#[macro_export]\n#[doc(hidden)]\nmacro_rules! path_to_cstring {\n ($x:expr) => {\n match $x {\n Some(x) "
},
{
"path": "src/text/mod.rs",
"chars": 2192,
"preview": "//! Provides different algorithms for text detection and recognition in natural scene images\n#[macro_use]\nmod macros;\nmo"
},
{
"path": "src/text/tesseract.rs",
"chars": 2561,
"preview": "//! Tesseract\nuse super::private::*;\nuse super::*;\nuse errors::*;\nuse std::os::raw::c_char;\nuse std::path::Path;\nuse *;\n"
},
{
"path": "src/video.rs",
"chars": 1125,
"preview": "//! Video Analysis, see [OpenCV\n//! video](http://docs.opencv.org/3.1.0/d7/de9/group__video.html)\npub mod tracking {\n "
},
{
"path": "src/videoio.rs",
"chars": 11817,
"preview": "//! Media I/O, see [OpenCV\n//! videoio](http://docs.opencv.org/3.1.0/dd/de7/group__videoio.html)\n\nuse core::*;\nuse error"
},
{
"path": "tests/benchmark.rs",
"chars": 814,
"preview": "extern crate cv;\n\nuse cv::imgcodecs::*;\nuse cv::imgproc::*;\nuse cv::objdetect::ObjectDetect;\nuse cv::*;\nmod utils;\nuse u"
},
{
"path": "tests/floatutils.rs",
"chars": 292,
"preview": "#![allow(dead_code)]\n\nextern crate float_cmp;\n\nuse float_cmp::ApproxEqRatio;\n\npub fn assert_eq(a: f64, b: f64) {\n ass"
},
{
"path": "tests/test_basic_ops.rs",
"chars": 993,
"preview": "//! The test suite in this file is adapted from:\n//! https://docs.opencv.org/3.1.0/d3/df2/tutorial_py_basic_ops.html\n//!"
},
{
"path": "tests/test_features2d.rs",
"chars": 3218,
"preview": "extern crate cv;\nmod utils;\n\nuse cv::features2d::*;\nuse cv::*;\nuse utils::*;\n\n#[test]\nfn mser_lenna_detect() {\n let l"
},
{
"path": "tests/test_hash.rs",
"chars": 1259,
"preview": "extern crate cv;\nextern crate float_cmp;\nmod floatutils;\nmod utils;\n\nuse cv::hash::*;\nuse cv::imgcodecs::ImageReadMode;\n"
},
{
"path": "tests/test_imgproc.rs",
"chars": 2568,
"preview": "extern crate cv;\nextern crate float_cmp;\nmod floatutils;\nmod utils;\n\nuse cv::imgcodecs::ImageReadMode;\nuse cv::imgproc::"
},
{
"path": "tests/test_objdetect.rs",
"chars": 1720,
"preview": "/// These tests will run regardless of cuda or not. When tested with `--features\n/// cuda`, it will use CUDA-enabled `HO"
},
{
"path": "tests/test_text.rs",
"chars": 2698,
"preview": "#![cfg(feature = \"text\")]\nextern crate cv;\nmod utils;\n\nuse cv::imgcodecs::ImageReadMode;\nuse cv::text::*;\nuse cv::*;\nuse"
},
{
"path": "tests/test_video.rs",
"chars": 541,
"preview": "extern crate cv;\nmod utils;\n\nuse cv::videoio::*;\n\n#[test]\nfn test_ayuv() {\n test_4cc(\"AYUV\", 0x56555941);\n}\n\n#[test]\n"
},
{
"path": "tests/utils.rs",
"chars": 2195,
"preview": "#![allow(dead_code)]\n\nextern crate cv;\n\nuse cv::imgcodecs::*;\nuse cv::objdetect::*;\nuse cv::*;\nuse std::fs::File;\nuse st"
}
]
About this extraction
This page contains the full source code of the nebgnahz/cv-rs GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 90 files (2.4 MB), approximately 623.2k tokens, and a symbol index with 769 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.