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)); } } }
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)); } } }