TAPI: fix OpenCL warpers and test
This commit is contained in:
parent
3782c324c4
commit
bf4f15fb5f
@ -64,12 +64,12 @@ Rect PlaneWarperOcl::buildMaps(Size src_size, InputArray K, InputArray R, InputA
|
|||||||
xmap.create(dsize, CV_32FC1);
|
xmap.create(dsize, CV_32FC1);
|
||||||
ymap.create(dsize, CV_32FC1);
|
ymap.create(dsize, CV_32FC1);
|
||||||
|
|
||||||
Mat r_kinv(1, 9, CV_32FC1, projector_.r_kinv), t(1, 3, CV_32FC1, projector_.t);
|
Mat k_rinv(1, 9, CV_32FC1, projector_.k_rinv), t(1, 3, CV_32FC1, projector_.t);
|
||||||
UMat uxmap = xmap.getUMat(), uymap = ymap.getUMat(),
|
UMat uxmap = xmap.getUMat(), uymap = ymap.getUMat(),
|
||||||
ur_kinv = r_kinv.getUMat(ACCESS_READ), ut = t.getUMat(ACCESS_READ);
|
uk_rinv = k_rinv.getUMat(ACCESS_READ), ut = t.getUMat(ACCESS_READ);
|
||||||
|
|
||||||
k.args(ocl::KernelArg::WriteOnlyNoSize(uxmap), ocl::KernelArg::WriteOnly(uymap),
|
k.args(ocl::KernelArg::WriteOnlyNoSize(uxmap), ocl::KernelArg::WriteOnly(uymap),
|
||||||
ocl::KernelArg::PtrReadOnly(ur_kinv), ocl::KernelArg::PtrReadOnly(ut),
|
ocl::KernelArg::PtrReadOnly(uk_rinv), ocl::KernelArg::PtrReadOnly(ut),
|
||||||
dst_tl.x, dst_tl.y, projector_.scale);
|
dst_tl.x, dst_tl.y, projector_.scale);
|
||||||
|
|
||||||
size_t globalsize[2] = { dsize.width, dsize.height };
|
size_t globalsize[2] = { dsize.width, dsize.height };
|
||||||
@ -111,11 +111,11 @@ Rect SphericalWarperOcl::buildMaps(Size src_size, InputArray K, InputArray R, Ou
|
|||||||
xmap.create(dsize, CV_32FC1);
|
xmap.create(dsize, CV_32FC1);
|
||||||
ymap.create(dsize, CV_32FC1);
|
ymap.create(dsize, CV_32FC1);
|
||||||
|
|
||||||
Mat r_kinv(1, 9, CV_32FC1, projector_.r_kinv);
|
Mat k_rinv(1, 9, CV_32FC1, projector_.k_rinv);
|
||||||
UMat uxmap = xmap.getUMat(), uymap = ymap.getUMat(), ur_kinv = r_kinv.getUMat(ACCESS_READ);
|
UMat uxmap = xmap.getUMat(), uymap = ymap.getUMat(), uk_rinv = k_rinv.getUMat(ACCESS_READ);
|
||||||
|
|
||||||
k.args(ocl::KernelArg::WriteOnlyNoSize(uxmap), ocl::KernelArg::WriteOnly(uymap),
|
k.args(ocl::KernelArg::WriteOnlyNoSize(uxmap), ocl::KernelArg::WriteOnly(uymap),
|
||||||
ocl::KernelArg::PtrReadOnly(ur_kinv), dst_tl.x, dst_tl.y, projector_.scale);
|
ocl::KernelArg::PtrReadOnly(uk_rinv), dst_tl.x, dst_tl.y, projector_.scale);
|
||||||
|
|
||||||
size_t globalsize[2] = { dsize.width, dsize.height };
|
size_t globalsize[2] = { dsize.width, dsize.height };
|
||||||
if (k.run(2, globalsize, NULL, true))
|
if (k.run(2, globalsize, NULL, true))
|
||||||
@ -156,11 +156,11 @@ Rect CylindricalWarperOcl::buildMaps(Size src_size, InputArray K, InputArray R,
|
|||||||
xmap.create(dsize, CV_32FC1);
|
xmap.create(dsize, CV_32FC1);
|
||||||
ymap.create(dsize, CV_32FC1);
|
ymap.create(dsize, CV_32FC1);
|
||||||
|
|
||||||
Mat r_kinv(1, 9, CV_32FC1, projector_.r_kinv);
|
Mat k_rinv(1, 9, CV_32FC1, projector_.k_rinv);
|
||||||
UMat uxmap = xmap.getUMat(), uymap = ymap.getUMat(), ur_kinv = r_kinv.getUMat(ACCESS_READ);
|
UMat uxmap = xmap.getUMat(), uymap = ymap.getUMat(), uk_rinv = k_rinv.getUMat(ACCESS_READ);
|
||||||
|
|
||||||
k.args(ocl::KernelArg::WriteOnlyNoSize(uxmap), ocl::KernelArg::WriteOnly(uymap),
|
k.args(ocl::KernelArg::WriteOnlyNoSize(uxmap), ocl::KernelArg::WriteOnly(uymap),
|
||||||
ocl::KernelArg::PtrReadOnly(ur_kinv), dst_tl.x, dst_tl.y, projector_.scale);
|
ocl::KernelArg::PtrReadOnly(uk_rinv), dst_tl.x, dst_tl.y, projector_.scale);
|
||||||
|
|
||||||
size_t globalsize[2] = { dsize.width, dsize.height };
|
size_t globalsize[2] = { dsize.width, dsize.height };
|
||||||
if (k.run(2, globalsize, NULL, true))
|
if (k.run(2, globalsize, NULL, true))
|
||||||
|
@ -64,7 +64,13 @@ struct WarperTestBase :
|
|||||||
src = randomMat(size, CV_32FC1, -500, 500);
|
src = randomMat(size, CV_32FC1, -500, 500);
|
||||||
|
|
||||||
K = Mat::eye(3, 3, CV_32FC1);
|
K = Mat::eye(3, 3, CV_32FC1);
|
||||||
R = Mat::eye(3, 3, CV_32FC1);
|
float angle = (float)(30.0 * CV_PI / 180.0);
|
||||||
|
float rotationMatrix[9] = {
|
||||||
|
(float)cos(angle), (float)sin(angle), 0,
|
||||||
|
(float)-sin(angle), (float)cos(angle), 0,
|
||||||
|
0, 0, 1
|
||||||
|
};
|
||||||
|
Mat(3, 3, CV_32FC1, rotationMatrix).copyTo(R);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Near(double threshold = 0.)
|
void Near(double threshold = 0.)
|
||||||
@ -140,7 +146,7 @@ OCL_TEST_F(PlaneWarperOclTest, Mat)
|
|||||||
OCL_OFF(warper->warp(src, K, R, INTER_LINEAR, BORDER_REPLICATE, dst));
|
OCL_OFF(warper->warp(src, K, R, INTER_LINEAR, BORDER_REPLICATE, dst));
|
||||||
OCL_ON(warper->warp(src, K, R, INTER_LINEAR, BORDER_REPLICATE, udst));
|
OCL_ON(warper->warp(src, K, R, INTER_LINEAR, BORDER_REPLICATE, udst));
|
||||||
|
|
||||||
Near(1e-5);
|
Near(1e-4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user