Beispiel #1
0
        public void TestSplitMerge()
        {
            if (CudaInvoke.HasCuda)
            {
                using (Image <Bgr, Byte> img1 = new Image <Bgr, byte>(1200, 640))
                {
                    img1.SetRandUniform(new MCvScalar(0, 0, 0), new MCvScalar(255, 255, 255));

                    using (GpuMat gpuImg1 = new GpuMat(img1))
                    {
                        GpuMat[] channels = gpuImg1.Split(null);

                        for (int i = 0; i < channels.Length; i++)
                        {
                            Mat imgL = channels[i].ToMat();
                            Image <Gray, Byte> imgR = img1[i];
                            Assert.IsTrue(imgL.Equals(imgR.Mat), "failed split GpuMat");
                        }

                        using (GpuMat gpuImg2 = new GpuMat())
                        {
                            gpuImg2.MergeFrom(channels, null);
                            using (Image <Bgr, byte> img2 = new Image <Bgr, byte>(img1.Size))
                            {
                                gpuImg2.Download(img2);
                                Assert.IsTrue(img2.Equals(img1), "failed split and merge test");
                            }
                        }

                        for (int i = 0; i < channels.Length; i++)
                        {
                            channels[i].Dispose();
                        }
                    }
                }
            }
        }
Beispiel #2
0
      public void TestSplitMerge()
      {
         if (CudaInvoke.HasCuda)
         {
            using (Image<Bgr, Byte> img1 = new Image<Bgr, byte>(1200, 640))
            {
               img1.SetRandUniform(new MCvScalar(0, 0, 0), new MCvScalar(255, 255, 255));

               using (GpuMat gpuImg1 = new GpuMat(img1))
               {
                  GpuMat[] channels = gpuImg1.Split(null);

                  for (int i = 0; i < channels.Length; i++)
                  {
                     Mat imgL = channels[i].ToMat();
                     Image<Gray, Byte> imgR = img1[i];
                     Assert.IsTrue(imgL.Equals(imgR.Mat), "failed split GpuMat");
                  }

                  using (GpuMat gpuImg2 = new GpuMat())
                  {
                     gpuImg2.MergeFrom(channels, null);
                     using (Image<Bgr, byte> img2 = new Image<Bgr, byte>(img1.Size))
                     {
                        gpuImg2.Download(img2);
                        Assert.IsTrue(img2.Equals(img1), "failed split and merge test");
                     }
                  }

                  for (int i = 0; i < channels.Length; i++)
                  {
                     channels[i].Dispose();
                  }
               }
            }
         }
      }