Mastering OpenCV with Practical Computer Vision Projects / Опановуюємо OpenCV через практичні проекти комп'ютерного зору: Розділ 2. Доповнена реальність на iOS та Android з використанням маркерів

← →
Английский оригинал Перевод на украинский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Далі знаходиться фрагмент коду з описом функції drawAR:
- (void) drawAR
{
Matrix44 projectionMatrix;
[self
buildProjectionMatrix:m_calibration.getIntrinsic():m_frameSize.width
:m_frameSize.height :projectionMatrix];
glMatrixMode(GL_PROJECTION);
glLoadMatrixf(projectionMatrix.data);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

Atronax 18.02.21 в 13:24

0

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glPushMatrix();
glLineWidth(3.0f);
float lineX[] = {0,0,0,1,0,0};
float lineY[] = {0,0,0,0,1,0};
float lineZ[] = {0,0,0,0,0,1};
const GLfloat squareVertices[] = {
-0.5f, -0.5f,
0.5f, -0.5f,
-0.5f, 0.5f,
0.5f, 0.5f,
};
const GLubyte squareColors[] = {
255, 255, 0, 255,
0, 255, 255, 255,
0, 0, 0, 0,
255, 0, 255, 255,
};
for (size_t transformationIndex=0;
transformationIndex<m_transformations.size(); transformationIndex++)
{

Atronax 18.02.21 в 13:25

0

const Transformation& transformation =
m_transformations[transformationIndex];
Matrix44 glMatrix = transformation.getInverted().getMat44();
glLoadMatrixf(reinterpret_cast<const GLfloat*>
(&glMatrix.data[0]));
// малюємо дані
glVertexPointer(2, GL_FLOAT, 0, squareVertices);
glEnableClientState(GL_VERTEX_ARRAY);
glColorPointer(4, GL_UNSIGNED_BYTE, 0, squareColors);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisableClientState(GL_COLOR_ARRAY);
float scale = 0.5;
glScalef(scale, scale, scale);
glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
glVertexPointer(3, GL_FLOAT, 0, lineX);
glDrawArrays(GL_LINES, 0, 2);
glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
glVertexPointer(3, GL_FLOAT, 0, lineY);
glDrawArrays(GL_LINES, 0, 2);
glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
glVertexPointer(3, GL_FLOAT, 0, lineZ);
glDrawArrays(GL_LINES, 0, 2);
}
glPopMatrix();
glDisableClientState(GL_VERTEX_ARRAY);
}
}

Atronax 18.02.21 в 13:26

0

Запустивши програму, ви отримаєте такий малюнок:
Ми не використовуємо жодного двигуна 3D візуалізації для сцени, однак наявні всі необхідні дані, щоб зробити це власноруч. Тож ми отримали наступне:
Кадр у форматі BGRA з пристрою камери
Коректну матрицю проєкції, що дає вірні перспективні перетворення для візуалізації сцени доповненої реальності
Список знайдених поз маркерів
Ці дані легко використати у будь-якому 3D двигуні та створити власний застосунок з доповненою реальністю, заснованою на маркерах.
Як можна бачити, чотирикутники з градієнтним заповненням та центральні точки розміщуються чітко на маркерах. Це ключова особливість AR - безшовне змішування реальних зображень та штучних об'єктів.

Atronax 18.02.21 в 13:46

0

Висновки

Atronax 18.02.21 в 13:46

0

У цьому розділі ми навчилися створювати мобільні застосунки доповненої реальності для пристроїв iPhone/iPad, здобули знання про те, як використовувати бібліотеку OpenCV у проєктах XCode, щоб створювати дивовижні застосунки-шедеври. Використання OpenCV дозволяє програмам здійснювати складну обробку зображень на мобільних пристроях з прийнятною продуктивністю.

Atronax 18.02.21 в 13:55

0

Також ми дізнались, як здійснювати первинну обробку зображень (перетворення у відтінки сірого та бінаризацію), як знаходити закриті контури та апроксимувати їх до полігонів, як виокремлювати маркери та декодувати їх, як обчислювати позицію маркера в просторі та візуалізувати 3D об'єкти доповненої реальності.

Atronax 18.02.21 в 13:57

0

Посилання
ArUco: найменша бібліотека для застосунків доповненої реальності на базі OpenCV
(http://www.uco.es/investiga/grupos/ava/node/26)
OpenCV Camera Calibration and 3D Reconstruction
(http://opencv.itseez.com/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html)
OpenCV: Estimating Projective Relations in Images (http://www.packtpub.com/article/opencvestimatingprojective-relations-images)
Multiple View Geometry in Computer Vision (second edition), R.I. Hartley and A. Zisserman,
Cambridge University Press, ISBN 0-521-54051-8

Atronax 18.02.21 в 14:11

0
Минутку...

← Предыдущая страница