本文整理汇总了C++中eigen::MatrixXf::sum方法的典型用法代码示例。如果您正苦于以下问题:C++ MatrixXf::sum方法的具体用法?C++ MatrixXf::sum怎么用?C++ MatrixXf::sum使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eigen::MatrixXf
的用法示例。
在下文中一共展示了MatrixXf::sum方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RectGrid
std::vector<Eigen::Vector2f> RectGrid(const Eigen::MatrixXf& density)
{
const float width = static_cast<float>(density.rows());
const float height = static_cast<float>(density.cols());
const float numf = density.sum();
const float d = std::sqrt(float(width*height) / numf);
const unsigned int Nx = static_cast<unsigned int>(std::ceil(width / d));
const unsigned int Ny = static_cast<unsigned int>(std::ceil(height / d));
const float Dx = width / static_cast<float>(Nx);
const float Dy = height / static_cast<float>(Ny);
const float Hx = Dx/2.0f;
const float Hy = Dy/2.0f;
std::vector<Eigen::Vector2f> seeds;
seeds.reserve(Nx*Ny);
for(unsigned int iy=0; iy<Ny; iy++) {
float y = Hy + Dy * static_cast<float>(iy);
for(unsigned int ix=0; ix<Nx; ix++) {
float x = Hx + Dx * static_cast<float>(ix);
seeds.push_back(Eigen::Vector2f(x, y));
}
}
return seeds;
}
示例2: main
int main(int argc, char** argv)
{
std::string p_density = "";
std::string p_mode = "spds";
std::string p_out = "pnts.tsv";
unsigned p_size = 128;
unsigned p_num = 250;
namespace po = boost::program_options;
po::options_description desc;
desc.add_options()
("help", "produce help message")
("density", po::value(&p_density), "density function image (leave empty for test function)")
("mode", po::value(&p_mode), "sampling method")
("out", po::value(&p_out), "filename of result file with samples points")
("size", po::value(&p_size), "size of image in pixel")
("num", po::value(&p_num), "number of points to sample")
;
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);
if(vm.count("help")) {
std::cerr << desc << std::endl;
return 1;
}
Eigen::MatrixXf rho;
if(p_density.empty()) {
rho = TestDensity(p_size, p_num);
std::cout << "Created density dim=" << rho.rows() << "x" << rho.cols() << ", sum=" << rho.sum() << "." << std::endl;
}
else {
rho = density::LoadDensity(p_density);
std::cout << "Loaded density dim=" << rho.rows() << "x" << rho.cols() << ", sum=" << rho.sum() << "." << std::endl;
}
// scale density
float scl = static_cast<float>(p_num) / rho.sum();
rho *= scl;
std::vector<Eigen::Vector2f> pnts;
{
boost::timer::auto_cpu_timer t;
pnts = pds::PoissonDiscSampling(p_mode, rho);
}
std::cout << "Generated " << pnts.size() << " points." << std::endl;
std::ofstream ofs(p_out);
for(const Eigen::Vector2f& x : pnts) {
ofs << x[0] << "\t" << x[1] << std::endl;
}
std::cout << "Wrote points to file '" << p_out << "'." << std::endl;
return 1;
}
示例3: main
int main(int argc, char** argv)
{
std::string p_feature_img = "";
std::string p_density = "";
std::string p_fn_points = "";
std::string p_out = "";
unsigned p_num = 250;
bool p_verbose = false;
unsigned p_repetitions = 1;
bool p_error = false;
bool p_save_density = true;
// parameters
asp::Parameters params = asp::parameters_default();
namespace po = boost::program_options;
po::options_description desc;
desc.add_options()
("help", "produce help message")
("features", po::value(&p_feature_img), "feature image (leave empty for uniform image)")
("density", po::value(&p_density), "density function image (leave empty for test function)")
("points", po::value(&p_fn_points), "file with points to use as seeds (for DDS)")
("out", po::value(&p_out), "filename of result file with samples points")
("num", po::value(&p_num), "number of points to sample")
("p_num_iterations", po::value(¶ms.num_iterations), "number of DALIC iterations")
("p_pds_mode", po::value(¶ms.pds_mode), "Poisson Disk Sampling method")
("p_seed_mean_radius_factor", po::value(¶ms.seed_mean_radius_factor), "size factor for initial cluster mean feature")
("p_coverage", po::value(¶ms.coverage), "DALIC cluster search factor")
("p_weight_compact", po::value(¶ms.weight_compact), "weight for compactness term")
("verbose", po::value(&p_verbose), "verbose")
("repetitions", po::value(&p_repetitions), "repetitions")
("error", po::value(&p_error), "error")
("save_density", po::value(&p_save_density), "save_density")
;
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);
if(vm.count("help")) {
std::cerr << desc << std::endl;
return 1;
}
// load
bool is_features_null = p_feature_img.empty();
bool is_density_null = p_density.empty();
Eigen::MatrixXf rho;
std::vector<Eigen::Vector3f> features;
int width = -1, height = -1;
if(is_density_null && is_features_null) {
std::cerr << "ERROR feature or density must not be both empty!" << std::endl;
return 1;
}
if(!is_features_null) {
features = LoadFeatures(p_feature_img, width, height);
if(p_verbose) std::cout << "Loaded features dim=" << width << "x" << height << "." << std::endl;
}
if(!is_density_null) {
rho = density::LoadDensity(p_density);
if(p_verbose) std::cout << "Loaded density dim=" << rho.rows() << "x" << rho.cols() << ", sum=" << rho.sum() << "." << std::endl;
}
if(is_features_null) {
width = rho.rows();
height = rho.cols();
features.resize(width*height, Eigen::Vector3f{1,1,1});
if(p_verbose) std::cout << "Created uniform features dim=" << rho.rows() << "x" << rho.cols() << "." << std::endl;
}
if(is_density_null) {
//rho = CreateDensity(p_size, p_size, [](float x, float y) { return TestDensityFunction(x,y); } );
rho = CreateDensity(width, height, [](float x, float y) { return 1.0f; } );
if(p_verbose) std::cout << "Created density dim=" << rho.rows() << "x" << rho.cols() << ", sum=" << rho.sum() << "." << std::endl;
}
assert(width == rho.rows());
assert(height == rho.cols());
std::vector<Eigen::Vector2f> seed_points;
if(!p_fn_points.empty()) {
std::ifstream ifs(p_fn_points);
if(!ifs.is_open()) {
std::cerr << "Error opening file '" << p_fn_points << "'" << std::endl;
}
std::string line;
while(getline(ifs, line)) {
std::istringstream ss(line);
std::vector<float> q;
while(!ss.eof()) {
float v;
ss >> v;
q.push_back(v);
}
seed_points.push_back({q[0], q[1]});
}
}