This PR is for learning purposes only. I known it is incomplete considering some code standards, and there are margin for customization with better UI (for example, allow different minimum surface size). It examplifies how to create a new marker detector type that is used to detect a computer screen as a surface (potentially, any rigid brighter trapezoid surface in regard to the background).
The new type creates markers from trapezoid corners detected from the biggest one at the field of view.
Orientation is obtained by sorting corners with pre-defined assumptions and will always return top-to-bottom surface in regard to the world view (it is agnostic about head pose or real corner orientation). For stationary setups, it is not a problem at all.
For stationary setups, I found it to be cleaner (no visual markers at all needed) and a lot more precise and stable than fiducial markers.
This PR is for learning purposes only. I known it is incomplete considering some code standards, and there are margin for customization with better UI (for example, allow different minimum surface size). It examplifies how to create a new marker detector type that is used to detect a computer screen as a surface (potentially, any rigid brighter trapezoid surface in regard to the background).
The new type creates markers from trapezoid corners detected from the biggest one at the field of view.
Orientation is obtained by sorting corners with pre-defined assumptions and will always return top-to-bottom surface in regard to the world view (it is agnostic about head pose or real corner orientation). For stationary setups, it is not a problem at all.
For stationary setups, I found it to be cleaner (no visual markers at all needed) and a lot more precise and stable than fiducial markers.