mirror of
https://github.com/opencv/opencv.git
synced 2024-11-26 12:10:49 +08:00
Merged revision(s) 8484 from trunk:
fixed some bugs in gpu module under Windows: * convertTo alignment error ........
This commit is contained in:
parent
4ddcc31edc
commit
4e4b96e3d9
@ -1037,6 +1037,11 @@ namespace
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T> static inline bool isAligned(const T* ptr, size_t size)
|
||||
{
|
||||
return reinterpret_cast<size_t>(ptr) % size == 0;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// CudaFuncTable
|
||||
|
||||
@ -1165,6 +1170,13 @@ namespace
|
||||
CV_Error(CV_StsUnsupportedFormat, "The device doesn't support double");
|
||||
}
|
||||
|
||||
bool aligned = isAligned(src.data, 16) && isAligned(dst.data, 16);
|
||||
if (!aligned)
|
||||
{
|
||||
cv::gpu::convertTo(src, dst);
|
||||
return;
|
||||
}
|
||||
|
||||
const func_t func = funcs[src.depth()][dst.depth()][src.channels() - 1];
|
||||
CV_DbgAssert(func != 0);
|
||||
|
||||
|
@ -850,7 +850,7 @@ TEST_P(Divide_Array, WithScale)
|
||||
cv::Mat dst_gold;
|
||||
cv::divide(mat1, mat2, dst_gold, scale, depth.second);
|
||||
|
||||
EXPECT_MAT_NEAR(dst_gold, dst, depth.first >= CV_32F || depth.second >= CV_32F ? 1e-4 : 1.0);
|
||||
EXPECT_MAT_NEAR(dst_gold, dst, depth.first >= CV_32F || depth.second >= CV_32F ? 1e-2 : 1.0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -334,7 +334,7 @@ TEST_P(Laplacian, Accuracy)
|
||||
cv::Mat dst_gold;
|
||||
cv::Laplacian(src, dst_gold, -1, ksize.width);
|
||||
|
||||
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
|
||||
EXPECT_MAT_NEAR(dst_gold, dst, src.depth() < CV_32F ? 0.0 : 1e-3);
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(GPU_Filter, Laplacian, testing::Combine(
|
||||
|
Loading…
Reference in New Issue
Block a user