public void TestCudaPyrLKOpticalFlow() { if (!CudaInvoke.HasCuda) { return; } Image <Gray, Byte> prevImg, currImg; AutoTestVarious.OpticalFlowImage(out prevImg, out currImg); Mat flow = new Mat(); CudaDensePyrLKOpticalFlow opticalflow = new CudaDensePyrLKOpticalFlow(new Size(21, 21), 3, 30, false); using (CudaImage <Gray, Byte> prevGpu = new CudaImage <Gray, byte>(prevImg)) using (CudaImage <Gray, byte> currGpu = new CudaImage <Gray, byte>(currImg)) using (GpuMat flowGpu = new GpuMat()) { opticalflow.Calc(prevGpu, currGpu, flowGpu); flowGpu.Download(flow); } }
public void TestCudaBroxOpticalFlow() { if (!CudaInvoke.HasCuda) { return; } Image <Gray, Byte> prevImg, currImg; AutoTestVarious.OpticalFlowImage(out prevImg, out currImg); Mat flow = new Mat(); CudaBroxOpticalFlow opticalflow = new CudaBroxOpticalFlow(); using (CudaImage <Gray, float> prevGpu = new CudaImage <Gray, float>(prevImg.Convert <Gray, float>())) using (CudaImage <Gray, float> currGpu = new CudaImage <Gray, float>(currImg.Convert <Gray, float>())) using (GpuMat flowGpu = new GpuMat()) { opticalflow.Calc(prevGpu, currGpu, flowGpu); flowGpu.Download(flow); } }
public void TestCudaPyrLKOpticalFlow() { if (!CudaInvoke.HasCuda) { return; } Image <Gray, Byte> prevImg, currImg; AutoTestVarious.OpticalFlowImage(out prevImg, out currImg); Image <Gray, Single> flowx = new Image <Gray, float>(prevImg.Size); Image <Gray, Single> flowy = new Image <Gray, float>(prevImg.Size); CudaPyrLKOpticalFlow flow = new CudaPyrLKOpticalFlow(new Size(21, 21), 3, 30, false); using (CudaImage <Gray, Byte> prevGpu = new CudaImage <Gray, byte>(prevImg)) using (CudaImage <Gray, byte> currGpu = new CudaImage <Gray, byte>(currImg)) using (CudaImage <Gray, float> flowxGpu = new CudaImage <Gray, float>(prevGpu.Size)) using (CudaImage <Gray, float> flowyGpu = new CudaImage <Gray, float>(prevGpu.Size)) { flow.Dense(prevGpu, currGpu, flowxGpu, flowyGpu); flowxGpu.Download(flowx); flowyGpu.Download(flowy); } }