cv Mat ptr 和 at 注意事項

2021-08-21 20:37:53 字數 816 閱讀 3139

宣告了乙個cv::mat cloud(1, 1000, cv_32fc4)

然後point的定義如下

struct point;};

};

然後我想取第i個point的指標

query = flann::matrix(reinterpret_cast

(cloud.ptr(i)), 1, 3);

結果 是錯誤的

正確的方式 應該為

query = flann::matrix(reinterpret_cast

(cloud.ptr(0, i)), 1, 3);

原來對於ptr來說只輸入1個引數**取第幾行的位址

但是at就不一樣了, 其實輸入1個引數還是能返回正確的結果, 這是為什麼呢?

看看opencv 的原始碼吧

template

inline _tp* mat::ptr(int y)

template

inline _tp& mat::at(int i0)

但是為什麼第乙個錯誤的呼叫沒有觸發

cv_dbgassert( y == 0 || (data && dims >= 1 && (unsigned)y < (unsigned)size.p[0]) );
很奇怪

另外

cloud.ptr(i)[j] = cloud.at(i,j)

介紹和注意事項

該工具包使您能夠通過允許ibm bpm讀取infosphere mdm事務建立的xml來整合infosphere mdm和ibm bpm。該工具包允許針對infosphere mdm使用任何事務,因此您不再侷限於事務的子集。另外,您可以通過簡單地將工具包匯入應用程式來使用整合。您不再需要執行大量部署...

typedef巧用和注意事項

vs typedef 還可以掩飾復合型別,如指標和陣列。例如,你不用像下面這樣重複定義有 81 個字元元素的陣列 char line 81 char text 81 定義乙個 typedef,每當要用到相同型別和大小的陣列時,可以這樣 typedef char line 81 此時line型別即代表...

ACM INT MAX和INT MIN注意事項

int min在標準標頭檔案limits.h中定義。define int max 2147483647 define int min int max 1 在c c 語言中,不能夠直接使用 2147483648來代替最小負數,因為這不是乙個數字,而是乙個表示式。表示式的意思是對整數21473648取負...