2013-08-27 2 views
1

У меня есть большое изображение (приблизительно 4000x3000) на некоторых (известных) точках, из которых я должен выполнить некоторые операции, щелкнув по ним.Связь между оригинальным и измененным размером изображения (C++/OpenCV)

Итак, вот в чем проблема: чтобы визуализировать его, я должен изменить его размер (уменьшив его), но тогда я не могу связать координаты измененного изображения, на который я нажимаю, с координатами «оригинальное» изображение, которое я должен изменить! (Это, очевидно, не должно быть точным! Я мог принимать ошибки, допустим, 10px. Но я получаю сотни пикселей ошибки!)

Как я могу это решить?

Я использую OpenCV с C++, команда, которую я использую, теперь изменяет размер(), который я нашел here с fx = fy = 0.25.

Очевидно, что умножение (или разделение ..) все на 4 не получилось хорошо .. почему?

(Или точнее:.! Он работал на оси только

Заранее спасибо за помощь

+1

На самом деле, «разделяя вечность на 4» (вы имеете в виду уменьшенную шкалу в 4 раза), вы имеете в виду, что 4-пиксельная область исходного изображения теперь представлена ​​1-пиксельной областью. Так что на самом деле нет абсолютной связи. Попробуйте, например. разделить изображение на 4 квадранта. – William

+1

На самом деле, я думаю, что это уменьшит площадь в 16 пикселов до одного пикселя. – ams

+0

@ams да, извините. 4x4 в 1x1. – William

ответ

2

Обычный способ для решения таких проблем является выход где-то небольшое окно с кусочком изображения, отображаемого в реальном масштабе и для пользователя, когда требуется точное позиционирование в этом маленьком окне. Одновременно в масштабированном изображении отображается грубое положение курсора. Мышь перемещается в координатах большого изображения, а затем вычисляется где маленькое окно (маленький квадрат вокруг положения мыши), вырезать его и отображать где-нибудь, затем масштабировать координаты и отображать курсор, которые он оценил. Используя такой подход, вы получите точность пикселя.

Смежные вопросы