예제 #1
0
        public void TestConvolutionAndLaplace()
        {
            if (CudaInvoke.HasCuda)
            {
                Image <Gray, Byte> image = new Image <Gray, byte>(300, 400);
                image.SetRandUniform(new MCvScalar(0.0), new MCvScalar(255.0));

                float[,] k = { { 0,  1, 0 },
                               { 1, -4, 1 },
                               { 0,  1, 0 } };
                using (ConvolutionKernelF kernel = new ConvolutionKernelF(k))
                    using (Stream s = new Stream())
                        using (GpuMat cudaImg = new GpuMat(image))
                            using (GpuMat cudaLaplace = new GpuMat())
                                using (CudaLinearFilter cudaLinear = new CudaLinearFilter(DepthType.Cv8U, 1, DepthType.Cv8U, 1, kernel, kernel.Center))
                                    using (GpuMat cudaConv = new GpuMat())
                                        using (CudaLaplacianFilter laplacian = new CudaLaplacianFilter(DepthType.Cv8U, 1, DepthType.Cv8U, 1, 1, 1.0))
                                        {
                                            cudaLinear.Apply(cudaImg, cudaConv, s);
                                            laplacian.Apply(cudaImg, cudaLaplace, s);
                                            s.WaitForCompletion();
                                            Assert.IsTrue(cudaLaplace.Equals(cudaConv));
                                        }
            }
        }
예제 #2
0
      public void TestConvolutionAndLaplace()
      {
         if (CudaInvoke.HasCuda)
         {
            Image<Gray, Byte> image = new Image<Gray, byte>(300, 400);
            image.SetRandUniform(new MCvScalar(0.0), new MCvScalar(255.0));

            float[,] k = { {0, 1, 0},
                        {1, -4, 1},
                        {0, 1, 0}};
            using (ConvolutionKernelF kernel = new ConvolutionKernelF(k))
            using (Stream s = new Stream())
            using (GpuMat cudaImg = new GpuMat(image))
            using (GpuMat cudaLaplace = new GpuMat())
            using (CudaLinearFilter cudaLinear = new CudaLinearFilter(DepthType.Cv8U, 1, DepthType.Cv8U, 1, kernel, kernel.Center))
            using (GpuMat cudaConv = new GpuMat())
            using (CudaLaplacianFilter laplacian = new CudaLaplacianFilter(DepthType.Cv8U, 1, DepthType.Cv8U, 1, 1, 1.0))
            {
               cudaLinear.Apply(cudaImg, cudaConv, s);
               laplacian.Apply(cudaImg, cudaLaplace, s);
               s.WaitForCompletion();
               Assert.IsTrue(cudaLaplace.Equals(cudaConv));
            }
         }
      }