2
我嘗試將boost :: array rightCamInfo.K轉換爲opencv墊cv :: Mat K。我沒有發現這個設置的任何功能,所以我寫了一個迭代方法:轉換增強陣列以打開cv墊
float tempK[9];
cv::Mat K;
for (int i = 0; i < 9; i++) {
tempK[i] = rightCamInfo.K[i];
}
K = cv::Mat(3, 3, CV_64F, &tempK);
但是這給了我奇怪的結果。給定數據的範圍在400和0之間,結果矩陣約爲5 * 10 ^( - 315)。所以顯然有一些轉換錯誤。哪裏不對?我爲矩陣選擇了錯誤的類型還是這種數組類型不合適?
這樣的小東西的第一個元素,但它的工作原理。謝謝。你能否簡要解釋爲什麼這有所作爲? – BeJay
'CV_32F(32位)'表示我正在讀取的字節是浮點數,而'CV_64F'表示它是雙精度(64位)'。當您嘗試使用CV_64F讀取時,您嘗試讀取float值,就像它是double一樣。 – smttsp