void testApp::smoothKinect() { Mat zMat(kinect.getHeight(), kinect.getWidth(), CV_32FC1, kinect.getDistancePixels()); int k = ((int) panel.getValueI("smoothingAmount") * 2) + 1; zMat.copyTo(bfBuffer); GaussianBlur(bfBuffer, zMat, cv::Size(k, k), 0); }
/** The matrices for each combination could be explicitly expanded instead of using matrix multiplication. */ void Matrix4x4::FromEuler(float x, float y, float z, order_t order) { float xrad = x / 180.0f * 3.1415927f; float sx = sinf(xrad); float cx = cosf(xrad); Matrix4x4 xMat(1.0, 0.0, 0.0, 0.0, 0.0, cx, -sx, 0.0, 0.0, sx, cx, 0.0, 0.0, 0.0, 0.0, 1.0); float yrad = y / 180.0f * 3.1415927f; float sy = sinf(yrad); float cy = cosf(yrad); Matrix4x4 yMat( cy, 0.0, sy, 0.0, 0.0, 1.0, 0.0, 0.0, -sy, 0.0, cy, 0.0, 0.0, 0.0, 0.0, 1.0); float zrad = z / 180.0f * 3.1415927f; float sz = sinf(zrad); float cz = cosf(zrad); Matrix4x4 zMat( cz, -sz, 0.0, 0.0, sz, cz, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); switch(order) { case kXYZ: *this = zMat * (yMat * xMat); break; case kYXZ: *this = zMat * (xMat * yMat); break; case kYZX: *this = xMat * (zMat * yMat); break; case kXZY: *this = yMat * (zMat * xMat); break; case kZYX: *this = xMat * (yMat * zMat); break; case kZXY: *this = yMat * (xMat * zMat); break; default: *this = xMat * (yMat * zMat); break; } }