Поворот и обрезка
Сначала я бы попытался сделать это так:
- вычислить матрицу вращения с (
GetRotationMatrix2D
)
- Деформируйте изображение так, чтобы эта линия была горизонтальной (
WarpAffine
)
- рассчитать новые позиции двух ваших очков (вы можете использовать
Transform
)
- получить прямоугольник изображения подходящей ширины и высотой 1 пиксель (
GetRectSubPix
)
Интерполяция здесь и там может повлиять на результаты, но вам все равно придется интерполировать. Вы можете обрезать изображение перед поворотом.
Итерация по 8 связанным пикселям линии
В противном случае вы можете использовать итератор линии для перебора пикселей между двумя точками. См. Документацию для InitLineIterator
(Извините, ссылка на версию OpenCV на Python, я никогда не слышал об EMGU). Я полагаю, что в этом случае вы перебираете пиксели строки, которая не была сглажена. Но это должно быть намного быстрее.
Интерполировать вручную
Наконец, вы можете преобразовать изображение в массив, вычислить, через какие элементы проходит линия, выполнить выборку и интерполировать вручную.