emgu cv library를 사용하여 보행자 감지 시스템을 구현 중입니다. find 메소드 메소드를 통해 감지 한 결과의 수를 리턴합니다.EMGU CV 보행자 감지에서 Find 메서드를 통해 반환되는 결과 수를 얻는 방법 C#
public static Rectangle[] findPedestrian(Image<Bgr, Byte> image)
{
Stopwatch stopwatch;
Rectangle[] regions;
if (CudaInvoke.HasCuda)
{
using (CudaHOG des = new CudaHOG(new Size(64, 128), new Size(16, 16), new Size(8, 8), new Size(8, 8)))
{
des.SetSVMDetector(des.GetDefaultPeopleDetector());
stopwatch = Stopwatch.StartNew();
using (GpuMat cudaBgr = new GpuMat(image))
using (GpuMat cudaBgra = new GpuMat())
using (VectorOfRect vr = new VectorOfRect())
{
CudaInvoke.CvtColor(cudaBgr, cudaBgra, ColorConversion.Bgr2Bgra);
des.DetectMultiScale(cudaBgra, vr);
regions = vr.ToArray();
}
}
}
else
{
using (HOGDescriptor des = new HOGDescriptor())
{
des.SetSVMDetector(HOGDescriptor.GetDefaultPeopleDetector());
stopwatch = Stopwatch.StartNew();
MCvObjectDetection[] results = des.DetectMultiScale(image);
regions = new Rectangle[results.Length];
for (int i = 0; i < results.Length; i++)
regions[i] = results[i].Rect;
stopwatch.Stop();
}
}
//processingTime = stopwatch.ElapsedMilliseconds;
return regions;
}
여기에서 프로세스를 통해 전송되는 결과에 따라 사각형이 생성됩니다. 내가 원하는 것은 메소드를 통해 리턴하는 결과의 수를 세는 것입니다. 나는이 foreach 루프의 반복 횟수로부터 얻으려고 생각했다.
private Image<Bgr, Byte> imagingPedestrian(Image<Bgr, Byte> image)
{
System.Drawing.Rectangle[] results = pedestrianDetection.findPedestrian(image);
foreach (Rectangle rect in results)
{
CvInvoke.Rectangle(image, rect, new Bgr(Color.Red).MCvScalar);
}
return image;
}
그 결과를 얻는 방법을 알 수 있습니까? 미리 감사드립니다.
하여 얻을 수 있습니다 그렇다면 사람의 수는 ... 을 감지 싶어 질문을 알 수있는 바와 같이, results.count 또는 results.length가 작동해야합니다 –
제목과 질문에 혼란 스럽습니다. 제목은 무언가가 걸리는 시간을 측정하는 것에 관한 것이지만 함수가 호출 된 횟수는 질문과 같습니다. 무엇 이니? – Neil
제목이 질문과 일치하지 않습니다. – chris579