Escolar Documentos
Profissional Documentos
Cultura Documentos
Parte 04
Descrição baseada em contornos
e conversão de coordenadas entre planos
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0
0 0 1 1 1 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 1 1 0
0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
0 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
// buscando os contornos
vector<vector<Point>> contornos;
// imagem, vetor de saída com os contornos,Lista de todos os contornos, pontos exatos, sem offset
findContours( imagem, contornos, RETR_LIST, CHAIN_APPROX_NONE, Point(0, 0));
Homografia
Detectado um objeto na cena, como estimar sua posição em um dado sistema
de coordenadas do mundo?
Homografia
Transformação de perspectiva entre dois planos
Problemas a se resolver na conversão de pontos entre planos
Estimar a homografia
Transformar os pontos
Homografia na OpenCv
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/calib3d.hpp>
#include <iostream>
void funcaoHomografia()
{
VideoCapture capturador(0);
// cria uma janela para visualização e define o seu tamanho
namedWindow("Camera", WINDOW_AUTOSIZE);
setMouseCallback("Camera", funcMouse);
cout << "Clique sobre os 4 cantos do plano, iniciando da origem." << endl;
cout << "Em seguida, clique sobre a coordenada a converter." << endl;
Mat imagemCorrente;
char c = ' ';
while (c != 27)
{
capturador >> imagemCorrente;
imshow("Camera", imagemCorrente);
c = waitKey(50);
}
// libera capturador
capturador.release();
2) Crie um programa que leia a imagem “peças.jpg” e que detecte e apresente uma caixa
em torno de cada parafuso detectado.
tabuleiro_sintetico.jpg
tabuleiro_mundo.jpg