簡體   English   中英

在cv :: Mat中將float轉換為uchar的偏移量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM