Manipulador de Quadrantes de Imagem 🖼️
Um programa simples de processamento de imagem foi concebido para manipular quadrantes de uma imagem. Este programa oferece aos usuários a capacidade de selecionar quadrantes da imagem original e reposicioná-los conforme desejado na imagem resultante.
Seja
Para dividir a imagem em quadrantes, podemos criar quatro submatrizes
corresponde à região superior esquerda da imagem original. corresponde à região superior direita da imagem original. corresponde à região inferior esquerda da imagem original. corresponde à região inferior direita da imagem original.
Cada uma dessas submatrizes terá dimensões
Portanto, podemos expressar matematicamente as submatrizes da seguinte forma:
Onde
Este processo de divisão de quadrantes pode ser facilmente realizado no OpenCV da seguinte forma em C++:
1
2
3
4
5
cv::Mat quadrants[4];
quadrants[0] = image(cv::Rect(0, 0, image.cols / 2, image.rows / 2));
quadrants[1] = image(cv::Rect(image.cols / 2, 0, image.cols / 2, image.rows / 2));
quadrants[2] = image(cv::Rect(0, image.rows / 2, image.cols / 2, image.rows / 2));
quadrants[3] = image(cv::Rect(image.cols / 2, image.rows / 2, image.cols / 2, image.rows / 2));
Para realizar a substituição e montar uma nova imagem a partir dos novos quadrantes, podemos utilizar a seguinte função em C++:
1
2
3
4
5
6
7
8
9
cv::Mat mountImage(cv::Mat quadrants[4])
{
cv::Mat image, quadrantsTop, quadrantsBottom;
cv::hconcat(quadrants[0], quadrants[1], quadrantsTop);
cv::hconcat(quadrants[2], quadrants[3], quadrantsBottom);
cv::vconcat(quadrantsTop, quadrantsBottom, image);
return image;
};
Para verificar o código completo, acesse: Github.com/ErnaneJ/pdi/quadrants
Executar 🚀
1
make main && ./main
Para usar uma imagem diferente de “biel.png”, altere a linha 5 correspondente à macro IMAGE_FILE.
Saída 🖼️
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
🖼️ Quadrants - [biel.png] 🖼️
──────────────────────────────────────────────
📍 Which quadrant do you want to replace 1º (1-4)? 3
📍 Which quadrant do you want to replace 2º (1-4)? 2
📍 Which quadrant do you want to replace 3º (1-4)? 4
📍 Which quadrant do you want to replace 4º (1-4)? 1
💡 Do you want to show the quadrants individually (y/n)? y
✅ Quadrants successfully manipulated!
──────────────────────────────────────────────
🎓 Sudent: Ernane Ferreira - DCA0445