本文整理汇总了C++中ImageItem::setDx方法的典型用法代码示例。如果您正苦于以下问题:C++ ImageItem::setDx方法的具体用法?C++ ImageItem::setDx怎么用?C++ ImageItem::setDx使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ImageItem
的用法示例。
在下文中一共展示了ImageItem::setDx方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: onLoadGeometryClicked
void StitcherWorkspace::onLoadGeometryClicked() {
QString file = QFileDialog::getOpenFileName(0,tr("Load Geometry from File"), QString(), tr("Image Geometry (*.hig)"));
if(file.isEmpty()) {
return;
}
QFile fp(file);
if(!fp.open(QIODevice::ReadOnly)) {
return;
}
QList<QGraphicsItem *> graphicsItems = _stitcherView->items();
QTextStream in(&fp);
QString dumb;
int nImages;
in >> dumb >> dumb >> nImages;
for(int i = 0; i<nImages; i++) {
QString id;
double dx,dy,dz,theta;
in >> dumb >> id;
ImageItem * item = NULL;
for(int j = 0; j < graphicsItems.size(); j++) {
item = qgraphicsitem_cast<ImageItem *>(graphicsItems[j]);
if(item && item->identifier() == id) {
break;
} else {
item = NULL;
}
}
in >> dumb >> dx;
in >> dumb >> dy;
in >> dumb >> dz;
in >> dumb >> theta;
if(item) {
item->setDx(dx);
item->setDy(dy);
item->setDz(dz);
item->setTheta(theta);
}
}
fp.close();
loadGeometry();
}
示例2: onOptimizeGeometryClicked
void StitcherWorkspace::onOptimizeGeometryClicked() {
geometrically_constrained_system * gc = geometrically_constrained_system_alloc();
/* create positioned images */
QMap<ImageItem *, positioned_image *> pos_image_map;
QList<QGraphicsItem *> graphicsItems = _stitcherView->items();
for(int i = 0; i < graphicsItems.size(); i++) {
if(ImageItem * item = qgraphicsitem_cast<ImageItem *>(graphicsItems[i])) {
positioned_image * p = create_positioned_image(item->getImage());
set_image_position(p,DeltaX,item->dx());
if(!item->dxLocked()) {
geometrically_constrained_system_add_variable(gc,create_geometry_variable(p,DeltaX));
}
set_image_position(p,DeltaY,item->dy());
if(!item->dyLocked()) {
geometrically_constrained_system_add_variable(gc,create_geometry_variable(p,DeltaY));
}
set_image_position(p,Zoom,1.0/item->dz());
if(!item->dzLocked()) {
geometrically_constrained_system_add_variable(gc,create_geometry_variable(p,Zoom));
}
set_image_position(p,Theta,item->theta());
if(!item->thetaLocked()) {
geometrically_constrained_system_add_variable(gc,create_geometry_variable(p,Theta));
}
set_image_position(p,Alpha,item->alpha());
if(!item->alphaLocked()) {
geometrically_constrained_system_add_variable(gc,create_geometry_variable(p,Alpha));
}
pos_image_map.insert(item,p);
}
}
QStandardItemModel * model = qobject_cast<QStandardItemModel *>(constraintsTree->model());
int total_points = 0;
for(int i = 0; i<model->rowCount(); i++) {
QStandardItem * it = model->item(i,0);
geometric_constraint c = geometric_constraint_init((GeometryConstraintType)it->data(Qt::UserRole + 3).toInt(),0);
QList<QVariant> item_details = it->data(Qt::UserRole + 1).value<QList<QVariant> >();
QList<QVariant> point_details = it->data(Qt::UserRole + 2).value<QList<QVariant> >();
total_points += item_details.size();
for(int i = 0; i<item_details.size(); i++) {
ImageItem * item = item_details[i].value<ImageItem *>();
QPointF pos = point_details[i].value<QPointF>();
positioned_image * a = pos_image_map.value(item);
control_point cp = create_control_point(a,pos.x(),pos.y());
geometric_constraint_add_point(&c,cp);
}
geometrically_constrained_system_add_constraint(gc,c);
}
if(total_points < gc->n_variables+gc->n_constraints) {
QMessageBox::warning(this,"Geometry Optimization","<p>Too few control points."
" The number of control points must be equal or greater to the degrees of freedom.</p>"
"<p>Optimization aborted!</p>");
return ;
}
if(model->rowCount()) {
geometry_contraint_minimizer(gc);
}
_stitcherView->clearConstraintFits();
for(int i = 0; i<model->rowCount(); i++) {
QStandardItem * it = model->item(i,0);
for(int j = 0; j<it->rowCount()-1; j++) {
it->child(j,1)->setText(QString("%0").arg(gc->constraints[i].error[j]));
}
it->child(it->rowCount()-1,1)->setText(QString("%0").arg(gc->constraints[i].best_fit));
_stitcherView->drawConstraintFit(gc);
}
for(int i = 0; i<gc->n_variables; i++) {
ImageItem * item = pos_image_map.keys(gc->variables[i].parent).first();
if(gc->variables[i].type == DeltaX) {
item->setDx(gc->variables[i].parent->pos[DeltaX]);
}
if(gc->variables[i].type == DeltaY) {
item->setDy(gc->variables[i].parent->pos[DeltaY]);
}
if(gc->variables[i].type == Zoom) {
item->setDz(1.0/gc->variables[i].parent->pos[Zoom]);
}
if(gc->variables[i].type == Theta) {
item->setTheta(gc->variables[i].parent->pos[Theta]);
}
if(gc->variables[i].type == Alpha) {
item->setAlpha(gc->variables[i].parent->pos[Alpha]);
}
}
loadGeometry();
}