本文整理汇总了C++中UIntSet::clear方法的典型用法代码示例。如果您正苦于以下问题:C++ UIntSet::clear方法的具体用法?C++ UIntSet::clear怎么用?C++ UIntSet::clear使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UIntSet
的用法示例。
在下文中一共展示了UIntSet::clear方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: overlap
vector<UIntSet> getHDRStacks(const PanoramaData & pano, UIntSet allImgs, PanoramaOptions opts)
{
vector<UIntSet> result;
// if no images are available, return empty result vector
if ( allImgs.empty() )
{
return result;
}
UIntSet stack;
CalculateImageOverlap overlap(&pano);
overlap.calculate(10); // we are testing 10*10=100 points
do {
unsigned srcImg = *(allImgs.begin());
stack.insert(srcImg);
allImgs.erase(srcImg);
// find all images that have a suitable overlap.
for (UIntSet::iterator it = allImgs.begin(); it != allImgs.end(); ) {
unsigned srcImg2 = *it;
++it;
if(overlap.getOverlap(srcImg,srcImg2)>opts.outputStacksMinOverlap)
{
stack.insert(srcImg2);
allImgs.erase(srcImg2);
}
}
result.push_back(stack);
stack.clear();
} while (allImgs.size() > 0);
return result;
}
示例2: getExposureLayers
vector<UIntSet> getExposureLayers(const PanoramaData & pano, UIntSet allImgs, PanoramaOptions opts)
{
vector<UIntSet> result;
// if no images are available, return empty result vector
if ( allImgs.empty() )
{
return result;
}
UIntSet stack;
do {
unsigned srcImg = *(allImgs.begin());
stack.insert(srcImg);
allImgs.erase(srcImg);
// find all images that have a suitable overlap.
SrcPanoImage simg = pano.getSrcImage(srcImg);
double maxEVDiff = opts.outputLayersExposureDiff;
for (UIntSet::iterator it = allImgs.begin(); it != allImgs.end(); ) {
unsigned srcImg2 = *it;
++it;
SrcPanoImage simg2 = pano.getSrcImage(srcImg2);
if ( fabs(simg.getExposureValue() - simg2.getExposureValue()) < maxEVDiff )
{
stack.insert(srcImg2);
allImgs.erase(srcImg2);
}
}
result.push_back(stack);
stack.clear();
} while (allImgs.size() > 0);
return result;
}
示例3: main
//.........这里部分代码省略.........
return 1;
};
if (onlyPair && wholePano)
{
cerr << "Options -p and -w can't used together" << endl;
return 1;
};
string input=argv[optind];
Panorama pano;
ifstream prjfile(input.c_str());
if (!prjfile.good()) {
cerr << "could not open script : " << input << endl;
return 1;
}
pano.setFilePrefix(hugin_utils::getPathPrefix(input));
DocumentData::ReadWriteError err = pano.readData(prjfile);
if (err != DocumentData::SUCCESSFUL) {
cerr << "error while parsing panos tool script: " << input << endl;
cerr << "DocumentData::ReadWriteError code: " << err << endl;
return 1;
}
size_t nrImg=pano.getNrOfImages();
if (nrImg < 2)
{
cerr << "Panorama should consist of at least two images" << endl;
return 1;
}
if (pano.getNrOfCtrlPoints() < 3)
{
cerr << "Panorama should contain at least 3 control point" << endl;
};
size_t cpremoved1=0;
UIntSet CPtoRemove;
// step 1 with pairwise optimisation
if(!wholePano)
{
CPtoRemove=getCPoutsideLimit_pair(pano,n);
if (CPtoRemove.size()>0)
for(UIntSet::reverse_iterator it = CPtoRemove.rbegin(); it != CPtoRemove.rend(); ++it)
pano.removeCtrlPoint(*it);
cpremoved1=CPtoRemove.size();
};
// step 2 with optimisation of whole panorama
bool unconnected=false;
if(!onlyPair)
{
//check for unconnected images
CPGraph graph;
createCPGraph(pano, graph);
CPComponents comps;
int parts=findCPComponents(graph, comps);
if (parts > 1)
{
unconnected=true;
}
else
{
CPtoRemove.clear();
if(skipOptimisation)
{
std::cout << endl << "Skipping optimisation, current image positions will be used." << endl;
};
CPtoRemove=getCPoutsideLimit(pano,n,skipOptimisation);
if (CPtoRemove.size()>0)
for(UIntSet::reverse_iterator it = CPtoRemove.rbegin(); it != CPtoRemove.rend(); ++it)
pano.removeCtrlPoint(*it);
};
};
cout << endl;
if(!wholePano)
cout << "Removed " << cpremoved1 << " control points in step 1" << endl;
if(!onlyPair)
if(unconnected)
cout <<"Skipped step 2 because of unconnected image pairs" << endl;
else
cout << "Removed " << CPtoRemove.size() << " control points in step 2" << endl;
//write output
OptimizeVector optvec = pano.getOptimizeVector();
UIntSet imgs;
fill_set(imgs,0, pano.getNrOfImages()-1);
// Set output .pto filename if not given
if (output=="")
{
output=input.substr(0,input.length()-4).append("_clean.pto");
}
ofstream of(output.c_str());
pano.printPanoramaScript(of, optvec, pano.getOptions(), imgs, false, hugin_utils::getPathPrefix(input));
cout << endl << "Written output to " << output << endl;
return 0;
}
示例4: automatch
CPVector AutoPanoSiftMultiRow::automatch(CPDetectorSetting &setting, Panorama & pano, const UIntSet & imgs,
int nFeatures, int & ret_value, wxWindow *parent)
{
CPVector cps;
if (imgs.size() < 2)
{
return cps;
};
std::vector<wxString> keyFiles(pano.getNrOfImages());
//generate cp for every consecutive image pair
unsigned int counter=0;
for(UIntSet::const_iterator it = imgs.begin(); it != imgs.end(); )
{
if(counter==imgs.size()-1)
break;
counter++;
UIntSet ImagePair;
ImagePair.clear();
ImagePair.insert(*it);
it++;
ImagePair.insert(*it);
AutoPanoSift matcher;
CPVector new_cps;
new_cps.clear();
if(setting.IsTwoStepDetector())
new_cps=matcher.automatch(setting, pano, ImagePair, nFeatures, keyFiles, ret_value, parent);
else
new_cps=matcher.automatch(setting, pano, ImagePair, nFeatures, ret_value, parent);
if(new_cps.size()>0)
AddControlPointsWithCheck(cps,new_cps);
if(ret_value!=0)
{
Cleanup(setting, pano, imgs, keyFiles, parent);
return cps;
};
};
// now connect all image groups
// generate temporary panorama to add all found cps
UIntSet allImgs;
fill_set(allImgs, 0, pano.getNrOfImages()-1);
Panorama optPano=pano.getSubset(allImgs);
for (CPVector::const_iterator it=cps.begin();it!=cps.end();++it)
optPano.addCtrlPoint(*it);
CPGraph graph;
createCPGraph(optPano, graph);
CPComponents comps;
int n = findCPComponents(graph, comps);
if(n>1)
{
UIntSet ImagesGroups;
for(unsigned int i=0;i<n;i++)
{
ImagesGroups.insert(*(comps[i].begin()));
if(comps[i].size()>1)
ImagesGroups.insert(*(comps[i].rbegin()));
};
AutoPanoSift matcher;
CPVector new_cps;
if(setting.IsTwoStepDetector())
new_cps=matcher.automatch(setting, optPano, ImagesGroups, nFeatures, keyFiles, ret_value, parent);
else
new_cps=matcher.automatch(setting, optPano, ImagesGroups, nFeatures, ret_value, parent);
if(new_cps.size()>0)
AddControlPointsWithCheck(cps,new_cps,&optPano);
if(ret_value!=0)
{
Cleanup(setting, pano, imgs, keyFiles, parent);
return cps;
};
createCPGraph(optPano,graph);
n=findCPComponents(graph, comps);
};
if(n==1 && setting.GetOption())
{
//next steps happens only when all images are connected;
//now optimize panorama
PanoramaOptions opts = pano.getOptions();
opts.setProjection(PanoramaOptions::EQUIRECTANGULAR);
// calculate proper scaling, 1:1 resolution.
// Otherwise optimizer distances are meaningless.
opts.setWidth(30000, false);
opts.setHeight(15000);
optPano.setOptions(opts);
int w = optPano.calcOptimalWidth();
opts.setWidth(w);
opts.setHeight(w/2);
optPano.setOptions(opts);
//generate optimize vector, optimize only yaw and pitch
OptimizeVector optvars;
const SrcPanoImage & anchorImage = optPano.getImage(opts.optimizeReferenceImage);
for (unsigned i=0; i < optPano.getNrOfImages(); i++)
{
std::set<std::string> imgopt;
if(i==opts.optimizeReferenceImage)
{
//optimize only anchors pitch, not yaw
imgopt.insert("p");
//.........这里部分代码省略.........