@@ -320,6 +320,65 @@ CUDA_TEST_P(GpuMat_ConvertTo, WithScaling)
320
320
}
321
321
}
322
322
323
+ CUDA_TEST_P (GpuMat_ConvertTo, InplaceWithOutScaling)
324
+ {
325
+ cv::Mat src = randomMat (size, depth1);
326
+
327
+ if ((depth1 == CV_64F || depth2 == CV_64F) && !supportFeature (devInfo, cv::cuda::NATIVE_DOUBLE))
328
+ {
329
+ try
330
+ {
331
+ cv::cuda::GpuMat d_srcDst = loadMat (src);
332
+ d_srcDst.convertTo (d_srcDst, depth2);
333
+ }
334
+ catch (const cv::Exception& e)
335
+ {
336
+ ASSERT_EQ (cv::Error::StsUnsupportedFormat, e.code );
337
+ }
338
+ }
339
+ else
340
+ {
341
+ cv::cuda::GpuMat d_srcDst = loadMat (src, useRoi);
342
+ d_srcDst.convertTo (d_srcDst, depth2);
343
+
344
+ cv::Mat dst_gold;
345
+ src.convertTo (dst_gold, depth2);
346
+
347
+ EXPECT_MAT_NEAR (dst_gold, d_srcDst, depth2 < CV_32F ? 1.0 : 1e-4 );
348
+ }
349
+ }
350
+
351
+
352
+ CUDA_TEST_P (GpuMat_ConvertTo, InplaceWithScaling)
353
+ {
354
+ cv::Mat src = randomMat (size, depth1);
355
+ double a = randomDouble (0.0 , 1.0 );
356
+ double b = randomDouble (-10.0 , 10.0 );
357
+
358
+ if ((depth1 == CV_64F || depth2 == CV_64F) && !supportFeature (devInfo, cv::cuda::NATIVE_DOUBLE))
359
+ {
360
+ try
361
+ {
362
+ cv::cuda::GpuMat d_srcDst = loadMat (src);
363
+ d_srcDst.convertTo (d_srcDst, depth2, a, b);
364
+ }
365
+ catch (const cv::Exception& e)
366
+ {
367
+ ASSERT_EQ (cv::Error::StsUnsupportedFormat, e.code );
368
+ }
369
+ }
370
+ else
371
+ {
372
+ cv::cuda::GpuMat d_srcDst = loadMat (src, useRoi);
373
+ d_srcDst.convertTo (d_srcDst, depth2, a, b);
374
+
375
+ cv::Mat dst_gold;
376
+ src.convertTo (dst_gold, depth2, a, b);
377
+
378
+ EXPECT_MAT_NEAR (dst_gold, d_srcDst, depth2 < CV_32F ? 1.0 : 1e-4 );
379
+ }
380
+ }
381
+
323
382
INSTANTIATE_TEST_CASE_P (CUDA, GpuMat_ConvertTo, testing::Combine(
324
383
ALL_DEVICES,
325
384
DIFFERENT_SIZES,
0 commit comments