#include <iostream>
#include <fstream>
#include <stdio.h>
static const char* keys =
{
"{@inputPath | | 包含在 yaml 文件中已保存的包裹相位图的路径}"
"{@outputUnwrappedName | | 将要保存为 yaml 文件和 8 位 png 文件的未包裹相位图的路径}"
};
static void help()
{
cout << "\n此示例演示如何使用 \"相位展开模块\" 展开 yaml 文件中保存的相位图"
" (请参见 extra_data\\phase_unwrapping\\data\\wrappedpeaks.yml)。"
" 文件中的 mat 名称应当是 \"phaseValue\"。结果也会保存在一个 yaml 文件"
" 中。还将创建两张图像 (wrapped.png 和 output_name.png)"
" 以便进行可视化。"
"\n要调用:./example_phase_unwrapping_unwrap <input_path> <output_unwrapped_name> \n"
<< endl;
}
int main(
int argc,
char **argv)
{
if( inputPath.empty() || outputUnwrappedName.empty() )
{
help();
return -1;
}
FileStorage fsOutput(outputUnwrappedName +
".yml", FileStorage::WRITE);
fsInput["phaseValues"] >> wPhaseMap;
params.width = wPhaseMap.
cols;
params.height = wPhaseMap.
rows;
phaseUnwrapping->unwrapPhaseMap(wPhaseMap, uPhaseMap);
fsOutput << "phaseValues" << uPhaseMap;
phaseUnwrapping->getInverseReliabilityMap(reliabilities);
Mat uPhaseMap8, wPhaseMap8, reliabilities8;
uPhaseMap.convertTo(uPhaseMap8,
CV_8U, 1, 128);
imshow("reliabilities", reliabilities);
imshow("wrapped phase map", wPhaseMap8);
imshow("unwrapped phase map", uPhaseMap8);
imwrite(outputUnwrappedName + ".png", uPhaseMap8);
imwrite("reliabilities.png", reliabilities8);
bool loop = true;
while( loop )
{
char key = (char)waitKey(0);
if( key == 27 )
{
loop = false;
}
}
return 0;
}
用于解析命令行。
定义 utility.hpp:820
XML/YAML/JSON 文件存储类,封装了用于编写或读取文件所需的所有信息...
定义 persistence.hpp:304
int rows
矩阵维度(行数和列数),当矩阵维度大于 2 时为 (-1, -1)
定义 mat.hpp:2138
void convertTo(OutputArray m, int rtype, double alpha=1, double beta=0) const
将数组转换为另一数据类型(并可选地进行缩放)。
void release()
减少引用计数器,并在需要时释放矩阵。
std::string String
定义 cvstd.hpp:151
std::shared_ptr< _Tp > Ptr
定义 cvstd_wrapper.hpp:23
#define CV_8U
定义 interface.h:73
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
与磁盘上的文件关联的文件存储的“黑匣子”表示形式。
定义 core.hpp:102
phaseUnwrapping 构造函数的参数。
定义 histogramphaseunwrapping.hpp:79
要使用此示例,应将包相位图值存储在 yml 文件中,作为 CV_32FC1 Mat,名为“phaseValues”。数据路径和用于保存展开相位图的名称必须在命令行中设置。结果以浮点精度保存在 yml 文件中,并以 8 位图像保存以用于可视化目的。
if( inputPath.empty() || outputUnwrappedName.empty() )
{
help();
return -1;
}
FileStorage fsOutput(outputUnwrappedName +
".yml", FileStorage::WRITE);
fsInput["phaseValues"] >> wPhaseMap;
params.width = wPhaseMap.
cols;
params.height = wPhaseMap.
rows;
对包相位图进行展开并将结果保存到 yml 文件中。我们还可以获取用于可视化目的的可靠性图。对展开相位图和可靠性图进行转换为 8 位图像,以便将其保存为 png 文件中。
phaseUnwrapping->unwrapPhaseMap(wPhaseMap, uPhaseMap);
fsOutput << "phaseValues" << uPhaseMap;
phaseUnwrapping->getInverseReliabilityMap(reliabilities);
Mat uPhaseMap8, wPhaseMap8, reliabilities8;
uPhaseMap.convertTo(uPhaseMap8,
CV_8U, 1, 128);
imshow("reliabilities", reliabilities);
imshow("wrapped phase map", wPhaseMap8);
imshow("unwrapped phase map", uPhaseMap8);
imwrite(outputUnwrappedName + ".png", uPhaseMap8);
imwrite("reliabilities.png", reliabilities8);