簡體   English   中英

將 CV_32FC1 轉換為 CV_16UC1

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

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