【问题标题】:Transposing a Mat image into a larger Mat image, Opencv将 Mat 图像转置为更大的 Mat 图像,Opencv
【发布时间】:2014-03-31 04:54:25
【问题描述】:

我编写了一个函数来获取一个 Mat 图像并将其转置到一个大小为三倍的空白图像的中心。我已经编写了这样做的函数,但我觉得在效率方面可以提高。

void transposeFrame( cv::Mat &frame){

   Mat new_frame( frame.rows * 3, frame.cols * 3, CV_8UC3, Scalar(0,0,255));

   Rect dim = Rect( frame.rows, frame.cols, frame.rows * 2, frame.cols * 2);

   Mat subview = new_frame(dim);

   frame.copyTo(subview);
   frame = subview;
}

有没有更好的方法来执行这个操作?

【问题讨论】:

  • 为什么每个维度的Rect大小都是2x?

标签: c++ opencv mat


【解决方案1】:

我会使用类似的东西:-

Mat frame_tpsed;
cv::Mat::transpose(frame, frame_tpsed);
new_frame(Rect(frame.rows, frame.cols, frame.rows*2, frame.cols*2))  = frame_tpsed

在 opencvDocs 上转置:http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#void transpose(InputArray src, OutputArray dst)

没试过。忘记说了。

【讨论】:

    【解决方案2】:

    您可以使用copyMakeBorder 函数。但是,我认为它的运行速度不会快得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      • 2014-09-22
      • 1970-01-01
      相关资源
      最近更新 更多