13namespace xrt::tracking::hand::mercury {
24 rr.x = (in.x * warp_back(0, 0)) + (in.y * warp_back(0, 1)) + warp_back(0, 2);
25 rr.y = (in.x * warp_back(1, 0)) + (in.y * warp_back(1, 1)) + warp_back(1, 2);
30hsv2rgb(
float fH,
float fS,
float fV)
32 const float fC = fV * fS;
33 const float fHPrime = fmod(fH / 60.0, 6);
34 const float fX = fC * (1 - fabs(fmod(fHPrime, 2) - 1));
35 const float fM = fV - fC;
39 if (0 <= fHPrime && fHPrime < 1) {
43 }
else if (1 <= fHPrime && fHPrime < 2) {
47 }
else if (2 <= fHPrime && fHPrime < 3) {
51 }
else if (3 <= fHPrime && fHPrime < 4) {
55 }
else if (4 <= fHPrime && fHPrime < 5) {
59 }
else if (5 <= fHPrime && fHPrime < 6) {
72 return {fR * 255.0f, fG * 255.0f, fB * 255.0f};
76handDot(cv::Mat &mat,
xrt_vec2 place,
float radius,
float hue,
float intensity,
int type)
78 cv::circle(mat, {(int)place.x, (
int)place.y}, radius, hsv2rgb(hue * 360.0f, intensity, intensity), type);
82handSquare(cv::Mat &debug_frame,
xrt_vec2 center,
float radius, cv::Scalar color)
84 cv::Point2i pt((
int)center.x, (
int)center.y);
85 cv::rectangle(debug_frame, cv::Rect(pt - cv::Point2i(radius / 2, radius / 2), cv::Size(radius, radius)), color,
T transformVecBy2x3(T in, cv::Matx23f warp_back)
This is a template so that we can use xrt_vec3 or xrt_vec2.
Definition hg_image_math.inl:21
A 2 element vector with single floats.
Definition xrt_defines.h:268