帮我写一个c++代码,手动输入深度值,生成深度图tif
时间: 2024-03-06 21:48:27 浏览: 88
好的,以下是生成深度图tif格式的C++代码:
```c++
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include <tiffio.h>
using namespace std;
int main()
{
int width, height;
string file_name;
// 读取深度图的宽度和高度
cout << "请输入深度图的宽度和高度(用空格隔开):" << endl;
cin >> width >> height;
// 初始化深度值数组
vector<float> depth_map(width * height);
// 手动输入深度值
for (int i = 0; i < width * height; i++) {
cout << "请输入深度值(第 " << i + 1 << " 个):" << endl;
cin >> depth_map[i];
}
// 保存深度值到TIFF文件中
cout << "请输入深度图文件名:" << endl;
cin >> file_name;
TIFF* tif = TIFFOpen(file_name.c_str(), "w");
TIFFSetField(tif, TIFFTAG_IMAGEWIDTH, width);
TIFFSetField(tif, TIFFTAG_IMAGELENGTH, height);
TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_IEEEFP);
TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 32);
TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 1);
TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
for (int row = 0; row < height; row++)
{
TIFFWriteScanline(tif, &depth_map[row * width], row, 0);
}
TIFFClose(tif);
return 0;
}
```
这份代码会询问你深度图的宽度和高度,然后手动输入每个像素点的深度值,最后将深度值保存到指定的tif文件中。注意,这里使用了libtiff库,你需要在编译时加上`-ltiff`参数。
阅读全文