Giter Club home page Giter Club logo

keypointdetectandroid's People

Contributors

alexdtat avatar timpushkin avatar zerofivefiveseven avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

keypointdetectandroid's Issues

Fix Gradle task dependencies

Currently in lib module Kotlin build frequently starts before CMake build finishes for some reason, so Scapix bridge is not yet ready when it is required for building Kotlin code. This can be fixed by manually adding dependencies between these tasks.

Add output image (with keypoints) scaling

Now, for small camera resolutions, an image of the same size is displayed, but it is preferable to have an image with keypoints scaled according to the screen parameters.

SuperPoint makes app crash on large images

SuperPoint seems to either run on main thread or use smartphone so heavily that it makes the main thread freeze. When the image is large, it is enough to get app's process killed.

Implement a builder for `SuperPoint`

Currently SuperPoint accepts Context in its constructor but only uses it for initialization and doesn't save links to it. This could be replaced with a builder that will accept Context and provide SuperPoint with the assets it needs.

Use `YUV_420_888` instead of `RGBA_8888`

Currently we are using RGBA_8888 images from CameraX and then convert them to the formats we need. The problem is that CameraX actually captures the images in YUV_420_888 and then coverts them RGBA_8888. We can reduce the computational overhead by accepting YUV_420_888 instead and converting it straight to our formats.

Divide native library header

Currently native library has a single header with all of the classes put together. This is because Scapix currently requires structs to be defined in the same header where they are used in a ported class and all of the library's classes use the same structs.

This is not a good thing as the header might grow too large with time, so it would be great to figure something out. Or just wait for Scapix to get rid of this requirement.

Rotate saved resolution on device rotation

Currently when phone is rotated the camera resolution may change because the previously picked one may be no longer supported (because it's been also rotated). It can be solved by remembering display mode (landscape/portrait) and rotating the saved resolution if the mode's been changed.

OpenCV optimizations

  • Change native code so that OpenCV makes use of OpenCL
  • Configure OpenVX downloading and installation
  • Investigate and fix OpenCV's JPEG lib conflict with LTO and Thin LTO

Native CI

Would be great to add the following CI for native library:

  • Linting (cpplint, clang-tidy)
  • Build with examples
  • Build with language bridge generation

Descriptors output topic

Maybe we don't even need to print descriptors as it looks like a mess in the output -- just put descriptor size for each keypoint (in some algorithms the size may be dynamic, though, not in ours).

Originally posted by @TimPushkin in #13 (review)

GUI enhancements

  • Add a graphical hint for a user about the existence of the side menu
  • Enlarge measurement time text description
  • Add current algorithm name

Choose algorithm from CLI

In the example it would be better to accept a command line argument with the algorithm name and run only the selected one because running all three is pretty messy.

Originally posted by @TimPushkin in #13 (review)

Android CI

Would be great to add the following Android CI:

  • Linting (detekt and maybe ktlint) for both Gradle modules
  • Building of app which includes building lib

Detekt SLF4J warnings

When Detekt is configured in multiple modules, it produces warnings like this

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/runner/.gradle/caches/modules-2/files-2.1/io.gitlab.arturbosch.detekt/detekt-formatting/1.21.0/b7e14d2040b8c60922[27](https://github.com/TimPushkin/KeypointDetectAndroid/runs/7728872264?check_suite_focus=true#step:5:28)a0056223e9f36cc54a6/detekt-formatting-1.21.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> Task :app:detekt
SLF4J: Found binding in [jar:file:/home/runner/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-nop/1.7.36/a3c1eb685d59414527faa93623acae311c184032/slf4j-nop-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.helpers.NOPLoggerFactory]

It doesn't fail runs in CI as these are warnings, not errors.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.