我写了一个函数来拍摄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;
}
是否有更好的预处理此操作?
答案 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功能。但是,我认为它的工作速度要快得多。