并排放置两个图像,opencv 2.3,c ++

Sha*_*gee 6 opencv

我正在阅读两张图片,想要获得第三张图片,这只是两张图片的组合.img_object和img_scene的大小不一样.

    int main( int argc, char** argv )
        Mat combine;

        Mat img_object = imread( object_filename, CV_LOAD_IMAGE_GRAYSCALE );
        Mat img_scene = imread(  scene_filename , CV_LOAD_IMAGE_GRAYSCALE );
    if( !img_object.data || !img_scene.data )
      { std::cout<< " --(!) Error reading images " << std::endl; return -1; }


       namedWindow( "Display window oject", 0 );// Create a window for display.


       namedWindow( "Display window scene ", 0 );


       namedWindow( "Display window combine ", 0 );

       imshow( "Display window oject", img_object );
       imshow( "Display window scene", img_scene );   
       imshow( "Display window scene", combine );   
 waitKey(0);
  return 0;
  }
Run Code Online (Sandbox Code Playgroud)

Raj*_*hra 7

有一种非常简单的方法可以并排显示两个图像.可以使用opencv提供的以下功能.

Mat image1, image2;
hconcat(image1,image2,image1);//Syntax-> hconcat(source1,source2,destination);
Run Code Online (Sandbox Code Playgroud)

此功能还可用于将一组列从图像复制到另一个图像.

Mat image;
Mat columns=image.colRange(20,30);
hconcat(image,columns,image);
Run Code Online (Sandbox Code Playgroud)


Dim*_*lyn 1

您可以使用循环来执行此操作,假设您的图像具有相同的大小:

Mat combine = Mat::zeros(img_object.rows,img_object.cols *2,img_object.type());
for (int i=0;i<combine.cols;i++) {
    if (i < img_object.cols) {
         combine.col(i) = img_object.col(i);
    } else {
         combine.col(i) = img_scene.col(i-img_object.col);
    }
}
Run Code Online (Sandbox Code Playgroud)

我没有测试过,但这就是你可以做到的方式