0
我有float x,float y,float z值的圖像。我想通過複製z值構造一個16位png深度圖像。我得到的圖像有一些無效點。以下是我的代碼。從原始緩衝區數據創建原始圖像
uint16_t* depthValues = new uint16_t[size];
auto sampleVector(DepthPoints);
for (unsigned int i = 0; i < sampleVector.size(); i++)
{
depthValues[i] = (sampleVector.at(i).z) * 65536;
}
Mat newDepthImage = cv::Mat(var.height, var.width, CV_16UC1,depthValues);
imwrite(Location, CImage);
可有人告訴我,如果我能浮點值複製到一個unsigned char數組創建圖像? 這就是爲什麼我的圖像有無效點?
什麼「結果有一些無效點」的確切含義? z值的範圍是「[0 - 1]」嗎?如果z的值大於1,則大於1的所有值都是65535. – DimChtz
圖像的某些區域很暗。我不太確定浮點數據是否可以複製到'uint16_t *'。那是我們如何創建一個深度圖像? – MThomas
'z'值的範圍是多少?也許所有你需要的是'depthValues [i] = static_cast(sampleVector.at(i).z);'BTW,x,y,z是指R,G,B? –
DimChtz