1
0
mirror of https://github.com/opencv/opencv_contrib.git synced 2025-10-20 21:40:49 +08:00

Workaround for CUDA 12.6 tuple_size issue #3773.

This commit is contained in:
Alexander Smorkalov
2024-09-03 13:47:48 +03:00
parent f5f421628b
commit 09eb618804

View File

@@ -159,25 +159,15 @@ void cv::cuda::cartToPolar(InputArray _xy, OutputArray _mag, OutputArray _angle,
GpuMat_<float> magc(mag);
GpuMat_<float> anglec(angle);
gridTransformUnary(globPtr<float2>(xy), globPtr<float>(magc), magnitude_interleaved_func<float2>(), stream);
if (angleInDegrees)
{
auto f1 = magnitude_interleaved_func<float2>();
auto f2 = direction_interleaved_func<float2, true>();
cv::cudev::tuple<decltype(f1), decltype(f2)> f12 = cv::cudev::make_tuple(f1, f2);
gridTransformTuple(globPtr<float2>(xy),
tie(magc, anglec),
f12,
stream);
gridTransformUnary(globPtr<float2>(xy), globPtr<float>(anglec), direction_interleaved_func<float2, true>(), stream);
}
else
{
auto f1 = magnitude_interleaved_func<float2>();
auto f2 = direction_interleaved_func<float2, false>();
cv::cudev::tuple<decltype(f1), decltype(f2)> f12 = cv::cudev::make_tuple(f1, f2);
gridTransformTuple(globPtr<float2>(xy),
tie(magc, anglec),
f12,
stream);
gridTransformUnary(globPtr<float2>(xy), globPtr<float>(anglec), direction_interleaved_func<float2, false>(), stream);
}
syncOutput(mag, _mag, stream);
@@ -191,7 +181,7 @@ void cv::cuda::cartToPolar(InputArray _xy, OutputArray _magAngle, bool angleInDe
CV_Assert( xy.type() == CV_32FC2 );
GpuMat magAngle = getOutputMat(_magAngle, xy.size(), CV_32FC2, stream);
if (angleInDegrees)
{
gridTransformUnary(globPtr<float2>(xy),