2014-09-05 125 views
1

我有一个cv :: Mat src(类型:CV_32F),大小为11000x1085。获取cv数据的一部分:: Mat

获取一行数据

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

这取决于您是否要制作数据的深层副本。您可能要构建利益(ROI)的区域作为这是很有帮助的教程,其中介绍了其他方法来与工作简历描述::垫结构化你的数据:

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(); 
+0

不应该是'Mat Dst(src,Rect(3,0,1085 - 3,11000));'? – Bull 2014-09-05 05:12:56

+0

谢谢@B ...,已更新 – Klathzazt 2014-09-05 05:17:00