that_one_nigga_you_k

juntador de imagens

Jun 25th, 2024
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.28 KB | None | 0 0
  1. #include <opencv2/opencv.hpp>
  2. #include <iostream>
  3.  
  4. using namespace cv;
  5.  
  6. int main() {
  7.     // Define os nomes dos arquivos para as imagens de entrada
  8.     std::string image1_path = "/home/narciso/Imagens/image1.png";
  9.     std::string image2_path = "/home/narciso/Imagens/image2.png";
  10.  
  11.     // Carrega as imagens
  12.     Mat image1 = imread(image1_path, IMREAD_COLOR);
  13.     Mat image2 = imread(image2_path, IMREAD_COLOR);
  14.  
  15.     // Verifica se as imagens foram carregadas com sucesso
  16.     if (image1.empty() || image2.empty()) {
  17.         std::cerr << "Erro: Não foi possível carregar as imagens!" << std::endl;
  18.         return 1;
  19.     }
  20.  
  21.     // Obtém as dimensões das imagens
  22.     int image1_height = image1.rows;
  23.     int image2_height = image2.rows;
  24.     int image1_width = image1.cols;
  25.     int image2_width = image2.cols;
  26.  
  27.     std::cout << "Largura da imagem 1: " << image1_width << ", altura: " << image1_height << std::endl;
  28.     std::cout << "Largura da imagem 2: " << image2_width << ", altura: " << image2_height << std::endl;
  29.  
  30.     // Determina a largura máxima para a imagem unida
  31.     int joined_image_width = std::max(image1_width, image2_width);
  32.     int joined_image_height = image1_height + image2_height;
  33.  
  34.     // Cria uma nova Mat para a imagem unida com o mesmo tipo das imagens de entrada
  35.     // Usamos image1.type() para garantir que a imagem unida tenha o mesmo número de canais e profundidade
  36.     Mat joined_image(joined_image_height, joined_image_width, image1.type(), Scalar(0, 0, 0));
  37.  
  38.     // Copia a imagem1 para o topo da imagem unida
  39.     Mat roi1(joined_image, Rect(0, 0, image1_width, image1_height));
  40.     image1.copyTo(roi1);
  41.  
  42.     // Copia a imagem2 para a parte inferior da imagem unida (começando a partir de image1_height)
  43.     Mat roi2(joined_image, Rect(0, image1_height, image2_width, image2_height));
  44.     image2.copyTo(roi2);
  45.  
  46.     // Aplica preenchimento preto se necessário (opcional)
  47.     // Verifica se a imagem1 é mais estreita que a imagem2
  48.     if (image1_width < image2_width) {
  49.         // Cria uma ROI (região de interesse) de cor preta no lado direito da imagem1
  50.         Mat padding_roi(image1_height, image2_width - image1_width, image1.type(), Scalar(0, 0, 0));
  51.  
  52.         // Copia a ROI de preenchimento preto ao lado da imagem1 dentro da ROI da imagem unida
  53.         Mat dst_roi(joined_image, Rect(image1_width, 0, image2_width - image1_width, image1_height));
  54.         padding_roi.copyTo(dst_roi);
  55.     }
  56.  
  57.     // Verifica se a imagem2 é mais estreita que a imagem1
  58.     if (image2_width < image1_width) {
  59.         // Cria uma ROI (região de interesse) de cor preta no lado direito da imagem2
  60.         Mat padding_roi(image2_height, image1_width - image2_width, image2.type(), Scalar(0, 0, 0));
  61.  
  62.         // Copia a ROI de preenchimento preto ao lado da imagem2 dentro da ROI da imagem unida
  63.         Mat dst_roi(joined_image, Rect(image2_width, image1_height, image1_width - image2_width, image2_height));
  64.         padding_roi.copyTo(dst_roi);
  65.     }
  66.  
  67.     // Define o nome do arquivo para a imagem de saída
  68.     std::string joined_image_path = "joined_image.png";
  69.  
  70.     // Salva a imagem unida
  71.     imwrite(joined_image_path, joined_image);
  72.  
  73.     std::cout << "Imagens unidas com sucesso! Imagem de saída: " << joined_image_path << std::endl;
  74.  
  75.     return 0;
  76. }
  77.  
  78.  
Add Comment
Please, Sign In to add comment