У меня есть это приложение, где прямоугольник рисуется в начальном кадре. Я хотел знать, возможно ли сделать прямоугольник частью изображения, начиная со следующего кадра.
Например, в моем первом кадре я бы нарисовал что-то вроде этого, но немного темнее
http://imgur.com/zACIiHJ
Я хочу, чтобы он стал частью окружающей среды, чтобы в следующий раз, когда моя камера получила доступ к этому кадру, я увидел прямоугольную рамку. Как это сделать с помощью OpenCV?
Редактировать: Мой алгоритм находит и рисует прямоугольник в первом кадре. Я пытаюсь держать прямоугольник в том же месте, когда камера движется, и прямоугольник не всегда должен быть на белой доске.
То, чего вы пытаетесь достичь, возможно, но это потребует некоторых исследований и работы с вашей стороны. Одним из возможных решений вашей проблемы является использование Optical Flow (http://en.wikipedia.org/wiki/Optical_flow) анализ, чтобы контролировать видимое движение объектов в вашей камере зрения. Вы можете использовать полученное поле оптического потока, чтобы применить «коррекцию» к позициям углов вашего прямоугольника между каждым кадром. Вот ссылка на документацию OpenCV для их функций оптического потока:
http://docs.opencv.org/modules/gpu/doc/video.html
Если конкретное устройство, которое вы используете, имеет гироскоп и gps / ins, вы также можете использовать эти данные для дополнения данных оптического потока. Дайте мне знать, как это происходит, звучит как действительно веселый проект!
Вам нужен статический прямоугольник, который не имеет ничего общего с тем, что в изображение? Просто нарисуйте прямоугольник на каждом кадре, который вы снимаете.
Rect r = Rect( .. );
rectangle( imageFromCam, r, Scalar( .. ) );