2014-09-05 131 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