#include <iostream>
#include <fstream>
#include <stdio.h>
static const char* keys =
{
"{@inputPath | | Path of the wrapped phase map saved in a yaml file }"
"{@outputUnwrappedName | | Path of the unwrapped phase map to be saved in a yaml file and as an 8 bit png}"
};
static void help()
{
cout << "\nThis example shows how to use the \"Phase unwrapping module\" to unwrap a phase map"
" saved in a yaml file (see extra_data\\phase_unwrapping\\data\\wrappedpeaks.yml)."
" The mat name in the file should be \"phaseValue\". The result is saved in a yaml file"
" too. Two images (wrapped.png and output_name.png) are also created"
" for visualization purpose."
"\nTo call: ./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;
}
Designed for command line parsing.
Definition utility.hpp:915
XML/YAML/JSON file storage class that encapsulates all the information necessary for writing or readi...
Definition persistence.hpp:261
Comma-separated Matrix Initializer.
Definition mat.hpp:964
int cols
Definition mat.hpp:2488
int rows
the number of rows and columns or (-1, -1) when the matrix has more than 2 dimensions
Definition mat.hpp:2488
void convertTo(OutputArray m, int rtype, double alpha=1, double beta=0) const
Converts an array to another data type with optional scaling.
void release()
Decrements the reference counter and deallocates the matrix if needed.
std::string String
Definition cvstd.hpp:151
std::shared_ptr< _Tp > Ptr
Definition cvstd_wrapper.hpp:23
#define CV_8U
Definition interface.h:54
int main(int argc, char *argv[])
Definition highgui_qt.cpp:3
Parameters of phaseUnwrapping constructor.
Definition histogramphaseunwrapping.hpp:79
この例を使用するには、ラップされた位相マップの値を CV_32FC1 の Mat として「phaseValues」という名前でymlファイルに保存しておく必要がある。データへのパスとアンラップされた位相マップを保存する名前は、コマンドラインで設定する必要がある。結果は浮動小数点精度でymlファイルに保存され、可視化のために8ビット画像としても保存される。
ラップされた位相マップがアンラップされ、結果がymlファイルに保存される。可視化のために信頼度マップも取得できる。アンラップされた位相マップと信頼度マップは、pngファイルとして保存するために8ビット画像に変換される。
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);