예제 #1
0
static void rgb2whs(const cv::Mat &src, cv::Mat &dst, const int nProjections, const int psize)
{
    CV_Assert(nProjections <= psize*psize && src.type() == CV_32FC1);

    const int npsize = rp2(psize);
    std::vector <cv::Mat> projections;

    cv::Mat img, proj;
    cv::copyMakeBorder(src, img, npsize, npsize, npsize, npsize,
        cv::BORDER_CONSTANT, 0);
    cv::boxFilter(img, proj, CV_32F, cv::Size(npsize, npsize),
        cv::Point(-1, -1), true, cv::BORDER_REFLECT);
    projections.push_back(proj);

    std::vector <cv::Point2i> snake_idx;
    generate_snake(std::back_inserter(snake_idx), nProjections);

    for (int i = 1; i < nProjections; ++i)
        nextProjection(projections, snake_idx[i - 1],
            snake_idx[i], npsize);

    int pad = 0;

    cv::merge(projections, img);
    img(cv::Rect(npsize + pad, npsize + pad, src.cols - pad,
        src.rows - pad)).copyTo(dst);
}
예제 #2
0
            void run() {
                ReplPair rp1( "a", "-" );
                rp1.arbitrate();
                ASSERT( rp1.state == ReplPair::State_Master );

                TestableReplPair rp2( false, BSONObj() );
                rp2.arbitrate();
                ASSERT( rp2.state == ReplPair::State_CantArb );

                TestableReplPair rp3( true, fromjson( "{ok:0}" ) );
                rp3.arbitrate();
                ASSERT_EQUALS( rp3.state , ReplPair::State_Confused );

                TestableReplPair rp4( true, fromjson( "{ok:1,you_are:1}" ) );
                rp4.arbitrate();
                ASSERT( rp4.state == ReplPair::State_Master );

                TestableReplPair rp5( true, fromjson( "{ok:1,you_are:0}" ) );
                rp5.arbitrate();
                ASSERT( rp5.state == ReplPair::State_Slave );

                TestableReplPair rp6( true, fromjson( "{ok:1,you_are:-1}" ) );
                rp6.arbitrate();
                // unchanged from initial value
                ASSERT( rp6.state == ReplPair::State_Negotiating );
            }
예제 #3
0
            void run() {
                ReplPair rp1( "foo", "bar" );
                checkFields( rp1, "foo", "foo", CmdLine::DefaultDBPort, "bar" );

                ReplPair rp2( "foo:1", "bar" );
                checkFields( rp2, "foo:1", "foo", 1, "bar" );

                // FIXME Should we accept this input?
                ReplPair rp3( "", "bar" );
                checkFields( rp3, "", "", CmdLine::DefaultDBPort, "bar" );

                ASSERT_EXCEPTION( ReplPair( "foo:", "bar" ),
                                  UserException );

                ASSERT_EXCEPTION( ReplPair( "foo:0", "bar" ),
                                  UserException );

                ASSERT_EXCEPTION( ReplPair( "foo:10000000", "bar" ),
                                  UserException );

                ASSERT_EXCEPTION( ReplPair( "foo", "" ),
                                  UserException );
            }