49
49
#else
50
50
51
51
#include " opencv2/cudev.hpp"
52
+ #include " opencv2/core/cuda/cuda_compat.hpp"
52
53
53
54
using namespace cv ::cudev;
54
55
55
56
void divScalar (const GpuMat& src, cv::Scalar val, bool inv, GpuMat& dst, const GpuMat& mask, double scale, Stream& stream, int );
56
57
57
58
namespace
58
59
{
60
+ using cv::cuda::device::compat::double4Compat;
59
61
template <typename T, int cn> struct SafeDiv ;
60
62
template <typename T> struct SafeDiv <T, 1 >
61
63
{
@@ -170,7 +172,7 @@ void divScalar(const GpuMat& src, cv::Scalar val, bool inv, GpuMat& dst, const G
170
172
{divScalarImpl<uchar, float , short >, divScalarImpl<uchar2 , float , short2 >, divScalarImpl<uchar3 , float , short3 >, divScalarImpl<uchar4 , float , short4 >},
171
173
{divScalarImpl<uchar, float , int >, divScalarImpl<uchar2 , float , int2 >, divScalarImpl<uchar3 , float , int3 >, divScalarImpl<uchar4 , float , int4 >},
172
174
{divScalarImpl<uchar, float , float >, divScalarImpl<uchar2 , float , float2 >, divScalarImpl<uchar3 , float , float3 >, divScalarImpl<uchar4 , float , float4 >},
173
- {divScalarImpl<uchar, double , double >, divScalarImpl<uchar2 , double , double2 >, divScalarImpl<uchar3 , double , double3 >, divScalarImpl<uchar4 , double , double4 >}
175
+ {divScalarImpl<uchar, double , double >, divScalarImpl<uchar2 , double , double2 >, divScalarImpl<uchar3 , double , double3 >, divScalarImpl<uchar4 , double , double4Compat >}
174
176
},
175
177
{
176
178
{divScalarImpl<schar, float , uchar>, divScalarImpl<char2 , float , uchar2 >, divScalarImpl<char3 , float , uchar3 >, divScalarImpl<char4 , float , uchar4 >},
@@ -179,7 +181,7 @@ void divScalar(const GpuMat& src, cv::Scalar val, bool inv, GpuMat& dst, const G
179
181
{divScalarImpl<schar, float , short >, divScalarImpl<char2 , float , short2 >, divScalarImpl<char3 , float , short3 >, divScalarImpl<char4 , float , short4 >},
180
182
{divScalarImpl<schar, float , int >, divScalarImpl<char2 , float , int2 >, divScalarImpl<char3 , float , int3 >, divScalarImpl<char4 , float , int4 >},
181
183
{divScalarImpl<schar, float , float >, divScalarImpl<char2 , float , float2 >, divScalarImpl<char3 , float , float3 >, divScalarImpl<char4 , float , float4 >},
182
- {divScalarImpl<schar, double , double >, divScalarImpl<char2 , double , double2 >, divScalarImpl<char3 , double , double3 >, divScalarImpl<char4 , double , double4 >}
184
+ {divScalarImpl<schar, double , double >, divScalarImpl<char2 , double , double2 >, divScalarImpl<char3 , double , double3 >, divScalarImpl<char4 , double , double4Compat >}
183
185
},
184
186
{
185
187
{0 /* divScalarImpl<ushort, float, uchar>*/ , 0 /* divScalarImpl<ushort2, float, uchar2>*/ , 0 /* divScalarImpl<ushort3, float, uchar3>*/ , 0 /* divScalarImpl<ushort4, float, uchar4>*/ },
@@ -188,7 +190,7 @@ void divScalar(const GpuMat& src, cv::Scalar val, bool inv, GpuMat& dst, const G
188
190
{divScalarImpl<ushort, float , short >, divScalarImpl<ushort2 , float , short2 >, divScalarImpl<ushort3 , float , short3 >, divScalarImpl<ushort4 , float , short4 >},
189
191
{divScalarImpl<ushort, float , int >, divScalarImpl<ushort2 , float , int2 >, divScalarImpl<ushort3 , float , int3 >, divScalarImpl<ushort4 , float , int4 >},
190
192
{divScalarImpl<ushort, float , float >, divScalarImpl<ushort2 , float , float2 >, divScalarImpl<ushort3 , float , float3 >, divScalarImpl<ushort4 , float , float4 >},
191
- {divScalarImpl<ushort, double , double >, divScalarImpl<ushort2 , double , double2 >, divScalarImpl<ushort3 , double , double3 >, divScalarImpl<ushort4 , double , double4 >}
193
+ {divScalarImpl<ushort, double , double >, divScalarImpl<ushort2 , double , double2 >, divScalarImpl<ushort3 , double , double3 >, divScalarImpl<ushort4 , double , double4Compat >}
192
194
},
193
195
{
194
196
{0 /* divScalarImpl<short, float, uchar>*/ , 0 /* divScalarImpl<short2, float, uchar2>*/ , 0 /* divScalarImpl<short3, float, uchar3>*/ , 0 /* divScalarImpl<short4, float, uchar4>*/ },
@@ -197,7 +199,7 @@ void divScalar(const GpuMat& src, cv::Scalar val, bool inv, GpuMat& dst, const G
197
199
{divScalarImpl<short , float , short >, divScalarImpl<short2 , float , short2 >, divScalarImpl<short3 , float , short3 >, divScalarImpl<short4 , float , short4 >},
198
200
{divScalarImpl<short , float , int >, divScalarImpl<short2 , float , int2 >, divScalarImpl<short3 , float , int3 >, divScalarImpl<short4 , float , int4 >},
199
201
{divScalarImpl<short , float , float >, divScalarImpl<short2 , float , float2 >, divScalarImpl<short3 , float , float3 >, divScalarImpl<short4 , float , float4 >},
200
- {divScalarImpl<short , double , double >, divScalarImpl<short2 , double , double2 >, divScalarImpl<short3 , double , double3 >, divScalarImpl<short4 , double , double4 >}
202
+ {divScalarImpl<short , double , double >, divScalarImpl<short2 , double , double2 >, divScalarImpl<short3 , double , double3 >, divScalarImpl<short4 , double , double4Compat >}
201
203
},
202
204
{
203
205
{0 /* divScalarImpl<int, float, uchar>*/ , 0 /* divScalarImpl<int2, float, uchar2>*/ , 0 /* divScalarImpl<int3, float, uchar3>*/ , 0 /* divScalarImpl<int4, float, uchar4>*/ },
@@ -206,7 +208,7 @@ void divScalar(const GpuMat& src, cv::Scalar val, bool inv, GpuMat& dst, const G
206
208
{0 /* divScalarImpl<int, float, short>*/ , 0 /* divScalarImpl<int2, float, short2>*/ , 0 /* divScalarImpl<int3, float, short3>*/ , 0 /* divScalarImpl<int4, float, short4>*/ },
207
209
{divScalarImpl<int , float , int >, divScalarImpl<int2 , float , int2 >, divScalarImpl<int3 , float , int3 >, divScalarImpl<int4 , float , int4 >},
208
210
{divScalarImpl<int , float , float >, divScalarImpl<int2 , float , float2 >, divScalarImpl<int3 , float , float3 >, divScalarImpl<int4 , float , float4 >},
209
- {divScalarImpl<int , double , double >, divScalarImpl<int2 , double , double2 >, divScalarImpl<int3 , double , double3 >, divScalarImpl<int4 , double , double4 >}
211
+ {divScalarImpl<int , double , double >, divScalarImpl<int2 , double , double2 >, divScalarImpl<int3 , double , double3 >, divScalarImpl<int4 , double , double4Compat >}
210
212
},
211
213
{
212
214
{0 /* divScalarImpl<float, float, uchar>*/ , 0 /* divScalarImpl<float2, float, uchar2>*/ , 0 /* divScalarImpl<float3, float, uchar3>*/ , 0 /* divScalarImpl<float4, float, uchar4>*/ },
@@ -215,7 +217,7 @@ void divScalar(const GpuMat& src, cv::Scalar val, bool inv, GpuMat& dst, const G
215
217
{0 /* divScalarImpl<float, float, short>*/ , 0 /* divScalarImpl<float2, float, short2>*/ , 0 /* divScalarImpl<float3, float, short3>*/ , 0 /* divScalarImpl<float4, float, short4>*/ },
216
218
{0 /* divScalarImpl<float, float, int>*/ , 0 /* divScalarImpl<float2, float, int2>*/ , 0 /* divScalarImpl<float3, float, int3>*/ , 0 /* divScalarImpl<float4, float, int4>*/ },
217
219
{divScalarImpl<float , float , float >, divScalarImpl<float2 , float , float2 >, divScalarImpl<float3 , float , float3 >, divScalarImpl<float4 , float , float4 >},
218
- {divScalarImpl<float , double , double >, divScalarImpl<float2 , double , double2 >, divScalarImpl<float3 , double , double3 >, divScalarImpl<float4 , double , double4 >}
220
+ {divScalarImpl<float , double , double >, divScalarImpl<float2 , double , double2 >, divScalarImpl<float3 , double , double3 >, divScalarImpl<float4 , double , double4Compat >}
219
221
},
220
222
{
221
223
{0 /* divScalarImpl<double, double, uchar>*/ , 0 /* divScalarImpl<double2, double, uchar2>*/ , 0 /* divScalarImpl<double3, double, uchar3>*/ , 0 /* divScalarImpl<double4, double, uchar4>*/ },
@@ -224,7 +226,7 @@ void divScalar(const GpuMat& src, cv::Scalar val, bool inv, GpuMat& dst, const G
224
226
{0 /* divScalarImpl<double, double, short>*/ , 0 /* divScalarImpl<double2, double, short2>*/ , 0 /* divScalarImpl<double3, double, short3>*/ , 0 /* divScalarImpl<double4, double, short4>*/ },
225
227
{0 /* divScalarImpl<double, double, int>*/ , 0 /* divScalarImpl<double2, double, int2>*/ , 0 /* divScalarImpl<double3, double, int3>*/ , 0 /* divScalarImpl<double4, double, int4>*/ },
226
228
{0 /* divScalarImpl<double, double, float>*/ , 0 /* divScalarImpl<double2, double, float2>*/ , 0 /* divScalarImpl<double3, double, float3>*/ , 0 /* divScalarImpl<double4, double, float4>*/ },
227
- {divScalarImpl<double , double , double >, divScalarImpl<double2 , double , double2 >, divScalarImpl<double3 , double , double3 >, divScalarImpl<double4 , double , double4 >}
229
+ {divScalarImpl<double , double , double >, divScalarImpl<double2 , double , double2 >, divScalarImpl<double3 , double , double3 >, divScalarImpl<double4Compat , double , double4Compat >}
228
230
}
229
231
};
230
232
0 commit comments