具體函式如下:disp是我求得視差圖,Q是之前立體矯正得到的。
reprojectImageTo3D(disp, xyz, Q, true);
xyz *= 1.6;
for (int y = 0; y < xyz.rows; ++y)
{
for (int x = 0; x <xyz.cols; ++x)
{
cv::Point3f point = xyz.at<cv::Point3f>(y, x);
point.y = -point.y;
xyz.at<cv::Point3f>(y, x) = point;
}
}
cv::destroyAllWindows();
cout << endl << "保存點云坐標... " << endl;
saveXYZ(point_cloud_filename, xyz);
原圖是

我才用的方法就是opencv自帶的sgbm,可以得到視差圖如下:

我存在兩個問題,
第一個,我得到的x y z坐標都很小,在10左右,所以得到三維坐標的單位是什么?我所理解的乘以1.6后單位應該是cm,明顯覺得坐標值不對。
第二個,我用meshlab顯示三維坐標,點云呈射線狀(或者說圓錐形?)哪里出了問題呢?是因為我視差效果比較差嗎,我可以通過什么方法來提高呢,求大神們推薦?還是標定的問題?
希望有人能幫幫我呀~感激不盡
uj5u.com熱心網友回復:
自己頂一下~uj5u.com熱心網友回復:
你好,我的點云也是這個效果,射線狀的圓錐那種,請問你解決了嗎?能和我聯系一下嗎?[email protected],謝謝你了。uj5u.com熱心網友回復:
圓錐形是正確的uj5u.com熱心網友回復:
將reprojectimageto3d()得到的結果乘以2.8346就是實際坐標值(1像素≈2.8346厘米)轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/48297.html
標籤:機器視覺
上一篇:Loto實踐干貨(6)用示波器+邏輯分析儀進行SPI解碼
下一篇:[求科普貼]關于GenICam
