【问题标题】:OpenCV - Getting a part of an imageOpenCV - 获取图像的一部分
【发布时间】:2019-03-26 09:48:25
【问题描述】:

我想将图像的一部分加载到另一个图像中。有几种简单的方法可以做到这一点,例如cv::Mat OutImage = Image(cv::Rect(7,47,1912,980)),但是结果图像太大例如:
我得到了一张 1920 x 1024 像素的图像。我想从中剪下一个 cv:Rect(7,47,1912,980) 。我建议,生成的图像的大小为 (1912 - 7 = 1905) x (980 - 47 = 933) 像素,但它有 1912 x 980。看来,Opencv 只是在右下侧切割并保持左上区域。

图像的尺寸很重要,因为在下一步中我想执行减法,这仅在 Mat 对象具有相同尺寸时才有效。我也不想用自己设计的循环,因为性能很重要。

有什么想法吗?

问候, 一月

【问题讨论】:

  • 它是cv::Rect(x, y, width, height),因此您得到的图像是1912 x 980。你有这方面的工作代码吗?因为 (47 + 980) > 1024,这应该会导致某种断言!?
  • 你是对的。我得到了正确的而不是宽度和底部而不是高度:-) 谢谢。我会试试的。

标签: c++ opencv mat


【解决方案1】:

实际上是cv:Rect(x,y,width,height),所以你应该将最后两个参数设置为你愿意输出的宽度和高度。请注意您设置的范围,否则会导致错误。

【讨论】:

    【解决方案2】:

    我也处理过这个问题,我将在这里举个例子,它对我很有效。你也可以试试这个。

     Rect const box(100, 295, 400, 185); //this mean the first corner is
                                          //(x,y)=(100,295)
                                         // and the second corner is
                                         //(x + b, y+c )= (100 +400,295+185)
    
     Mat ROI = frame(box);
    

    【讨论】:

      猜你喜欢
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 2011-02-04
      • 1970-01-01
      相关资源
      最近更新 更多