当前位置: 首页>>代码示例>>C++>>正文


C++ AContainer::pos方法代码示例

本文整理汇总了C++中AContainer::pos方法的典型用法代码示例。如果您正苦于以下问题:C++ AContainer::pos方法的具体用法?C++ AContainer::pos怎么用?C++ AContainer::pos使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在AContainer的用法示例。


在下文中一共展示了AContainer::pos方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: imagesMoves

static Point<bool> imagesMoves( const AContainer& container ){
    if( container.count() == 0 )
        return { false, false };
    
    Point<bool> moves{ false, false };
    auto base = container.pos( 0 );
    for( unsigned i=1; i<container.count(); ++i ){
        auto current = container.pos( i );
        moves.x = moves.x || (base.x != current.x);
        moves.y = moves.y || (base.y != current.y);
    }
    
    return moves;
}
开发者ID:zjucsxxd,项目名称:Overmix,代码行数:14,代码来源:MovementGraph.cpp

示例2: render

ImageEx EstimatorRender::render(const AContainer &group, AProcessWatcher *watcher) const {
    auto planes_amount = group.image(0).size();
    auto min_point = group.minPoint();
    ProgressWrapper( watcher ).setTotal( planes_amount * iterations * group.count() );
    
    auto est = AverageRender().render( group ); //Starting estimate
    est.scaleFactor( upscale_factor );
    auto beta = color::WHITE * this->beta / group.count();
    for( unsigned c=0; c<planes_amount; ++c ){
        for( int i=0; i<iterations; i++ ){
            if( ProgressWrapper(watcher).shouldCancel() )
                return {};
            auto output_copy = est[c];
            
            //Improve estimate
            for( unsigned j=0; j<group.count(); j++, ProgressWrapper( watcher ).add() )
                sign( output_copy, degrade( est[c], {group, j, c} ), group.image(j)[c], group.pos(j)-min_point
                    , beta, channelScale(group, j, c)*upscale_factor );
            
            //Regularization
            if( lambda > 0.0 )
                regularize( est[c], output_copy, reg_size, alpha, beta, lambda );
            else
                est[c] = output_copy;
        }
        
        //DEBUG: See how close our model gets to the input data
        for( unsigned j=0; j<group.count(); j++ ){
            save( degrade( est[c], {group, j, c} ), "deg" + QString::number(c) + "-" + QString::number(j) );
            save( group.image(j)[c],                "low" + QString::number(c) + "-" + QString::number(j) );
        }
    }

    return est;
}
开发者ID:zjucsxxd,项目名称:Overmix,代码行数:35,代码来源:EstimatorRender.cpp

示例3: align

void LinearAligner::align( AContainer& container, AProcessWatcher* watcher ) const {
    LinearFunc hor, ver;//, both;
    for( unsigned i=0; i<container.count(); i++ ){
        hor.add( i, container.pos(i).x );
        ver.add( i, container.pos(i).y );
        //both.add( pos(i).x, pos(i).y );
    }
    
    for( unsigned i=0; i<container.count(); i++ ){
        switch( method ){
            case AlignMethod::BOTH: container.setPos( i, { hor(i), ver(i) } ); break;
            case AlignMethod::VER:  container.setPos( i, { 0, ver(i) } ); break;
            case AlignMethod::HOR:  container.setPos( i, { hor(i), 0 } ); break;
        };
    }
}
开发者ID:spillerrec,项目名称:Overmix,代码行数:16,代码来源:LinearAligner.cpp

示例4: render

ImageEx AverageRender::render( const AContainer& aligner, AProcessWatcher* watcher ) const{
    Timer t( "AverageRender::render()" );
    
    //Abort if no images
    if( aligner.count() == 0 ){
        qWarning( "No images to render!" );
        return ImageEx();
    }
    unsigned planes_amount = for_merging ? 1 : aligner.image(0).size();
    ProgressWrapper( watcher ).setTotal( aligner.count() * planes_amount );
    
    //Determine if we need to care about alpha per plane
    bool use_plane_alpha = false;
    for( unsigned i=0; i<aligner.count(); ++i )
        if( aligner.alpha( i ) || aligner.imageMask( i ) >= 0 ){
            use_plane_alpha = true;
            break;
        }
    //Check for movement in both direction
    auto movement = aligner.hasMovement();
    if( movement.first && movement.second )
        use_plane_alpha = true;
    
    auto color_space = aligner.image(0).getColorSpace();
    ImageEx img( for_merging ? color_space.changed( Transform::GRAY ) : color_space );
    
    AlphaScales masks;
    for( unsigned c=0; c<planes_amount; c++ ){
        auto scale = upscale_chroma ? Point<double>(1,1)
            : aligner.image( 0 )[c].getSize().to<double>() / aligner.image( 0 )[0].getSize().to<double>();
        masks.addScale( aligner, scale );
    }
    
    auto min_point = aligner.minPoint();
    auto full = aligner.size().size;
    for( unsigned c=0; c<planes_amount; c++ ){
        //Determine local size
        auto scale = upscale_chroma ? Point<double>(1,1)
            : aligner.image( 0 )[c].getSize().to<double>() / aligner.image( 0 )[0].getSize().to<double>();
        
        
        //TODO: something is wrong with the rounding, chroma-channels are slightly off
        SumPlane sum( (scale * full).ceil() );
        sum.spacing = spacing;
        sum.offset  = offset;
        
        for( unsigned j=0; j<aligner.count(); j++ ){
            auto& image = aligner.image( j );
            auto pos = (scale * (aligner.pos(j) - min_point)).round();
            auto plane = getScaled( image[c], (scale * image[0].getSize()).round() );
            
            const Plane& alpha_plane = masks.getAlpha( c, aligner.imageMask( j ), aligner.alpha( j ) );
            if( use_plane_alpha && alpha_plane.valid() )
                sum.addAlphaPlane( plane(), alpha_plane, pos );
            else
                sum.addPlane( plane(), pos );
            
            ProgressWrapper( watcher ).add();
        }
        
        img.addPlane( sum.average() );
        
        if( c == 0 && use_plane_alpha )
            img.alpha_plane() = sum.alpha();
            //TODO: what to do about the rest? We should try to fill in the gaps?
    }
    
    return img;
}
开发者ID:,项目名称:,代码行数:69,代码来源:


注:本文中的AContainer::pos方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。