【问题标题】:Merging cv::Mat horizontally水平合并 cv::Mat
【发布时间】:2013-12-03 10:31:10
【问题描述】:

我想合并几个cv::Mat,当我使用mat1.push_back(mat2)时,它会在mat1的末尾垂直添加mat2,有没有办法横向做到这一点? 我能想到的唯一其他选择是将每个cv::Mat 变成cv::RotatedRect,旋转它,创建一个新的Mat,合并,最后以相同的方式旋转所有内容,但如果有的话,它听起来毫无意义另一种方式

【问题讨论】:

    标签: c++ opencv ubuntu


    【解决方案1】:

    看看hconcatvconcat

    用法:

    Mat M1,M2,HM,VM;
    // M1 and M2 - source matrices
    // HM,VM - results matrices
     ...
    
     hconcat(M1,M2,HM); // horizontal concatenation
     vconcat(M1,M2,VM); // vertical   concatenation
    

    请注意,这些方法没有记录在案。

    【讨论】:

    • 第 3 行注释中的小错误(HM 和 VM,而不是 MH 和 MV),但不影响结果 :)
    • 请注意,这些方法现已记录在案:hconcatvconcat
    • 答案中提到了。
    • 我尝试使用不同行数的 hconcat 崩溃。仅当行数相同时才有效。但如果列数不同则可以正常工作
    • 是的,这是正确的,不能是别的。您不能将具有不同行数的水平矩阵组合在一起。因为您不能将具有不同列数的垂直矩阵组合起来。
    【解决方案2】:

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

    Mat image1, image2;
    hconcat(image1,image2,image1);//Syntax->
    hconcat(source1,source2,destination);
    

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

    Mat image;
    Mat columns=image.colRange(20,30);
    hconcat(image,columns,image);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      • 2014-06-21
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多