1
/*M///////////////////////////////////////////////////////////////////////////////////////
3
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
5
// By downloading, copying, installing or using the software you agree to this license.
6
// If you do not agree to this license, do not download, install,
7
// copy or use the software.
11
// For Open Source Computer Vision Library
13
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
14
// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
15
// Third party copyrights are property of their respective owners.
17
// Redistribution and use in source and binary forms, with or without modification,
18
// are permitted provided that the following conditions are met:
20
// * Redistribution's of source code must retain the above copyright notice,
21
// this list of conditions and the following disclaimer.
23
// * Redistribution's in binary form must reproduce the above copyright notice,
24
// this list of conditions and the following disclaimer in the documentation
25
// and/or other materials provided with the distribution.
27
// * The name of the copyright holders may not be used to endorse or promote products
28
// derived from this software without specific prior written permission.
30
// This software is provided by the copyright holders and contributors "as is" and
31
// any express or implied warranties, including, but not limited to, the implied
32
// warranties of merchantability and fitness for a particular purpose are disclaimed.
33
// In no event shall the Intel Corporation or contributors be liable for any direct,
34
// indirect, incidental, special, exemplary, or consequential damages
35
// (including, but not limited to, procurement of substitute goods or services;
36
// loss of use, data, or profits; or business interruption) however caused
37
// and on any theory of liability, whether in contract, strict liability,
38
// or tort (including negligence or otherwise) arising in any way out of
39
// the use of this software, even if advised of the possibility of such damage.
43
#include "test_precomp.hpp"
47
using namespace cvtest;
49
///////////////////////////////////////////////////////////////////////////////////////////////////////
52
PARAM_TEST_CASE(CvtColor, cv::cuda::DeviceInfo, cv::Size, MatDepth, UseRoi)
54
cv::cuda::DeviceInfo devInfo;
63
devInfo = GET_PARAM(0);
66
useRoi = GET_PARAM(3);
68
cv::cuda::setDevice(devInfo.deviceID());
70
img = randomMat(size, CV_MAKE_TYPE(depth, 3), 0.0, depth == CV_32F ? 1.0 : 255.0);
74
CUDA_TEST_P(CvtColor, BGR2RGB)
79
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2RGB);
82
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2RGB);
84
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
87
CUDA_TEST_P(CvtColor, BGR2RGBA)
92
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2RGBA);
95
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2RGBA);
97
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
100
CUDA_TEST_P(CvtColor, BGR2BGRA)
104
cv::cuda::GpuMat dst;
105
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2BGRA);
108
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2BGRA);
110
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
113
CUDA_TEST_P(CvtColor, BGRA2RGB)
116
cv::cvtColor(img, src, cv::COLOR_BGR2BGRA);
118
cv::cuda::GpuMat dst;
119
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGRA2RGB);
122
cv::cvtColor(src, dst_gold, cv::COLOR_BGRA2RGB);
124
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
127
CUDA_TEST_P(CvtColor, BGRA2BGR)
130
cv::cvtColor(img, src, cv::COLOR_BGR2BGRA);
132
cv::cuda::GpuMat dst;
133
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGRA2BGR);
136
cv::cvtColor(src, dst_gold, cv::COLOR_BGRA2BGR);
138
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
141
CUDA_TEST_P(CvtColor, BGRA2RGBA)
144
cv::cvtColor(img, src, cv::COLOR_BGR2BGRA);
146
cv::cuda::GpuMat dst;
147
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGRA2RGBA);
150
cv::cvtColor(src, dst_gold, cv::COLOR_BGRA2RGBA);
152
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
155
CUDA_TEST_P(CvtColor, BGR2GRAY)
159
cv::cuda::GpuMat dst;
160
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2GRAY);
163
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2GRAY);
165
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
168
CUDA_TEST_P(CvtColor, RGB2GRAY)
172
cv::cuda::GpuMat dst;
173
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2GRAY);
176
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2GRAY);
178
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
181
CUDA_TEST_P(CvtColor, GRAY2BGR)
184
cv::cvtColor(img, src, cv::COLOR_BGR2GRAY);
186
cv::cuda::GpuMat dst;
187
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_GRAY2BGR);
190
cv::cvtColor(src, dst_gold, cv::COLOR_GRAY2BGR);
192
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
195
CUDA_TEST_P(CvtColor, GRAY2BGRA)
198
cv::cvtColor(img, src, cv::COLOR_BGR2GRAY);
200
cv::cuda::GpuMat dst;
201
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_GRAY2BGRA, 4);
204
cv::cvtColor(src, dst_gold, cv::COLOR_GRAY2BGRA, 4);
206
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
209
CUDA_TEST_P(CvtColor, BGRA2GRAY)
212
cv::cvtColor(img, src, cv::COLOR_BGR2BGRA);
214
cv::cuda::GpuMat dst;
215
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGRA2GRAY);
218
cv::cvtColor(src, dst_gold, cv::COLOR_BGRA2GRAY);
220
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
223
CUDA_TEST_P(CvtColor, RGBA2GRAY)
226
cv::cvtColor(img, src, cv::COLOR_BGR2RGBA);
228
cv::cuda::GpuMat dst;
229
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGBA2GRAY);
232
cv::cvtColor(src, dst_gold, cv::COLOR_RGBA2GRAY);
234
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
237
CUDA_TEST_P(CvtColor, BGR2BGR565)
244
cv::cuda::GpuMat dst;
245
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2BGR565);
248
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2BGR565);
250
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
253
CUDA_TEST_P(CvtColor, RGB2BGR565)
260
cv::cuda::GpuMat dst;
261
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2BGR565);
264
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2BGR565);
266
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
269
CUDA_TEST_P(CvtColor, BGR5652BGR)
275
cv::cvtColor(img, src, cv::COLOR_BGR2BGR565);
277
cv::cuda::GpuMat dst;
278
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR5652BGR);
281
cv::cvtColor(src, dst_gold, cv::COLOR_BGR5652BGR);
283
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
286
CUDA_TEST_P(CvtColor, BGR5652RGB)
292
cv::cvtColor(img, src, cv::COLOR_BGR2BGR565);
294
cv::cuda::GpuMat dst;
295
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR5652RGB);
298
cv::cvtColor(src, dst_gold, cv::COLOR_BGR5652RGB);
300
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
303
CUDA_TEST_P(CvtColor, BGRA2BGR565)
309
cv::cvtColor(img, src, cv::COLOR_BGR2BGRA);
311
cv::cuda::GpuMat dst;
312
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGRA2BGR565);
315
cv::cvtColor(src, dst_gold, cv::COLOR_BGRA2BGR565);
317
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
320
CUDA_TEST_P(CvtColor, RGBA2BGR565)
326
cv::cvtColor(img, src, cv::COLOR_BGR2RGBA);
328
cv::cuda::GpuMat dst;
329
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGBA2BGR565);
332
cv::cvtColor(src, dst_gold, cv::COLOR_RGBA2BGR565);
334
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
337
CUDA_TEST_P(CvtColor, BGR5652BGRA)
343
cv::cvtColor(img, src, cv::COLOR_BGR2BGR565);
345
cv::cuda::GpuMat dst;
346
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR5652BGRA, 4);
349
cv::cvtColor(src, dst_gold, cv::COLOR_BGR5652BGRA, 4);
351
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
354
CUDA_TEST_P(CvtColor, BGR5652RGBA)
360
cv::cvtColor(img, src, cv::COLOR_BGR2BGR565);
362
cv::cuda::GpuMat dst;
363
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR5652RGBA, 4);
366
cv::cvtColor(src, dst_gold, cv::COLOR_BGR5652RGBA, 4);
368
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
371
CUDA_TEST_P(CvtColor, GRAY2BGR565)
377
cv::cvtColor(img, src, cv::COLOR_BGR2GRAY);
379
cv::cuda::GpuMat dst;
380
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_GRAY2BGR565);
383
cv::cvtColor(src, dst_gold, cv::COLOR_GRAY2BGR565);
385
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
388
CUDA_TEST_P(CvtColor, BGR5652GRAY)
394
cv::cvtColor(img, src, cv::COLOR_BGR2BGR565);
396
cv::cuda::GpuMat dst;
397
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR5652GRAY);
400
cv::cvtColor(src, dst_gold, cv::COLOR_BGR5652GRAY);
402
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
405
CUDA_TEST_P(CvtColor, BGR2BGR555)
412
cv::cuda::GpuMat dst;
413
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2BGR555);
416
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2BGR555);
418
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
421
CUDA_TEST_P(CvtColor, RGB2BGR555)
428
cv::cuda::GpuMat dst;
429
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2BGR555);
432
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2BGR555);
434
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
437
CUDA_TEST_P(CvtColor, BGR5552BGR)
443
cv::cvtColor(img, src, cv::COLOR_BGR2BGR555);
445
cv::cuda::GpuMat dst;
446
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR5552BGR);
449
cv::cvtColor(src, dst_gold, cv::COLOR_BGR5552BGR);
451
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
454
CUDA_TEST_P(CvtColor, BGR5552RGB)
460
cv::cvtColor(img, src, cv::COLOR_BGR2BGR555);
462
cv::cuda::GpuMat dst;
463
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR5552RGB);
466
cv::cvtColor(src, dst_gold, cv::COLOR_BGR5552RGB);
468
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
471
CUDA_TEST_P(CvtColor, BGRA2BGR555)
477
cv::cvtColor(img, src, cv::COLOR_BGR2BGRA);
479
cv::cuda::GpuMat dst;
480
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGRA2BGR555);
483
cv::cvtColor(src, dst_gold, cv::COLOR_BGRA2BGR555);
485
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
488
CUDA_TEST_P(CvtColor, RGBA2BGR555)
494
cv::cvtColor(img, src, cv::COLOR_BGR2RGBA);
496
cv::cuda::GpuMat dst;
497
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGBA2BGR555);
500
cv::cvtColor(src, dst_gold, cv::COLOR_RGBA2BGR555);
502
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
505
CUDA_TEST_P(CvtColor, BGR5552BGRA)
511
cv::cvtColor(img, src, cv::COLOR_BGR2BGR555);
513
cv::cuda::GpuMat dst;
514
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR5552BGRA, 4);
517
cv::cvtColor(src, dst_gold, cv::COLOR_BGR5552BGRA, 4);
519
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
522
CUDA_TEST_P(CvtColor, BGR5552RGBA)
528
cv::cvtColor(img, src, cv::COLOR_BGR2BGR555);
530
cv::cuda::GpuMat dst;
531
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR5552RGBA, 4);
534
cv::cvtColor(src, dst_gold, cv::COLOR_BGR5552RGBA, 4);
536
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
539
CUDA_TEST_P(CvtColor, GRAY2BGR555)
545
cv::cvtColor(img, src, cv::COLOR_BGR2GRAY);
547
cv::cuda::GpuMat dst;
548
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_GRAY2BGR555);
551
cv::cvtColor(src, dst_gold, cv::COLOR_GRAY2BGR555);
553
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
556
CUDA_TEST_P(CvtColor, BGR5552GRAY)
562
cv::cvtColor(img, src, cv::COLOR_BGR2BGR555);
564
cv::cuda::GpuMat dst;
565
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR5552GRAY);
568
cv::cvtColor(src, dst_gold, cv::COLOR_BGR5552GRAY);
570
EXPECT_MAT_NEAR(dst_gold, dst, 0.0);
573
CUDA_TEST_P(CvtColor, BGR2XYZ)
577
cv::cuda::GpuMat dst;
578
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2XYZ);
581
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2XYZ);
583
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
586
CUDA_TEST_P(CvtColor, RGB2XYZ)
590
cv::cuda::GpuMat dst;
591
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2XYZ);
594
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2XYZ);
596
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
599
CUDA_TEST_P(CvtColor, BGR2XYZ4)
603
cv::cuda::GpuMat dst;
604
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2XYZ, 4);
606
ASSERT_EQ(4, dst.channels());
609
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2XYZ);
614
cv::split(h_dst, channels);
615
cv::merge(channels, 3, h_dst);
617
EXPECT_MAT_NEAR(dst_gold, h_dst, 1e-5);
620
CUDA_TEST_P(CvtColor, BGRA2XYZ4)
623
cv::cvtColor(img, src, cv::COLOR_BGR2BGRA);
625
cv::cuda::GpuMat dst;
626
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2XYZ, 4);
628
ASSERT_EQ(4, dst.channels());
631
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2XYZ);
636
cv::split(h_dst, channels);
637
cv::merge(channels, 3, h_dst);
639
EXPECT_MAT_NEAR(dst_gold, h_dst, 1e-5);
642
CUDA_TEST_P(CvtColor, XYZ2BGR)
645
cv::cvtColor(img, src, cv::COLOR_BGR2XYZ);
647
cv::cuda::GpuMat dst;
648
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_XYZ2BGR);
651
cv::cvtColor(src, dst_gold, cv::COLOR_XYZ2BGR);
653
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
656
CUDA_TEST_P(CvtColor, XYZ2RGB)
659
cv::cvtColor(img, src, cv::COLOR_BGR2XYZ);
661
cv::cuda::GpuMat dst;
662
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_XYZ2RGB);
665
cv::cvtColor(src, dst_gold, cv::COLOR_XYZ2RGB);
667
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
670
CUDA_TEST_P(CvtColor, XYZ42BGR)
673
cv::cvtColor(img, src, cv::COLOR_BGR2XYZ);
676
cv::cvtColor(src, dst_gold, cv::COLOR_XYZ2BGR);
679
cv::split(src, channels);
680
channels[3] = cv::Mat(src.size(), depth, cv::Scalar::all(0));
681
cv::merge(channels, 4, src);
683
cv::cuda::GpuMat dst;
684
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_XYZ2BGR);
686
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
689
CUDA_TEST_P(CvtColor, XYZ42BGRA)
692
cv::cvtColor(img, src, cv::COLOR_BGR2XYZ);
695
cv::cvtColor(src, dst_gold, cv::COLOR_XYZ2BGR, 4);
698
cv::split(src, channels);
699
channels[3] = cv::Mat(src.size(), depth, cv::Scalar::all(0));
700
cv::merge(channels, 4, src);
702
cv::cuda::GpuMat dst;
703
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_XYZ2BGR, 4);
705
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
708
CUDA_TEST_P(CvtColor, BGR2YCrCb)
712
cv::cuda::GpuMat dst;
713
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2YCrCb);
716
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2YCrCb);
718
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
721
CUDA_TEST_P(CvtColor, RGB2YCrCb)
725
cv::cuda::GpuMat dst;
726
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2YCrCb);
729
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2YCrCb);
731
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
734
CUDA_TEST_P(CvtColor, BGR2YCrCb4)
738
cv::cuda::GpuMat dst;
739
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2YCrCb, 4);
741
ASSERT_EQ(4, dst.channels());
744
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2YCrCb);
749
cv::split(h_dst, channels);
750
cv::merge(channels, 3, h_dst);
752
EXPECT_MAT_NEAR(dst_gold, h_dst, depth == CV_32F ? 1e-2 : 1);
755
CUDA_TEST_P(CvtColor, RGBA2YCrCb4)
758
cv::cvtColor(img, src, cv::COLOR_BGR2RGBA);
760
cv::cuda::GpuMat dst;
761
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2YCrCb, 4);
763
ASSERT_EQ(4, dst.channels());
766
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2YCrCb);
771
cv::split(h_dst, channels);
772
cv::merge(channels, 3, h_dst);
774
EXPECT_MAT_NEAR(dst_gold, h_dst, depth == CV_32F ? 1e-2 : 1);
777
CUDA_TEST_P(CvtColor, YCrCb2BGR)
780
cv::cvtColor(img, src, cv::COLOR_BGR2YCrCb);
782
cv::cuda::GpuMat dst;
783
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_YCrCb2BGR);
786
cv::cvtColor(src, dst_gold, cv::COLOR_YCrCb2BGR);
788
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
791
CUDA_TEST_P(CvtColor, YCrCb2RGB)
794
cv::cvtColor(img, src, cv::COLOR_BGR2YCrCb);
796
cv::cuda::GpuMat dst;
797
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_YCrCb2RGB);
800
cv::cvtColor(src, dst_gold, cv::COLOR_YCrCb2RGB);
802
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
805
CUDA_TEST_P(CvtColor, YCrCb42RGB)
808
cv::cvtColor(img, src, cv::COLOR_BGR2YCrCb);
811
cv::cvtColor(src, dst_gold, cv::COLOR_YCrCb2RGB);
814
cv::split(src, channels);
815
channels[3] = cv::Mat(src.size(), depth, cv::Scalar::all(0));
816
cv::merge(channels, 4, src);
818
cv::cuda::GpuMat dst;
819
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_YCrCb2RGB);
821
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
824
CUDA_TEST_P(CvtColor, YCrCb42RGBA)
827
cv::cvtColor(img, src, cv::COLOR_BGR2YCrCb);
830
cv::cvtColor(src, dst_gold, cv::COLOR_YCrCb2RGB, 4);
833
cv::split(src, channels);
834
channels[3] = cv::Mat(src.size(), depth, cv::Scalar::all(0));
835
cv::merge(channels, 4, src);
837
cv::cuda::GpuMat dst;
838
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_YCrCb2RGB, 4);
840
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
843
CUDA_TEST_P(CvtColor, BGR2HSV)
850
cv::cuda::GpuMat dst;
851
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2HSV);
854
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2HSV);
856
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
859
CUDA_TEST_P(CvtColor, RGB2HSV)
866
cv::cuda::GpuMat dst;
867
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2HSV);
870
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2HSV);
872
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
875
CUDA_TEST_P(CvtColor, RGB2HSV4)
882
cv::cuda::GpuMat dst;
883
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2HSV, 4);
885
ASSERT_EQ(4, dst.channels());
888
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2HSV);
893
cv::split(h_dst, channels);
894
cv::merge(channels, 3, h_dst);
896
EXPECT_MAT_NEAR(dst_gold, h_dst, depth == CV_32F ? 1e-2 : 1);
899
CUDA_TEST_P(CvtColor, RGBA2HSV4)
905
cv::cvtColor(img, src, cv::COLOR_BGR2RGBA);
907
cv::cuda::GpuMat dst;
908
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2HSV, 4);
910
ASSERT_EQ(4, dst.channels());
913
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2HSV);
918
cv::split(h_dst, channels);
919
cv::merge(channels, 3, h_dst);
921
EXPECT_MAT_NEAR(dst_gold, h_dst, depth == CV_32F ? 1e-2 : 1);
924
CUDA_TEST_P(CvtColor, BGR2HLS)
931
cv::cuda::GpuMat dst;
932
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2HLS);
935
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2HLS);
937
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
940
CUDA_TEST_P(CvtColor, RGB2HLS)
947
cv::cuda::GpuMat dst;
948
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2HLS);
951
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2HLS);
953
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
956
CUDA_TEST_P(CvtColor, RGB2HLS4)
963
cv::cuda::GpuMat dst;
964
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2HLS, 4);
966
ASSERT_EQ(4, dst.channels());
969
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2HLS);
974
cv::split(h_dst, channels);
975
cv::merge(channels, 3, h_dst);
977
EXPECT_MAT_NEAR(dst_gold, h_dst, depth == CV_32F ? 1e-2 : 1);
980
CUDA_TEST_P(CvtColor, RGBA2HLS4)
986
cv::cvtColor(img, src, cv::COLOR_BGR2RGBA);
988
cv::cuda::GpuMat dst;
989
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2HLS, 4);
991
ASSERT_EQ(4, dst.channels());
994
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2HLS);
999
cv::split(h_dst, channels);
1000
cv::merge(channels, 3, h_dst);
1002
EXPECT_MAT_NEAR(dst_gold, h_dst, depth == CV_32F ? 1e-2 : 1);
1005
CUDA_TEST_P(CvtColor, HSV2BGR)
1007
if (depth == CV_16U)
1011
cv::cvtColor(img, src, cv::COLOR_BGR2HSV);
1013
cv::cuda::GpuMat dst;
1014
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_HSV2BGR);
1017
cv::cvtColor(src, dst_gold, cv::COLOR_HSV2BGR);
1019
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1022
CUDA_TEST_P(CvtColor, HSV2RGB)
1024
if (depth == CV_16U)
1028
cv::cvtColor(img, src, cv::COLOR_BGR2HSV);
1030
cv::cuda::GpuMat dst;
1031
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_HSV2RGB);
1034
cv::cvtColor(src, dst_gold, cv::COLOR_HSV2RGB);
1036
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1039
CUDA_TEST_P(CvtColor, HSV42BGR)
1041
if (depth == CV_16U)
1045
cv::cvtColor(img, src, cv::COLOR_BGR2HSV);
1048
cv::cvtColor(src, dst_gold, cv::COLOR_HSV2BGR);
1050
cv::Mat channels[4];
1051
cv::split(src, channels);
1052
channels[3] = cv::Mat(src.size(), depth, cv::Scalar::all(0));
1053
cv::merge(channels, 4, src);
1055
cv::cuda::GpuMat dst;
1056
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_HSV2BGR);
1058
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1061
CUDA_TEST_P(CvtColor, HSV42BGRA)
1063
if (depth == CV_16U)
1067
cv::cvtColor(img, src, cv::COLOR_BGR2HSV);
1070
cv::cvtColor(src, dst_gold, cv::COLOR_HSV2BGR, 4);
1072
cv::Mat channels[4];
1073
cv::split(src, channels);
1074
channels[3] = cv::Mat(src.size(), depth, cv::Scalar::all(0));
1075
cv::merge(channels, 4, src);
1077
cv::cuda::GpuMat dst;
1078
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_HSV2BGR, 4);
1080
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1083
CUDA_TEST_P(CvtColor, HLS2BGR)
1085
if (depth == CV_16U)
1089
cv::cvtColor(img, src, cv::COLOR_BGR2HLS);
1091
cv::cuda::GpuMat dst;
1092
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_HLS2BGR);
1095
cv::cvtColor(src, dst_gold, cv::COLOR_HLS2BGR);
1097
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1100
CUDA_TEST_P(CvtColor, HLS2RGB)
1102
if (depth == CV_16U)
1106
cv::cvtColor(img, src, cv::COLOR_BGR2HLS);
1108
cv::cuda::GpuMat dst;
1109
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_HLS2RGB);
1112
cv::cvtColor(src, dst_gold, cv::COLOR_HLS2RGB);
1114
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1117
CUDA_TEST_P(CvtColor, HLS42RGB)
1119
if (depth == CV_16U)
1123
cv::cvtColor(img, src, cv::COLOR_BGR2HLS);
1126
cv::cvtColor(src, dst_gold, cv::COLOR_HLS2RGB);
1128
cv::Mat channels[4];
1129
cv::split(src, channels);
1130
channels[3] = cv::Mat(src.size(), depth, cv::Scalar::all(0));
1131
cv::merge(channels, 4, src);
1133
cv::cuda::GpuMat dst;
1134
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_HLS2RGB);
1136
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1139
CUDA_TEST_P(CvtColor, HLS42RGBA)
1141
if (depth == CV_16U)
1145
cv::cvtColor(img, src, cv::COLOR_BGR2HLS);
1148
cv::cvtColor(src, dst_gold, cv::COLOR_HLS2RGB, 4);
1150
cv::Mat channels[4];
1151
cv::split(src, channels);
1152
channels[3] = cv::Mat(src.size(), depth, cv::Scalar::all(0));
1153
cv::merge(channels, 4, src);
1156
cv::cuda::GpuMat dst;
1157
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_HLS2RGB, 4);
1159
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1162
CUDA_TEST_P(CvtColor, BGR2HSV_FULL)
1164
if (depth == CV_16U)
1169
cv::cuda::GpuMat dst;
1170
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2HSV_FULL);
1173
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2HSV_FULL);
1175
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1178
CUDA_TEST_P(CvtColor, RGB2HSV_FULL)
1180
if (depth == CV_16U)
1185
cv::cuda::GpuMat dst;
1186
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2HSV_FULL);
1189
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2HSV_FULL);
1191
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1194
CUDA_TEST_P(CvtColor, RGB2HSV4_FULL)
1196
if (depth == CV_16U)
1201
cv::cuda::GpuMat dst;
1202
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2HSV_FULL, 4);
1204
ASSERT_EQ(4, dst.channels());
1207
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2HSV_FULL);
1211
cv::Mat channels[4];
1212
cv::split(h_dst, channels);
1213
cv::merge(channels, 3, h_dst);
1215
EXPECT_MAT_NEAR(dst_gold, h_dst, depth == CV_32F ? 1e-2 : 1);
1218
CUDA_TEST_P(CvtColor, RGBA2HSV4_FULL)
1220
if (depth == CV_16U)
1224
cv::cvtColor(img, src, cv::COLOR_BGR2RGBA);
1226
cv::cuda::GpuMat dst;
1227
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2HSV_FULL, 4);
1229
ASSERT_EQ(4, dst.channels());
1232
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2HSV_FULL);
1236
cv::Mat channels[4];
1237
cv::split(h_dst, channels);
1238
cv::merge(channels, 3, h_dst);
1240
EXPECT_MAT_NEAR(dst_gold, h_dst, depth == CV_32F ? 1e-2 : 1);
1243
CUDA_TEST_P(CvtColor, BGR2HLS_FULL)
1245
if (depth == CV_16U)
1250
cv::cuda::GpuMat dst;
1251
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2HLS_FULL);
1254
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2HLS_FULL);
1256
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1259
CUDA_TEST_P(CvtColor, RGB2HLS_FULL)
1261
if (depth == CV_16U)
1266
cv::cuda::GpuMat dst;
1267
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2HLS_FULL);
1270
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2HLS_FULL);
1272
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1275
CUDA_TEST_P(CvtColor, RGB2HLS4_FULL)
1277
if (depth == CV_16U)
1282
cv::cuda::GpuMat dst;
1283
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2HLS_FULL, 4);
1285
ASSERT_EQ(4, dst.channels());
1288
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2HLS_FULL);
1292
cv::Mat channels[4];
1293
cv::split(h_dst, channels);
1294
cv::merge(channels, 3, h_dst);
1296
EXPECT_MAT_NEAR(dst_gold, h_dst, depth == CV_32F ? 1e-2 : 1);
1299
CUDA_TEST_P(CvtColor, RGBA2HLS4_FULL)
1301
if (depth == CV_16U)
1305
cv::cvtColor(img, src, cv::COLOR_BGR2RGBA);
1307
cv::cuda::GpuMat dst;
1308
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2HLS_FULL, 4);
1310
ASSERT_EQ(4, dst.channels());
1313
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2HLS_FULL);
1317
cv::Mat channels[4];
1318
cv::split(h_dst, channels);
1319
cv::merge(channels, 3, h_dst);
1321
EXPECT_MAT_NEAR(dst_gold, h_dst, depth == CV_32F ? 1e-2 : 1);
1324
CUDA_TEST_P(CvtColor, HSV2BGR_FULL)
1326
if (depth == CV_16U)
1330
cv::cvtColor(img, src, cv::COLOR_BGR2HSV_FULL);
1332
cv::cuda::GpuMat dst;
1333
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_HSV2BGR_FULL);
1336
cv::cvtColor(src, dst_gold, cv::COLOR_HSV2BGR_FULL);
1338
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1341
CUDA_TEST_P(CvtColor, HSV2RGB_FULL)
1343
if (depth == CV_16U)
1347
cv::cvtColor(img, src, cv::COLOR_BGR2HSV_FULL);
1349
cv::cuda::GpuMat dst;
1350
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_HSV2RGB_FULL);
1353
cv::cvtColor(src, dst_gold, cv::COLOR_HSV2RGB_FULL);
1355
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1358
CUDA_TEST_P(CvtColor, HSV42RGB_FULL)
1360
if (depth == CV_16U)
1364
cv::cvtColor(img, src, cv::COLOR_BGR2HSV_FULL);
1367
cv::cvtColor(src, dst_gold, cv::COLOR_HSV2RGB_FULL);
1369
cv::Mat channels[4];
1370
cv::split(src, channels);
1371
channels[3] = cv::Mat(src.size(), depth, cv::Scalar::all(0));
1372
cv::merge(channels, 4, src);
1374
cv::cuda::GpuMat dst;
1375
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_HSV2RGB_FULL);
1377
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1380
CUDA_TEST_P(CvtColor, HSV42RGBA_FULL)
1382
if (depth == CV_16U)
1386
cv::cvtColor(img, src, cv::COLOR_BGR2HSV_FULL);
1389
cv::cvtColor(src, dst_gold, cv::COLOR_HSV2RGB_FULL, 4);
1391
cv::Mat channels[4];
1392
cv::split(src, channels);
1393
channels[3] = cv::Mat(src.size(), depth, cv::Scalar::all(0));
1394
cv::merge(channels, 4, src);
1396
cv::cuda::GpuMat dst;
1397
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_HSV2RGB_FULL, 4);
1399
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1402
CUDA_TEST_P(CvtColor, HLS2BGR_FULL)
1404
if (depth == CV_16U)
1408
cv::cvtColor(img, src, cv::COLOR_BGR2HLS_FULL);
1410
cv::cuda::GpuMat dst;
1411
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_HLS2BGR_FULL);
1414
cv::cvtColor(src, dst_gold, cv::COLOR_HLS2BGR_FULL);
1416
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1419
CUDA_TEST_P(CvtColor, HLS2RGB_FULL)
1421
if (depth == CV_16U)
1425
cv::cvtColor(img, src, cv::COLOR_BGR2HLS_FULL);
1427
cv::cuda::GpuMat dst;
1428
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_HLS2RGB_FULL);
1431
cv::cvtColor(src, dst_gold, cv::COLOR_HLS2RGB_FULL);
1433
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1436
CUDA_TEST_P(CvtColor, HLS42RGB_FULL)
1438
if (depth == CV_16U)
1442
cv::cvtColor(img, src, cv::COLOR_BGR2HLS_FULL);
1445
cv::cvtColor(src, dst_gold, cv::COLOR_HLS2RGB_FULL);
1447
cv::Mat channels[4];
1448
cv::split(src, channels);
1449
channels[3] = cv::Mat(src.size(), depth, cv::Scalar::all(0));
1450
cv::merge(channels, 4, src);
1452
cv::cuda::GpuMat dst;
1453
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_HLS2RGB_FULL);
1455
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1458
CUDA_TEST_P(CvtColor, HLS42RGBA_FULL)
1460
if (depth == CV_16U)
1464
cv::cvtColor(img, src, cv::COLOR_BGR2HLS_FULL);
1467
cv::cvtColor(src, dst_gold, cv::COLOR_HLS2RGB_FULL, 4);
1469
cv::Mat channels[4];
1470
cv::split(src, channels);
1471
channels[3] = cv::Mat(src.size(), depth, cv::Scalar::all(0));
1472
cv::merge(channels, 4, src);
1474
cv::cuda::GpuMat dst;
1475
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_HLS2RGB_FULL, 4);
1477
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_32F ? 1e-2 : 1);
1480
CUDA_TEST_P(CvtColor, BGR2YUV)
1484
cv::cuda::GpuMat dst;
1485
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2YUV);
1488
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2YUV);
1490
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
1493
CUDA_TEST_P(CvtColor, RGB2YUV)
1497
cv::cuda::GpuMat dst;
1498
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2YUV);
1501
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2YUV);
1503
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
1506
CUDA_TEST_P(CvtColor, YUV2BGR)
1509
cv::cvtColor(img, src, cv::COLOR_BGR2YUV);
1511
cv::cuda::GpuMat dst;
1512
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_YUV2BGR);
1515
cv::cvtColor(src, dst_gold, cv::COLOR_YUV2BGR);
1517
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
1520
CUDA_TEST_P(CvtColor, YUV42BGR)
1523
cv::cvtColor(img, src, cv::COLOR_BGR2YUV);
1526
cv::cvtColor(src, dst_gold, cv::COLOR_YUV2BGR);
1528
cv::Mat channels[4];
1529
cv::split(src, channels);
1530
channels[3] = cv::Mat(src.size(), depth, cv::Scalar::all(0));
1531
cv::merge(channels, 4, src);
1533
cv::cuda::GpuMat dst;
1534
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_YUV2BGR);
1536
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
1539
CUDA_TEST_P(CvtColor, YUV42BGRA)
1542
cv::cvtColor(img, src, cv::COLOR_BGR2YUV);
1545
cv::cvtColor(src, dst_gold, cv::COLOR_YUV2BGR, 4);
1547
cv::Mat channels[4];
1548
cv::split(src, channels);
1549
channels[3] = cv::Mat(src.size(), depth, cv::Scalar::all(0));
1550
cv::merge(channels, 4, src);
1552
cv::cuda::GpuMat dst;
1553
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_YUV2BGR, 4);
1555
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
1558
CUDA_TEST_P(CvtColor, YUV2RGB)
1561
cv::cvtColor(img, src, cv::COLOR_RGB2YUV);
1563
cv::cuda::GpuMat dst;
1564
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_YUV2RGB);
1567
cv::cvtColor(src, dst_gold, cv::COLOR_YUV2RGB);
1569
EXPECT_MAT_NEAR(dst_gold, dst, 1e-5);
1572
CUDA_TEST_P(CvtColor, BGR2YUV4)
1576
cv::cuda::GpuMat dst;
1577
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2YUV, 4);
1579
ASSERT_EQ(4, dst.channels());
1582
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2YUV);
1586
cv::Mat channels[4];
1587
cv::split(h_dst, channels);
1588
cv::merge(channels, 3, h_dst);
1590
EXPECT_MAT_NEAR(dst_gold, h_dst, 1e-5);
1593
CUDA_TEST_P(CvtColor, RGBA2YUV4)
1596
cv::cvtColor(img, src, cv::COLOR_BGR2RGBA);
1598
cv::cuda::GpuMat dst;
1599
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2YUV, 4);
1601
ASSERT_EQ(4, dst.channels());
1604
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2YUV);
1608
cv::Mat channels[4];
1609
cv::split(h_dst, channels);
1610
cv::merge(channels, 3, h_dst);
1612
EXPECT_MAT_NEAR(dst_gold, h_dst, 1e-5);
1615
CUDA_TEST_P(CvtColor, BGR2Lab)
1617
if (depth == CV_16U)
1622
cv::cuda::GpuMat dst;
1623
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2Lab);
1626
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2Lab);
1628
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-3);
1631
CUDA_TEST_P(CvtColor, RGB2Lab)
1633
if (depth == CV_16U)
1638
cv::cuda::GpuMat dst;
1639
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2Lab);
1642
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2Lab);
1644
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-3);
1647
CUDA_TEST_P(CvtColor, BGRA2Lab4)
1649
if (depth == CV_16U)
1653
cv::cvtColor(img, src, cv::COLOR_BGR2RGBA);
1655
cv::cuda::GpuMat dst;
1656
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2Lab, 4);
1658
ASSERT_EQ(4, dst.channels());
1661
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2Lab);
1665
cv::Mat channels[4];
1666
cv::split(h_dst, channels);
1667
cv::merge(channels, 3, h_dst);
1669
EXPECT_MAT_NEAR(dst_gold, h_dst, depth == CV_8U ? 1 : 1e-3);
1672
CUDA_TEST_P(CvtColor, LBGR2Lab)
1674
if (depth == CV_16U)
1679
cv::cuda::GpuMat dst;
1680
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_LBGR2Lab);
1683
cv::cvtColor(src, dst_gold, cv::COLOR_LBGR2Lab);
1685
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-3);
1688
CUDA_TEST_P(CvtColor, LRGB2Lab)
1690
if (depth == CV_16U)
1695
cv::cuda::GpuMat dst;
1696
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_LRGB2Lab);
1699
cv::cvtColor(src, dst_gold, cv::COLOR_LRGB2Lab);
1701
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-3);
1704
CUDA_TEST_P(CvtColor, LBGRA2Lab4)
1706
if (depth == CV_16U)
1710
cv::cvtColor(img, src, cv::COLOR_BGR2RGBA);
1712
cv::cuda::GpuMat dst;
1713
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_LBGR2Lab, 4);
1715
ASSERT_EQ(4, dst.channels());
1718
cv::cvtColor(src, dst_gold, cv::COLOR_LBGR2Lab);
1722
cv::Mat channels[4];
1723
cv::split(h_dst, channels);
1724
cv::merge(channels, 3, h_dst);
1726
EXPECT_MAT_NEAR(dst_gold, h_dst, depth == CV_8U ? 1 : 1e-3);
1729
CUDA_TEST_P(CvtColor, Lab2BGR)
1731
if (depth == CV_16U)
1735
cv::cvtColor(img, src, cv::COLOR_BGR2Lab);
1737
cv::cuda::GpuMat dst;
1738
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_Lab2BGR);
1741
cv::cvtColor(src, dst_gold, cv::COLOR_Lab2BGR);
1743
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-5);
1746
CUDA_TEST_P(CvtColor, Lab2RGB)
1748
if (depth == CV_16U)
1752
cv::cvtColor(img, src, cv::COLOR_BGR2Lab);
1754
cv::cuda::GpuMat dst;
1755
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_Lab2RGB);
1758
cv::cvtColor(src, dst_gold, cv::COLOR_Lab2RGB);
1760
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-5);
1763
CUDA_TEST_P(CvtColor, Lab2BGRA)
1765
if (depth == CV_16U)
1769
cv::cvtColor(img, src, cv::COLOR_BGR2Lab);
1771
cv::cuda::GpuMat dst;
1772
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_Lab2BGR, 4);
1774
ASSERT_EQ(4, dst.channels());
1777
cv::cvtColor(src, dst_gold, cv::COLOR_Lab2BGR, 4);
1779
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-5);
1782
CUDA_TEST_P(CvtColor, Lab2LBGR)
1784
if (depth == CV_16U)
1788
cv::cvtColor(img, src, cv::COLOR_BGR2Lab);
1790
cv::cuda::GpuMat dst;
1791
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_Lab2LBGR);
1794
cv::cvtColor(src, dst_gold, cv::COLOR_Lab2LBGR);
1796
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-5);
1799
CUDA_TEST_P(CvtColor, Lab2LRGB)
1801
if (depth == CV_16U)
1805
cv::cvtColor(img, src, cv::COLOR_BGR2Lab);
1807
cv::cuda::GpuMat dst;
1808
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_Lab2LRGB);
1811
cv::cvtColor(src, dst_gold, cv::COLOR_Lab2LRGB);
1813
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-5);
1816
CUDA_TEST_P(CvtColor, Lab2LRGBA)
1818
if (depth == CV_16U)
1822
cv::cvtColor(img, src, cv::COLOR_BGR2Lab);
1824
cv::cuda::GpuMat dst;
1825
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_Lab2LRGB, 4);
1828
cv::cvtColor(src, dst_gold, cv::COLOR_Lab2LRGB, 4);
1830
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-5);
1833
CUDA_TEST_P(CvtColor, BGR2Luv)
1835
if (depth == CV_16U)
1840
cv::cuda::GpuMat dst;
1841
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2Luv);
1844
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2Luv);
1846
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-3);
1849
CUDA_TEST_P(CvtColor, RGB2Luv)
1851
if (depth == CV_16U)
1856
cv::cuda::GpuMat dst;
1857
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGB2Luv);
1860
cv::cvtColor(src, dst_gold, cv::COLOR_RGB2Luv);
1862
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-3);
1865
CUDA_TEST_P(CvtColor, BGRA2Luv4)
1867
if (depth == CV_16U)
1871
cv::cvtColor(img, src, cv::COLOR_BGR2RGBA);
1873
cv::cuda::GpuMat dst;
1874
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BGR2Luv, 4);
1876
ASSERT_EQ(4, dst.channels());
1879
cv::cvtColor(src, dst_gold, cv::COLOR_BGR2Luv);
1883
cv::Mat channels[4];
1884
cv::split(h_dst, channels);
1885
cv::merge(channels, 3, h_dst);
1887
EXPECT_MAT_NEAR(dst_gold, h_dst, depth == CV_8U ? 1 : 1e-3);
1890
CUDA_TEST_P(CvtColor, LBGR2Luv)
1892
if (depth == CV_16U)
1897
cv::cuda::GpuMat dst;
1898
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_LBGR2Luv);
1901
cv::cvtColor(src, dst_gold, cv::COLOR_LBGR2Luv);
1903
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-3);
1906
CUDA_TEST_P(CvtColor, LRGB2Luv)
1908
if (depth == CV_16U)
1913
cv::cuda::GpuMat dst;
1914
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_LRGB2Luv);
1917
cv::cvtColor(src, dst_gold, cv::COLOR_LRGB2Luv);
1919
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-3);
1922
CUDA_TEST_P(CvtColor, LBGRA2Luv4)
1924
if (depth == CV_16U)
1928
cv::cvtColor(img, src, cv::COLOR_BGR2RGBA);
1930
cv::cuda::GpuMat dst;
1931
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_LBGR2Luv, 4);
1933
ASSERT_EQ(4, dst.channels());
1936
cv::cvtColor(src, dst_gold, cv::COLOR_LBGR2Luv);
1940
cv::Mat channels[4];
1941
cv::split(h_dst, channels);
1942
cv::merge(channels, 3, h_dst);
1944
EXPECT_MAT_NEAR(dst_gold, h_dst, depth == CV_8U ? 1 : 1e-3);
1947
CUDA_TEST_P(CvtColor, Luv2BGR)
1949
if (depth == CV_16U)
1953
cv::cvtColor(img, src, cv::COLOR_BGR2Luv);
1955
cv::cuda::GpuMat dst;
1956
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_Luv2BGR);
1959
cv::cvtColor(src, dst_gold, cv::COLOR_Luv2BGR);
1961
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-4);
1964
CUDA_TEST_P(CvtColor, Luv2RGB)
1966
if (depth == CV_16U)
1970
cv::cvtColor(img, src, cv::COLOR_BGR2Luv);
1972
cv::cuda::GpuMat dst;
1973
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_Luv2RGB);
1976
cv::cvtColor(src, dst_gold, cv::COLOR_Luv2RGB);
1978
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-4);
1981
CUDA_TEST_P(CvtColor, Luv2BGRA)
1983
if (depth == CV_16U)
1987
cv::cvtColor(img, src, cv::COLOR_BGR2Luv);
1989
cv::cuda::GpuMat dst;
1990
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_Luv2BGR, 4);
1992
ASSERT_EQ(4, dst.channels());
1995
cv::cvtColor(src, dst_gold, cv::COLOR_Luv2BGR, 4);
1997
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-4);
2000
CUDA_TEST_P(CvtColor, Luv2LBGR)
2002
if (depth == CV_16U)
2006
cv::cvtColor(img, src, cv::COLOR_BGR2Luv);
2008
cv::cuda::GpuMat dst;
2009
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_Luv2LBGR);
2012
cv::cvtColor(src, dst_gold, cv::COLOR_Luv2LBGR);
2014
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-4);
2017
CUDA_TEST_P(CvtColor, Luv2LRGB)
2019
if (depth == CV_16U)
2023
cv::cvtColor(img, src, cv::COLOR_BGR2Luv);
2025
cv::cuda::GpuMat dst;
2026
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_Luv2LRGB);
2029
cv::cvtColor(src, dst_gold, cv::COLOR_Luv2LRGB);
2031
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-4);
2034
CUDA_TEST_P(CvtColor, Luv2LRGBA)
2036
if (depth == CV_16U)
2040
cv::cvtColor(img, src, cv::COLOR_BGR2Luv);
2042
cv::cuda::GpuMat dst;
2043
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_Luv2LRGB, 4);
2046
cv::cvtColor(src, dst_gold, cv::COLOR_Luv2LRGB, 4);
2048
EXPECT_MAT_NEAR(dst_gold, dst, depth == CV_8U ? 1 : 1e-4);
2051
#if defined (CUDA_VERSION) && (CUDA_VERSION >= 5000)
2053
CUDA_TEST_P(CvtColor, RGBA2mRGBA)
2058
cv::Mat src = randomMat(size, CV_MAKE_TYPE(depth, 4));
2060
cv::cuda::GpuMat dst = createMat(src.size(), src.type(), useRoi);
2061
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_RGBA2mRGBA);
2064
cv::cvtColor(src, dst_gold, cv::COLOR_RGBA2mRGBA);
2066
EXPECT_MAT_NEAR(dst_gold, dst, 1);
2069
#endif // defined (CUDA_VERSION) && (CUDA_VERSION >= 5000)
2071
CUDA_TEST_P(CvtColor, BayerBG2BGR)
2073
if ((depth != CV_8U && depth != CV_16U) || useRoi)
2076
cv::Mat src = randomMat(size, depth);
2078
cv::cuda::GpuMat dst;
2079
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BayerBG2BGR);
2082
cv::cvtColor(src, dst_gold, cv::COLOR_BayerBG2BGR);
2084
EXPECT_MAT_NEAR(dst_gold(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), dst(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), 0);
2087
CUDA_TEST_P(CvtColor, BayerBG2BGR4)
2089
if ((depth != CV_8U && depth != CV_16U) || useRoi)
2092
cv::Mat src = randomMat(size, depth);
2094
cv::cuda::GpuMat dst;
2095
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BayerBG2BGR, 4);
2097
ASSERT_EQ(4, dst.channels());
2100
cv::cvtColor(src, dst_gold, cv::COLOR_BayerBG2BGR);
2104
cv::cvtColor(dst4, dst3, cv::COLOR_BGRA2BGR);
2107
EXPECT_MAT_NEAR(dst_gold(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), dst3(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), 0);
2110
CUDA_TEST_P(CvtColor, BayerGB2BGR)
2112
if ((depth != CV_8U && depth != CV_16U) || useRoi)
2115
cv::Mat src = randomMat(size, depth);
2117
cv::cuda::GpuMat dst;
2118
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BayerGB2BGR);
2121
cv::cvtColor(src, dst_gold, cv::COLOR_BayerGB2BGR);
2123
EXPECT_MAT_NEAR(dst_gold(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), dst(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), 0);
2126
CUDA_TEST_P(CvtColor, BayerGB2BGR4)
2128
if ((depth != CV_8U && depth != CV_16U) || useRoi)
2131
cv::Mat src = randomMat(size, depth);
2133
cv::cuda::GpuMat dst;
2134
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BayerGB2BGR, 4);
2136
ASSERT_EQ(4, dst.channels());
2139
cv::cvtColor(src, dst_gold, cv::COLOR_BayerGB2BGR);
2143
cv::cvtColor(dst4, dst3, cv::COLOR_BGRA2BGR);
2145
EXPECT_MAT_NEAR(dst_gold(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), dst3(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), 0);
2148
CUDA_TEST_P(CvtColor, BayerRG2BGR)
2150
if ((depth != CV_8U && depth != CV_16U) || useRoi)
2153
cv::Mat src = randomMat(size, depth);
2155
cv::cuda::GpuMat dst;
2156
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BayerRG2BGR);
2159
cv::cvtColor(src, dst_gold, cv::COLOR_BayerRG2BGR);
2161
EXPECT_MAT_NEAR(dst_gold(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), dst(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), 0);
2164
CUDA_TEST_P(CvtColor, BayerRG2BGR4)
2166
if ((depth != CV_8U && depth != CV_16U) || useRoi)
2169
cv::Mat src = randomMat(size, depth);
2171
cv::cuda::GpuMat dst;
2172
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BayerRG2BGR, 4);
2174
ASSERT_EQ(4, dst.channels());
2177
cv::cvtColor(src, dst_gold, cv::COLOR_BayerRG2BGR);
2181
cv::cvtColor(dst4, dst3, cv::COLOR_BGRA2BGR);
2183
EXPECT_MAT_NEAR(dst_gold(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), dst3(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), 0);
2186
CUDA_TEST_P(CvtColor, BayerGR2BGR)
2188
if ((depth != CV_8U && depth != CV_16U) || useRoi)
2191
cv::Mat src = randomMat(size, depth);
2193
cv::cuda::GpuMat dst;
2194
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BayerGR2BGR);
2197
cv::cvtColor(src, dst_gold, cv::COLOR_BayerGR2BGR);
2199
EXPECT_MAT_NEAR(dst_gold(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), dst(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), 0);
2202
CUDA_TEST_P(CvtColor, BayerGR2BGR4)
2204
if ((depth != CV_8U && depth != CV_16U) || useRoi)
2207
cv::Mat src = randomMat(size, depth);
2209
cv::cuda::GpuMat dst;
2210
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BayerGR2BGR, 4);
2212
ASSERT_EQ(4, dst.channels());
2215
cv::cvtColor(src, dst_gold, cv::COLOR_BayerGR2BGR);
2219
cv::cvtColor(dst4, dst3, cv::COLOR_BGRA2BGR);
2221
EXPECT_MAT_NEAR(dst_gold(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), dst3(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), 0);
2224
CUDA_TEST_P(CvtColor, BayerBG2Gray)
2226
if ((depth != CV_8U && depth != CV_16U) || useRoi)
2229
cv::Mat src = randomMat(size, depth);
2231
cv::cuda::GpuMat dst;
2232
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BayerBG2GRAY);
2235
cv::cvtColor(src, dst_gold, cv::COLOR_BayerBG2GRAY);
2237
EXPECT_MAT_NEAR(dst_gold(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), dst(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), 2);
2240
CUDA_TEST_P(CvtColor, BayerGB2Gray)
2242
if ((depth != CV_8U && depth != CV_16U) || useRoi)
2245
cv::Mat src = randomMat(size, depth);
2247
cv::cuda::GpuMat dst;
2248
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BayerGB2GRAY);
2251
cv::cvtColor(src, dst_gold, cv::COLOR_BayerGB2GRAY);
2253
EXPECT_MAT_NEAR(dst_gold(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), dst(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), 2);
2256
CUDA_TEST_P(CvtColor, BayerRG2Gray)
2258
if ((depth != CV_8U && depth != CV_16U) || useRoi)
2261
cv::Mat src = randomMat(size, depth);
2263
cv::cuda::GpuMat dst;
2264
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BayerRG2GRAY);
2267
cv::cvtColor(src, dst_gold, cv::COLOR_BayerRG2GRAY);
2269
EXPECT_MAT_NEAR(dst_gold(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), dst(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), 2);
2272
CUDA_TEST_P(CvtColor, BayerGR2Gray)
2274
if ((depth != CV_8U && depth != CV_16U) || useRoi)
2277
cv::Mat src = randomMat(size, depth);
2279
cv::cuda::GpuMat dst;
2280
cv::cuda::cvtColor(loadMat(src, useRoi), dst, cv::COLOR_BayerGR2GRAY);
2283
cv::cvtColor(src, dst_gold, cv::COLOR_BayerGR2GRAY);
2285
EXPECT_MAT_NEAR(dst_gold(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), dst(cv::Rect(1, 1, dst.cols - 2, dst.rows - 2)), 2);
2288
INSTANTIATE_TEST_CASE_P(CUDA_ImgProc, CvtColor, testing::Combine(
2291
testing::Values(MatDepth(CV_8U), MatDepth(CV_16U), MatDepth(CV_32F)),
2294
///////////////////////////////////////////////////////////////////////////////////////////////////////
2297
struct Demosaicing : testing::TestWithParam<cv::cuda::DeviceInfo>
2299
cv::cuda::DeviceInfo devInfo;
2301
virtual void SetUp()
2303
devInfo = GetParam();
2305
cv::cuda::setDevice(devInfo.deviceID());
2308
static void mosaic(const cv::Mat_<cv::Vec3b>& src, cv::Mat_<uchar>& dst, cv::Point firstRed)
2310
dst.create(src.size());
2312
for (int y = 0; y < src.rows; ++y)
2314
for (int x = 0; x < src.cols; ++x)
2316
cv::Vec3b pix = src(y, x);
2318
cv::Point alternate;
2319
alternate.x = (x + firstRed.x) % 2;
2320
alternate.y = (y + firstRed.y) % 2;
2322
if (alternate.y == 0)
2324
if (alternate.x == 0)
2339
if (alternate.x == 0)
2357
CUDA_TEST_P(Demosaicing, BayerBG2BGR)
2359
cv::Mat img = readImage("stereobm/aloe-L.png");
2360
ASSERT_FALSE(img.empty()) << "Can't load input image";
2362
cv::Mat_<uchar> src;
2363
mosaic(img, src, cv::Point(1, 1));
2365
cv::cuda::GpuMat dst;
2366
cv::cuda::demosaicing(loadMat(src), dst, cv::COLOR_BayerBG2BGR);
2368
EXPECT_MAT_SIMILAR(img, dst, 2e-2);
2371
CUDA_TEST_P(Demosaicing, BayerGB2BGR)
2373
cv::Mat img = readImage("stereobm/aloe-L.png");
2374
ASSERT_FALSE(img.empty()) << "Can't load input image";
2376
cv::Mat_<uchar> src;
2377
mosaic(img, src, cv::Point(0, 1));
2379
cv::cuda::GpuMat dst;
2380
cv::cuda::demosaicing(loadMat(src), dst, cv::COLOR_BayerGB2BGR);
2382
EXPECT_MAT_SIMILAR(img, dst, 2e-2);
2385
CUDA_TEST_P(Demosaicing, BayerRG2BGR)
2387
cv::Mat img = readImage("stereobm/aloe-L.png");
2388
ASSERT_FALSE(img.empty()) << "Can't load input image";
2390
cv::Mat_<uchar> src;
2391
mosaic(img, src, cv::Point(0, 0));
2393
cv::cuda::GpuMat dst;
2394
cv::cuda::demosaicing(loadMat(src), dst, cv::COLOR_BayerRG2BGR);
2396
EXPECT_MAT_SIMILAR(img, dst, 2e-2);
2399
CUDA_TEST_P(Demosaicing, BayerGR2BGR)
2401
cv::Mat img = readImage("stereobm/aloe-L.png");
2402
ASSERT_FALSE(img.empty()) << "Can't load input image";
2404
cv::Mat_<uchar> src;
2405
mosaic(img, src, cv::Point(1, 0));
2407
cv::cuda::GpuMat dst;
2408
cv::cuda::demosaicing(loadMat(src), dst, cv::COLOR_BayerGR2BGR);
2410
EXPECT_MAT_SIMILAR(img, dst, 2e-2);
2413
CUDA_TEST_P(Demosaicing, BayerBG2BGR_MHT)
2415
cv::Mat img = readImage("stereobm/aloe-L.png");
2416
ASSERT_FALSE(img.empty()) << "Can't load input image";
2418
cv::Mat_<uchar> src;
2419
mosaic(img, src, cv::Point(1, 1));
2421
cv::cuda::GpuMat dst;
2422
cv::cuda::demosaicing(loadMat(src), dst, cv::cuda::COLOR_BayerBG2BGR_MHT);
2424
EXPECT_MAT_SIMILAR(img, dst, 5e-3);
2427
CUDA_TEST_P(Demosaicing, BayerGB2BGR_MHT)
2429
cv::Mat img = readImage("stereobm/aloe-L.png");
2430
ASSERT_FALSE(img.empty()) << "Can't load input image";
2432
cv::Mat_<uchar> src;
2433
mosaic(img, src, cv::Point(0, 1));
2435
cv::cuda::GpuMat dst;
2436
cv::cuda::demosaicing(loadMat(src), dst, cv::cuda::COLOR_BayerGB2BGR_MHT);
2438
EXPECT_MAT_SIMILAR(img, dst, 5e-3);
2441
CUDA_TEST_P(Demosaicing, BayerRG2BGR_MHT)
2443
cv::Mat img = readImage("stereobm/aloe-L.png");
2444
ASSERT_FALSE(img.empty()) << "Can't load input image";
2446
cv::Mat_<uchar> src;
2447
mosaic(img, src, cv::Point(0, 0));
2449
cv::cuda::GpuMat dst;
2450
cv::cuda::demosaicing(loadMat(src), dst, cv::cuda::COLOR_BayerRG2BGR_MHT);
2452
EXPECT_MAT_SIMILAR(img, dst, 5e-3);
2455
CUDA_TEST_P(Demosaicing, BayerGR2BGR_MHT)
2457
cv::Mat img = readImage("stereobm/aloe-L.png");
2458
ASSERT_FALSE(img.empty()) << "Can't load input image";
2460
cv::Mat_<uchar> src;
2461
mosaic(img, src, cv::Point(1, 0));
2463
cv::cuda::GpuMat dst;
2464
cv::cuda::demosaicing(loadMat(src), dst, cv::cuda::COLOR_BayerGR2BGR_MHT);
2466
EXPECT_MAT_SIMILAR(img, dst, 5e-3);
2469
INSTANTIATE_TEST_CASE_P(CUDA_ImgProc, Demosaicing, ALL_DEVICES);
2471
///////////////////////////////////////////////////////////////////////////////////////////////////////
2474
PARAM_TEST_CASE(SwapChannels, cv::cuda::DeviceInfo, cv::Size, UseRoi)
2476
cv::cuda::DeviceInfo devInfo;
2480
virtual void SetUp()
2482
devInfo = GET_PARAM(0);
2483
size = GET_PARAM(1);
2484
useRoi = GET_PARAM(2);
2486
cv::cuda::setDevice(devInfo.deviceID());
2490
CUDA_TEST_P(SwapChannels, Accuracy)
2492
cv::Mat src = readImageType("stereobm/aloe-L.png", CV_8UC4);
2493
ASSERT_FALSE(src.empty());
2495
cv::cuda::GpuMat d_src = loadMat(src, useRoi);
2497
const int dstOrder[] = {2, 1, 0, 3};
2498
cv::cuda::swapChannels(d_src, dstOrder);
2501
cv::cvtColor(src, dst_gold, cv::COLOR_BGRA2RGBA);
2503
EXPECT_MAT_NEAR(dst_gold, d_src, 0.0);
2506
INSTANTIATE_TEST_CASE_P(CUDA_ImgProc, SwapChannels, testing::Combine(