Skip to content

Commit

Permalink
added relight-merge
Browse files Browse the repository at this point in the history
  • Loading branch information
ponchio committed Sep 8, 2024
1 parent e0cc02f commit d515059
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 17 deletions.
8 changes: 7 additions & 1 deletion relight-pano/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,13 @@ int main(int argc, char *argv[])
}
startingStep = (PanoBuilder::Steps) s;
}
builder.setMm3d("/Users/erika/Desktop/micmac/bin/mm3d");
builder.setMm3d("/home/ponchio/devel/micmac/bin/mm3d");
//"/Users/erika/Desktop/micmac/bin/mm3d");
builder.setRelightCli("/home/ponchio/devel/relight/relight-cli/relight-cli");
//"/Users/erika/Desktop/projects/relight/build/relight-cli/relight-cli";
builder.setRelightMerge("/home/ponchio/devel/relight/relight-merge/relight-merge");
//"/Users/erika/Desktop/projects/relight/build/relight-cli/relight-merge";

builder.process(startingStep);
}
catch(QString error){
Expand Down
43 changes: 33 additions & 10 deletions relight-pano/panobuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ void PanoBuilder::setMm3d(QString path){
ensureExecutable(path);
mm3d_path = path;
}
void PanoBuilder::relightCli(QString path){
void PanoBuilder::setRelightCli(QString path){
ensureExecutable(path);

relight_cli_path = path;
}
void PanoBuilder::relightMerge(QString path){
void PanoBuilder::setRelightMerge(QString path){
ensureExecutable(path);
relight_merge_path = path;
}
Expand Down Expand Up @@ -103,6 +103,14 @@ void PanoBuilder::rti(){

}
}

QDir mergeDir(base_dir.filePath("merge"));
if (!mergeDir.exists()) {
if (!base_dir.mkdir("merge")) {
throw QString("Could not create 'merge' directory");
}
}

//search the subdirectory, the QDir::Dirs | filter QDir::NoDotAndDotDot to get all subdirectories inside the root directory
QStringList subDirs = datasets_dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
for (const QString &subDirName : subDirs) {
Expand All @@ -115,23 +123,38 @@ void PanoBuilder::rti(){
QString relightFile = relightFiles[0];


QString program = "/Users/erika/Desktop/projects/relight/build/relight-cli/relight-cli";
QStringList arguments;
arguments << subDir.absoluteFilePath(relightFile) << rtiDir.filePath(subDir.dirName()) <<"-b" << "ptm" << "-p" << "18" << "-m";

QString command = program + " " + arguments.join(" ");
QString command = relight_cli_path + " " + arguments.join(" ");
cout << "print command: " << qPrintable(command) <<endl;
QProcess process;
process.start(program, arguments);
QProcess process_cli;
process_cli.start(relight_cli_path, arguments);

if(!process_cli.waitForStarted()){
throw QString("fail to start ") + process_cli.program();
}

if(!process.waitForStarted()){
throw QString("fail to start ") + process.program();
//wait for the process to finish
if(!process_cli.waitForFinished(-1)) {
throw QString("fail to run ") + process_cli.readAllStandardError();
}


QStringList arguments_merge;
arguments_merge << "rti" << "merge";
QProcess process_merge;
process_merge.start(relight_merge_path, arguments_merge);

if(!process_merge.waitForStarted()){
throw QString("fail to start ") + process_merge.program();
}

//wait for the process to finish
if(!process.waitForFinished(-1)) {
throw QString("fail to run ") + process.readAllStandardError();
if(!process_merge.waitForFinished(-1)) {
throw QString("fail to run ") + process_merge.readAllStandardError();
}

}
}
void PanoBuilder::tapioca(){
Expand Down
4 changes: 2 additions & 2 deletions relight-pano/panobuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ class PanoBuilder : public QObject

PanoBuilder(QString path);
void setMm3d(QString path);
void relightCli(QString path);
void relightMerge(QString path);
void setRelightCli(QString path);
void setRelightMerge(QString path);
int findStep(QString step);

void process(Steps starting_step = RTI);
Expand Down
18 changes: 14 additions & 4 deletions relight-pano/qexifimageheader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1684,22 +1684,28 @@ qint64 QExifImageHeader::write(QIODevice *device) const
else
stream << quint32(0);
writeExifValues( stream, d->imageIfdValues );
Q_ASSERT(startPos + exifIfdOffset == device->pos());
#ifndef QT_NO_DEBUG
Q_ASSERT(startPos + exifIfdOffset == device->pos());
#endif
stream << quint16(d->exifIfdValues.count());
// 2014-02-03 Sig
exifIfdOffset += 2; // add 2 bytes for d->exifIfdValues.count()
// TODO check offset + gpsIfdOffset
// Sig
writeExifHeaders(stream, d->exifIfdValues, exifIfdOffset);
writeExifValues(stream, d->exifIfdValues);
#ifndef QT_NO_DEBUG
Q_ASSERT(startPos + gpsIfdOffset == device->pos());
if (!d->gpsIfdValues.isEmpty()) {
#endif
if (!d->gpsIfdValues.isEmpty()) {
stream << quint16(d->gpsIfdValues.count());
writeExifHeaders(stream, d->gpsIfdValues, gpsIfdOffset);
writeExifValues(stream, d->gpsIfdValues);
}
#ifndef QT_NO_DEBUG
Q_ASSERT(startPos + offset == device->pos());
if (!d->thumbnailData.isEmpty()) {
#endif
if (!d->thumbnailData.isEmpty()) {
offset += 86;
stream << quint16(7);
QExifValue xResolution = d->thumbnailXResolution.isNull()
Expand All @@ -1724,11 +1730,15 @@ qint64 QExifImageHeader::write(QIODevice *device) const
QExifValue(quint32(d->thumbnailData.size())), offset);
writeExifValue(stream, xResolution);
writeExifValue(stream, yResolution);
#ifndef QT_NO_DEBUG
Q_ASSERT(startPos + offset == device->pos());
#endif
device->write(d->thumbnailData);
offset += d->thumbnailData.size();
}
Q_ASSERT(startPos + offset == device->pos());
#ifndef QT_NO_DEBUG
Q_ASSERT(startPos + offset == device->pos());
#endif
d->size = offset;
#ifdef TEXIF
exDevice->write(exif);
Expand Down

0 comments on commit d515059

Please sign in to comment.