Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <opencv2/opencv.hpp>
- #include <iostream>
- using namespace cv;
- int main() {
- // Define os nomes dos arquivos para as imagens de entrada
- std::string image1_path = "/home/narciso/Imagens/image1.png";
- std::string image2_path = "/home/narciso/Imagens/image2.png";
- // Carrega as imagens
- Mat image1 = imread(image1_path, IMREAD_COLOR);
- Mat image2 = imread(image2_path, IMREAD_COLOR);
- // Verifica se as imagens foram carregadas com sucesso
- if (image1.empty() || image2.empty()) {
- std::cerr << "Erro: Não foi possível carregar as imagens!" << std::endl;
- return 1;
- }
- // Obtém as dimensões das imagens
- int image1_height = image1.rows;
- int image2_height = image2.rows;
- int image1_width = image1.cols;
- int image2_width = image2.cols;
- std::cout << "Largura da imagem 1: " << image1_width << ", altura: " << image1_height << std::endl;
- std::cout << "Largura da imagem 2: " << image2_width << ", altura: " << image2_height << std::endl;
- // Determina a largura máxima para a imagem unida
- int joined_image_width = std::max(image1_width, image2_width);
- int joined_image_height = image1_height + image2_height;
- // Cria uma nova Mat para a imagem unida com o mesmo tipo das imagens de entrada
- // Usamos image1.type() para garantir que a imagem unida tenha o mesmo número de canais e profundidade
- Mat joined_image(joined_image_height, joined_image_width, image1.type(), Scalar(0, 0, 0));
- // Copia a imagem1 para o topo da imagem unida
- Mat roi1(joined_image, Rect(0, 0, image1_width, image1_height));
- image1.copyTo(roi1);
- // Copia a imagem2 para a parte inferior da imagem unida (começando a partir de image1_height)
- Mat roi2(joined_image, Rect(0, image1_height, image2_width, image2_height));
- image2.copyTo(roi2);
- // Aplica preenchimento preto se necessário (opcional)
- // Verifica se a imagem1 é mais estreita que a imagem2
- if (image1_width < image2_width) {
- // Cria uma ROI (região de interesse) de cor preta no lado direito da imagem1
- Mat padding_roi(image1_height, image2_width - image1_width, image1.type(), Scalar(0, 0, 0));
- // Copia a ROI de preenchimento preto ao lado da imagem1 dentro da ROI da imagem unida
- Mat dst_roi(joined_image, Rect(image1_width, 0, image2_width - image1_width, image1_height));
- padding_roi.copyTo(dst_roi);
- }
- // Verifica se a imagem2 é mais estreita que a imagem1
- if (image2_width < image1_width) {
- // Cria uma ROI (região de interesse) de cor preta no lado direito da imagem2
- Mat padding_roi(image2_height, image1_width - image2_width, image2.type(), Scalar(0, 0, 0));
- // Copia a ROI de preenchimento preto ao lado da imagem2 dentro da ROI da imagem unida
- Mat dst_roi(joined_image, Rect(image2_width, image1_height, image1_width - image2_width, image2_height));
- padding_roi.copyTo(dst_roi);
- }
- // Define o nome do arquivo para a imagem de saída
- std::string joined_image_path = "joined_image.png";
- // Salva a imagem unida
- imwrite(joined_image_path, joined_image);
- std::cout << "Imagens unidas com sucesso! Imagem de saída: " << joined_image_path << std::endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment