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