▼Core classes and definitions | Core types, components, hardware drivers, debugging tools, etc |
▼Model components, parameters, manager, and associated classes | These classes define how a complex model or vision processing pipeline with user-tunable parameters can be built from components |
▼Parameter-related classes and functions | |
String conversions for Parameter | |
Specification of sets of valid values, e.g., that some Parameter may take | This is used by ParameterDef to specify valid values that a Parameter may take as unrestricted, from a given list, in a range, matching a regex, etc |
Helper definitions for different camera sensors | |
Inertial Measurement Unit (IMU) classes and functions | |
▼Support for JeVois modules written in Python | In addition to writing modules in C++, JeVois supports writing modules in Python. JeVois provides two-way mappings: |
Python support functions | Helpers to facilitate data transfer to/from Python |
JeVois-Pro Graphical Interface | Classes and utilities to provide a graphical interface using Dear ImGui. Supported on JeVois-Pro only |
ICM-20948 DMP computation header fields | |
Debugging helper classes, functions and macros | |
▼Tensor/Neural Processing networks | Classes and utilities to provide abstraction to deep neural networks. Provides interfacing to OpenCV backends (CPU, OpenCL), tensor processing units (TPU) such as Coral Edge TPU and neural processing units (NPU) such as Amlogic A311D NPU |
DNN-related processors written in python | In addition to writing DNN pre/net/post processors in C++, JeVois supports writing them in Python |
▼Minimalistic support for images in the core JeVois library | The main purpose of the classes and functions that support images is to allow handling of image buffers whose memory is mapped onto hardware (camera or USB drivers) without having to copy the data over. Many other libraries and frameworks are available that define more complete image classes and associated image processing and machine vision functions. Functions are here provided to allow you to reinterpret the raw image buffers as, e.g., OpenCV cv::Mat images without copying the image pixel data. For the purposes of creating demo displays, simple image copy, paste, drawing, text, etc into raw YUYV image buffers (which would typically be obtained from the USB driver and need to be filled with some pixel data to send over the USB link) are also provided |
Jpeg-related classes and functions | Jpeg classes and functions, mainly used to support sending MJPEG video output over USB from raw uncompressed images captured by a camera |
JeVois-specific types and generic helper classes | These types and classes support the core JeVois implementation. Pay particular attention to the very useful JEVOIS_DEFINE_ENUM_CLASS(name, SEQ) macro to define new enums that can be used in Parameter to allow menu-style parameters |
▼Misc utilities | Miscellaneous utility and helper functions |
Miscellaneous preprocessor utilities related to controlling compilation | |
Console access utilities | Console-related utility and helper functions |
Helper functions to convert coordinates from camera resolution to standardized | Different machine vision algorithms in JeVois may be able to operate with different camera resolutions, such as 1280x1024, 320x240, or 176x144. When some item of interest is detected in the camera frame, one may often want to send the coordinates of that thing to the serial port. This poses a problem if one were to directly send the image coordinates of the item out, which is that now the receiver (e.g., an Arduino) needs to know which camera image resolution was used, so that it can properly interpret these coordinates. For example, if the visual attention (saliency) algorithm is running with 640x480 camera input, then a salient object at the center of the camera's field of view would have coordinates 320,240. But if the same saliency algorithm is configured to process 320x240 input video (so that it can run at a higher framerate), now an object at the center of the field of view would have coordinates 160,120. If one connects an Arduino that controls, for example, a pan/tilt head to JeVois, we need a way to communicate coordinates of target objects in the world independently of the video resolution used by the camera |
Name demangling functions | Name demangling functions return the original name of a type as written in the source code, as opposed to the name used internally by the compiler, which is mangled to avoid name conflicts and confusions across different namespaces, overloads, and such |