HyperCanny.
Finds edges in high-dimensional data using the Canny algorithm.
HyperCanny project
Doing Canny edge detection in higher dimensions.
Requirements
HyperCanny is written in C++17, using NetCDF as data container. Dependencies:
- GCC >= 6 or CLANG >= 4.0
- NetCDF-cxx4
Building
HyperCanny uses Meson, and Ninja. To build HyperCanny, run
```bash
meson build # you only need to run this once ninja -C build ```
To run the unit tests, follow up with ninja test
in the build
directory.
Alternatively, there is a Makefile
that runs these commands for you; this also allows for easier integration with some IDEs.
Python module
The code also compiles into a Python module. From the project root run:
```bash
pip install . ```
Testing / Development
This project uses Google Test for testing. The source code of gtest
is included in the repository, so you don't need to install it separately.
coverage
To run tests with coverage you may want to use the scripts/coverage.sh
script. It recompiles the code with --coverage
, runs tests and then either generates a HTML report using the lcov
tool (./scripts/coverage.sh -html
), or sends the coverage report to codecov (./scripts/coverage.sh -codecov ${CODECOV_TOKEN}
).
code quality
- CppCheck is run through the
scripts/run_cppcheck.sh
script. - To check that all headers start with license info and a
#pragma once
directive, run thescripts/check-headers.sh
script. This also checks that all headers have a Doxygen\file
directive.
development
- If you add
.cc
files somewhere, be sure to add them to the appropriatemeson.build
file. This is done automatically using thescripts/premeson.sh
script.