Если у меня есть двоичное изображение 3x3 и в местах (x, y) есть контур: (0,0), (0,1), (1,0), (1,1)
Я получаю контур с помощью метода findContours
.
Я хочу получить площадь этого контура:
- с CountNonZero: 4
- с ContourArea: 1
- с Моментом M00: 1
Каков правильный ответ и в чем разница между ними?
Этот контур квадратный, поэтому площадь равна 2 * 2 = 4
Так почему ContourArea равно 1?
Я использую EmguCV, и это мой код:
VectorOfVectorOfPoint cont = new VectorOfVectorOfPoint();
Image<Gray, byte> img = new Image<Gray, byte>(3,3);
img[0, 0] = new Gray(255);
img[0, 1] = new Gray(255);
img[1, 0] = new Gray(255);
img[1, 1] = new Gray(255);
CvInvoke.FindContours(img, cont, null, Emgu.CV.CvEnum.RetrType.External, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);
Moments m = CvInvoke.Moments(cont[0], true);
Console.WriteLine(CvInvoke.ContourArea(cont[0]));
CvInvoke.Imshow("ss", img);
CvInvoke.WaitKey(0);