Subversion Repositories seema-scanner

Rev

Rev 2 | Rev 33 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 31
Line 1... Line 1...
1
#include "SMPointCloudWidget.h"
1
#include "SMPointCloudWidget.h"
2
 
2
 
-
 
3
#include <opencv2/opencv.hpp>
-
 
4
 
3
#include <vtkWindowToImageFilter.h>
5
#include <vtkWindowToImageFilter.h>
4
#include <vtkPNGWriter.h>
6
#include <vtkPNGWriter.h>
5
#include <vtkRenderWindow.h>
7
#include <vtkRenderWindow.h>
6
 
8
 
7
#include <pcl/point_cloud.h>
9
#include <pcl/point_cloud.h>
Line 19... Line 21...
19
#include <pcl/conversions.h>
21
#include <pcl/conversions.h>
20
 
22
 
21
#include <fstream>
23
#include <fstream>
22
 
24
 
23
#include <QFileDialog>
25
#include <QFileDialog>
-
 
26
#include <QSettings>
24
 
27
 
-
 
28
#include "SMCalibrationParameters.h"
25
 
29
 
26
SMPointCloudWidget::SMPointCloudWidget(QWidget *parent) : QVTKWidget(parent) {
30
SMPointCloudWidget::SMPointCloudWidget(QWidget *parent) : QVTKWidget(parent) {
27
 
31
 
28
    visualizer = new pcl::visualization::PCLVisualizer("PCLVisualizer", false);
32
    visualizer = new pcl::visualization::PCLVisualizer("PCLVisualizer", false);
29
    this->SetRenderWindow(visualizer->getRenderWindow());
33
    this->SetRenderWindow(visualizer->getRenderWindow());
30
 
34
 
31
    visualizer->setShowFPS(false);
35
    visualizer->setShowFPS(false);
32
 
36
 
33
    // Create point cloud viewport
37
    // Create point cloud viewport
34
    visualizer->setBackgroundColor(0, 0, 0);
38
    visualizer->setBackgroundColor(0, 0, 0);
35
    visualizer->addCoordinateSystem(50);
39
    visualizer->addCoordinateSystem(50, 0);
36
#ifndef __APPLE__
40
#ifndef __APPLE__
37
    // this leads to a segfault on OS X
41
    // this leads to a segfault on OS X
38
    visualizer->setCameraPosition(0,0,-50,0,0,0,0,-1,0);
42
    visualizer->setCameraPosition(0,0,-50,0,0,0,0,-1,0);
39
#endif
43
#endif
40
 
44
 
Line 127... Line 131...
127
    writer->SetFileName(qPrintable(fileName));
131
    writer->SetFileName(qPrintable(fileName));
128
    writer->Write();
132
    writer->Write();
129
    writer->Delete();
133
    writer->Delete();
130
}
134
}
131
 
135
 
-
 
136
void SMPointCloudWidget::updateCalibrationParameters(){
-
 
137
 
-
 
138
    QSettings settings;
-
 
139
    SMCalibrationParameters calibration = settings.value("calibration").value<SMCalibrationParameters>();
-
 
140
 
-
 
141
    // camera 0
-
 
142
    //...
-
 
143
 
-
 
144
    // rotation axis at (0,0,0) pointing (0,1,0) in rotation stage frame
-
 
145
    cv::Point3f O(0.0, 0.0, 0.0);
-
 
146
    cv::Vec3f v(0.0, 1.0, 0.0);
-
 
147
 
-
 
148
    // determine coefficients in camera 0 frame
-
 
149
    O = calibration.Rr*O + calibration.Tr;
-
 
150
    v = calibration.Rr*v + calibration.Tr;
-
 
151
 
-
 
152
    pcl::ModelCoefficients lineCoefficients;
-
 
153
    lineCoefficients.values.resize(6);
-
 
154
    lineCoefficients.values[0] = O[0];
-
 
155
    lineCoefficients.values[1] = O[1];
-
 
156
    lineCoefficients.values[2] = O[2];
-
 
157
    lineCoefficients.values[3] = v[0];
-
 
158
    lineCoefficients.values[4] = v[1];
-
 
159
    lineCoefficients.values[5] = v[2];
-
 
160
    visualizer->addLine(lineCoefficients);
-
 
161
}
-
 
162
 
132
SMPointCloudWidget::~SMPointCloudWidget(){
163
SMPointCloudWidget::~SMPointCloudWidget(){
133
 
164
 
134
    //delete visualizer;
165
    //delete visualizer;
135
 
166
 
136
}
167
}