本文整理汇总了C++中channel::apply方法的典型用法代码示例。如果您正苦于以下问题:C++ channel::apply方法的具体用法?C++ channel::apply怎么用?C++ channel::apply使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类channel
的用法示例。
在下文中一共展示了channel::apply方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: apply
// On place apply for type channel8!
bool distanceTransform::apply(channel& srcdest) const {
if ((srcdest.rows() < 2) || (srcdest.columns() < 2)) {
setStatusString("At least 2 pixels at each axis expected");
return false;
}
const parameters& param = getParameters();
if( param.distance == parameters::EightNeighborhood
|| param.distance == parameters::FourNeighborhood){
// ensure that the non-zero values are maximal
int y;
vector<channel::value_type>::iterator it,eit;
const float max = static_cast<float>(srcdest.rows()+srcdest.columns());
for (y=0;y<srcdest.rows();y++) {
vector<channel::value_type>& vct = srcdest.getRow(y);
for (it=vct.begin(),eit=vct.end();it!=eit;++it) {
if ((*it)>0.0f) {
(*it)=max;
}
}
}
}
switch(param.distance){
case parameters::EightNeighborhood:
iteration8back(srcdest);
iteration8(srcdest);
return true;
case parameters::FourNeighborhood:
iteration4back(srcdest);
iteration4(srcdest);
return true;
case parameters::Euclidean:
EDT_1D(srcdest);
EDT_2D(srcdest);
srcdest.apply(sqrt);
return true;
case parameters::EuclideanSqr:
EDT_1D(srcdest);
EDT_2D(srcdest);
return true;
case parameters::EightSED:
sedFiltering(srcdest, true);
srcdest.apply(sqrt);
return true;
case parameters::EightSEDSqr:
sedFiltering(srcdest,true);
return true;
case parameters::FourSED:
sedFiltering(srcdest, false);
srcdest.apply(sqrt);
return true;
case parameters::FourSEDSqr:
sedFiltering(srcdest, false);
return true;
default:
return false;
}
};