--- modules/tracker/mbt/src/depth/vpMbtFaceDepthDense.cpp.orig 2023-09-22 05:39:36 UTC +++ modules/tracker/mbt/src/depth/vpMbtFaceDepthDense.cpp @@ -518,9 +518,15 @@ void vpMbtFaceDepthDense::computeInteractionMatrixAndR cv::v_float64x2 vx, vy, vz; cv::v_load_deinterleave(ptr_point_cloud, vx, vy, vz); +#if (VISP_HAVE_OPENCV_VERSION >= 0x040900) + cv::v_float64x2 va1 = cv::v_sub(cv::v_mul(vnz, vy), cv::v_mul(vny, vz)); // vnz*vy - vny*vz + cv::v_float64x2 va2 = cv::v_sub(cv::v_mul(vnx, vz), cv::v_mul(vnz, vx)); // vnx*vz - vnz*vx + cv::v_float64x2 va3 = cv::v_sub(cv::v_mul(vny, vx), cv::v_mul(vnx, vy)); // vny*vx - vnx*vy +#else cv::v_float64x2 va1 = vnz*vy - vny*vz; cv::v_float64x2 va2 = vnx*vz - vnz*vx; cv::v_float64x2 va3 = vny*vx - vnx*vy; +#endif cv::v_float64x2 vnxy = cv::v_combine_low(vnx, vny); cv::v_store(ptr_L, vnxy); @@ -542,7 +548,12 @@ void vpMbtFaceDepthDense::computeInteractionMatrixAndR cv::v_store(ptr_L, vnxy); ptr_L += 2; +#if (VISP_HAVE_OPENCV_VERSION >= 0x040900) + cv::v_float64x2 verr = cv::v_add(vd, cv::v_muladd(vnx, vx, cv::v_muladd(vny, vy, cv::v_mul(vnz, vz)))); +#else cv::v_float64x2 verr = vd + cv::v_muladd(vnx, vx, cv::v_muladd(vny, vy, vnz*vz)); +#endif + cv::v_store(ptr_error, verr); ptr_error += 2; #elif USE_SSE