Opencv FlOAT64型別Mat訪問錯誤

2021-09-12 15:05:48 字數 839 閱讀 7765

最近在寫影象拼接的演算法,由於需要對變換矩陣homo進行一定的處理,需要對float64型mat元素進行改變,查了許多資料有很多好用的,比如說這個:

但是我一使用就報錯

homo = cv::findhomography(imagepoints2, imagepoints1, cv_ransac);

cv::mat_::iterator it = homo.begin();

cv::mat_::iterator itend = homo.end();

cout << homo

homo.at(1, 0) = 0;

homo.at(1, 1) = 1;

homo.at(2, 0) = 0;

homo.at(2, 1) = 0;

如上所示,嘗試了好幾種方法都報錯

debug的時候可以看到homo是float64型別的

後來,才知道,原來float64型別就是double型別而不是float型別。

將原來的程式改為

homo = cv::findhomography(imagepoints2, imagepoints1, cv_ransac);

cout << homo

homo.at(1, 0) = 0;

homo.at(1, 1) = 1;

homo.at(2, 0) = 0;

homo.at(2, 1) = 0;

就沒有報錯了。

int64型別的使用

int型別範圍為 2 31,2 31 即 2147483648 2147483647,unsigned型別範圍為 0,2 32 即0 2147483648,當需要表示的整數小於10位時可以使用。當需要表示的整數大於10位時,使用int型別將會出現溢位,此時可以使用 int64型別。int64型別範圍...

6 6 型別推斷

6.6 型別推斷 我們曾經討論過值的型別推斷,知道在 c 3.0 中用 var 關鍵字,在 f 中用 let 繫結。從本節開始,我們將討論由 c 和 f 共有的另乙個方面,當在 c 中呼叫泛型方法時,如 option.some 清單 5.9 或 option.map 清單 6.13 可以顯式指定型別...

21型別轉換

典型案例總結 靜態型別轉換,編譯的時c 編譯器會做型別檢查 基本型別能轉換 但是不能轉換指標型別,只要隱式型別轉換可以的地方都可以使用static cast。若不同型別之間,進行強制型別轉換,用reinterpret cast 進行重新解釋。一般性結論 總結 static cast 和reinter...