从cv :: Mat获取部分数据

时间:2014-09-05 02:56:37

标签: c++ opencv mat

我有一个大小为11000x1085的cv :: Mat src(类型:CV_32F)。

获取行数据

cv::Mat dst = src.row();

如果我想从第4列到第1085页获取数据,我会这样做。

for(int i = 0; i < 11000; i++)
   for(int j = 3; j < 1085; j++)
      dst.at<double>(i,j-3) = src.at<double>(i,j);

还有其他方法可以更快地完成吗?

2 个答案:

答案 0 :(得分:2)

这取决于您是否要制作数据的深层副本。您可能希望构建一个感兴趣的区域(ROI),如本有用的教程所述,该教程描述了使用cv :: Mat构建数据的其他方法:

http://docs.opencv.org/doc/tutorials/core/mat_the_basic_image_container/mat_the_basic_image_container.html

为矩形创建感兴趣区域(ROI):

Mat Dst (src, Rect(3, 0, 11000, 1085) );

如果要复制数据:

Mat Clone = Dst.clone();

答案 1 :(得分:1)

您可以使用Mat::colRange

cv::Mat dst = src.colRange(3, 1085);