[英]Converting CV_32FC1 to CV_16UC1
我正在嘗試將從模擬深度相機獲得的float
圖像轉換為CV_16UC1
。 相機以CV_32FC1
格式發布深度。 我嘗試了很多方法,但結果並不合理。
cv::Mat depth_cv(512, 512, CV_32FC1, depth);
cv::Mat depth_converted;
depth_cv.convertTo(depth_converted,CV_16UC1);
結果是黑色圖像。 如果我使用比例因子,圖像將是白色的。
我也嘗試過這樣做:
float depthValueF [512*512];
for (int i=0;i<resolution[1];i++){ // go through the rows (y)
for (int j=0;j<resolution[0];j++){ // go through the columns (x)
depthValueOfPixel=depth[i*resolution[0]+j]; // this is location j/i, i.e. x/y
depthValueF[i*resolution[0]+j] = (depthValueOfPixel) * (65535.0f);
}
}
它也沒有成功。
嘗試使用cv::normalize
代替,它不僅會將圖像轉換為正確的數據類型,而且會在后台正確地為您進行縮放。
所以:
cv::Mat depth_cv(512, 512, CV_32FC1, depth);
cv::Mat depth_converted;
cv::normalize(depth_cv, depth_converted, 0, 65535, NORM_MINMAX, CV_16UC1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.