将 Mat 图像转置为更大的 Mat 图像,Opencv
Posted
技术标签:
【中文标题】将 Mat 图像转置为更大的 Mat 图像,Opencv【英文标题】:Transposing a Mat image into a larger Mat image, 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? 【参考方案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 函数。但是,我认为它的运行速度不会快得多。
【讨论】:
以上是关于将 Mat 图像转置为更大的 Mat 图像,Opencv的主要内容,如果未能解决你的问题,请参考以下文章