Member 14129828 Ответов: 1

Как я могу получить реальную высоту контура в C#?


Я хочу получить высоту башни внутри изображения. Я измерил его по правилу, которое нашел 9 см. Я использую контур для сегментации, а затем вычисляю высоту контура, но выход моей программы равен 358.
что это? и как я получу реальный результат?

Что я уже пробовал:

temp = new Image<Bgr, byte>("F:\\project\\brige1.png");

            Image<Gray, byte> img3 = temp.Convert<Gray, byte>().ThresholdBinary(new Gray(50), new Gray(255)).Dilate(1).Erode(1);

            Emgu.CV.Util.VectorOfVectorOfPoint contours = new Emgu.CV.Util.VectorOfVectorOfPoint();
            Mat m = new Mat();
            CvInvoke.FindContours(img3, contours, m, Emgu.CV.CvEnum.RetrType.External, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);
            Dictionary<int, double> dict = new Dictionary<int, double>();
            if (contours.Size > 0)
            {
                for (int i = 0; i < contours.Size; i++)
                {

                    Rectangle rect = CvInvoke.BoundingRectangle(contours[i]);
                    double aera = CvInvoke.ContourArea(contours[i]);

                    int h = rect.Height;

                    MessageBox.Show("The heith is = " + h.ToString());

                    CvInvoke.Rectangle(temp, rect, new MCvScalar(0, 255, 0), 3);


                    pictureBox5.Image = temp.Bitmap;

                    
                }

Richard Deeming

Было ли это ровно 9 см или ближе к 10 см?

Я подозреваю, что 358-й находится в пикселях. Если ваш дисплей имеет 92dpi, это будет примерно 3,9 дюйма или 9,9 см.

Member 14129828

вы правы...спасибо...Я вычислил диапазон изображения и получил близкое значение вашей гипотезы

Patrice T

Если проблема решена, опубликуйте решение и примите его.

Member 14129828

да...проблема решена..но как я ее выложу?

1 Ответов

Рейтинг:
10

Richard Deeming

Как обсуждалось в комментариях, значение 358 находится в пикселях. На экране 92dpi это работает примерно на 3,9 дюйма, или 9,9 см.