[英]offset converting float to uchar in cv::Mat
在加快某些流程的過程中(無法命名,抱歉),我嘗試創建一個
cv::Mat_<uchar> discretization;
現在當我在浮動中獲得深度圖時
cv::Mat_<float> depth_map;
discretization = depth_map / resolution_mtr;
其中resolution_mtr是浮點數。 當前值為0.1。 當我執行此操作時,對於深度圖為0.48的值,我得到的離散化值為5。我的理解是應該為4。 我想這是四舍五入到最近的uchar。 有沒有辦法解決這個問題而無需進入for循環? 基本上我想在離散化中使用下限值,而不是四舍五入。
為什么不定義繼承的類CvNoRoundMat並覆蓋其operator +?
您可以從結果中減去0.5。
這段代碼
float resolution_mtr = 0.1;
float vals[] = {0.48, 0.4, 0.38, 0.31};
cv::Mat_<float> depth_map(1,4,vals);
cv::Mat_<uchar> discretization( depth_map / resolution_mtr - 0.5);
std::cout << "depth_map: " << depth_map << std::endl;
std::cout << "discretization: " << discretization << std::endl;
將為您提供以下結果:
depth_map: [0.47999999, 0.40000001, 0.38, 0.31]
discretization: [4, 4, 3, 3]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.