将Mat图像转换为更大的Mat图像,Opencv

时间:2014-03-31 04:54:26

标签: c++ opencv mat

我写了一个函数来拍摄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;
}

是否有更好的预处理此操作?

2 个答案:

答案 0 :(得分: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转置(InputArray src,OutputArray dst)

没试过。忘了提它。

答案 1 :(得分:0)

您可以使用copyMakeBorder功能。但是,我认为它的工作速度要快得多。