Member 13348159 Ответов: 2

Как рассчитать скорость движущегося объекта ?


Извините за мою ошибку , я все еще новичок здесь и новичок в Си# :(

Я работаю над проектом c#, где читаю выборку движущихся объектов, а затем подсчитываю эти объекты и вычисляю скорость движущихся

Я использую aforge.net для чтения с веб-камеры и последующего хранения около 25 фотографий
затем применяя порог, чтобы удалить что-либо, кроме объектов (конечно, есть фактор ошибки)
изображение после порогового : тест — imgbb.com[^]

и я пытался вычислить скорость каждого найденного объекта, вычисляя расстояние от его первого места в capturedFrame1 и его места в finalFrame .

и я думал, что смогу вычислить его, зная, как преобразовать расстояние в пикселях в мм ?
Спасибо

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

https://ibb.co/i2WiZQ

OriginalGriff

Это не очень хороший вопрос - мы не можем понять из этого малого, что вы пытаетесь сделать.
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы. И мы понятия не имеем, что вы делаете, как вы контролируете скорость, каковы ваши источники данных или как пиксели входят в нее!

Используйте виджет" улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

Member 13348159

Извините за мою ошибку , я все еще новичок здесь и новичок в Си# :(

Я работаю над проектом c#, где читаю выборку движущихся объектов, а затем подсчитываю эти объекты и вычисляю скорость движущихся

Я использую aforge.net для чтения с веб-камеры и последующего хранения около 25 фотографий
затем применяя порог, чтобы удалить что-либо, кроме объектов (конечно, есть фактор ошибки)

изображение после порога : https://ibb.co/i2WiZQ

и я пытался вычислить скорость каждого найденного объекта, вычисляя расстояние от его первого места в capturedFrame1 и его места в finalFrame .

OriginalGriff

Это не обязательно легко: вы можете рассчитать скорость в пикселях в секунду, но это не имеет прямой корреляции со скоростью объекта в миллиметрах в секунду, независимо от разрешения монитора. Сначала вам нужно сделать тестовый образец с известной скоростью, и y6ou может использовать его в качестве "поправочного коэффициента" для преобразования пикселей в мм в "реальном мире". Если вы этого не сделаете, то расстояние камеры от объекта означает, что его видимая скорость в пикселях падает по мере увеличения расстояния от камеры.

2 Ответов

Рейтинг:
4

CPallini

PPI (пиксели на дюйм) измеряет плотность пикселей[^] и это все, что вам нужно.

Предположим, ваш объект движется со скоростью 20 пиксель в секунду на 96 PPI экран, значит

speed = 20 pixel/second = 20/96 inches/second = 20/99 25.4 mm/second = 5.29 mm/second.


Где 25.4 это соотношение дюйм/миллиметр.


Рейтинг:
13

Kornfeld Eliyahu Peter

Пиксели (точки) на вашем экране имеют размер, PPI (и DPI) вашего экрана говорит вам, сколько пикселей (точек) у вас есть в одном дюйме...
Таким образом, если ваш DPI равен 120, это означает, что у вас есть 120 пикселей в одном дюйме...
Теперь, если у вас есть Икс пиксели это X / 120 в дюймах... Теперь в одном дюйме 2,54 сантиметра...

Чтобы получить DPI вашего экрана (может быть разным для X и Y, так как пиксели не обязательно имеют квадратную форму), используйте этот код:

using (Graphics oGraphics = Graphics.FromHwnd(IntPtr.Zero))
{
    float nDPIX = oGraphics.DpiX;
    float nDPIY = oGraphics.DpiY;
}