49 #include <QTextStream>
50 #include <QStringList>
61 using namespace FSLIB;
62 using namespace Eigen;
77 const MatrixX3f &p_pos,
78 const VectorXd &p_values,
80 const QString &p_name,
82 : vertices(p_vertices)
105 pos = MatrixX3f(0,3);
150 return MatrixX3i(0,3);
152 MatrixX3i tris(p_matTris.rows(),3);
155 verts.reserve(this->
vertices.size());
156 for(qint32 i = 0; i < this->
vertices.size(); ++i)
157 verts.insert(this->vertices[i]);
163 for(qint32 i = 0; i < p_matTris.rows(); ++i)
165 if(verts.contains(p_matTris(i,0)) || verts.contains(p_matTris(i,1)) || verts.contains(p_matTris(i,2)))
167 tris.row(t_size) = p_matTris.row(i);
172 tris.conservativeResize(t_size, 3);
183 if(p_sFileName.mid(p_sFileName.size()-6,6).compare(
".label") != 0)
185 qWarning(
"Given file (%s) is not a .label file!\n", p_sFileName.toUtf8().constData());
189 printf(
"Reading label...");
190 QFile t_File(p_sFileName);
192 if (!t_File.open(QIODevice::ReadOnly | QIODevice::Text))
194 qWarning(
"\tError: Couldn't open the label file\n");
198 QTextStream t_TextStream(&t_File);
200 QString
comment = t_TextStream.readLine();
201 qint32 nv = t_TextStream.readLine().toInt();
203 MatrixXd data(nv, 5);
209 for(qint32 i = 0; i < nv; ++i)
212 list = t_TextStream.readLine().split(QRegExp(
"\\s+"), QString::SkipEmptyParts);
214 for(qint32 j = 0; j < list.size(); ++j)
216 value = list[j].toDouble(&isNumber);
219 data(i, count) = value;
226 if(t_File.fileName().contains(
"lh."))
235 p_Label.
vertices = data.cast<
int>().block(0,0,data.rows(),1);
236 p_Label.
pos = data.cast<
float>().block(0,1,data.rows(),3).array() * 1e-3f;
237 p_Label.
values = data.block(0,4,data.rows(),1);
239 if(t_File.fileName().contains(
"lh.label"))
241 QStringList tmpList = t_File.fileName().split(
"lh.")[0].split(QRegExp(
"\\W+"));
242 p_Label.
name = tmpList[tmpList.size()-1];
244 else if(t_File.fileName().contains(
"lh."))
245 p_Label.
name = t_File.fileName().split(
"lh.")[1].split(QRegExp(
"\\W+"))[0];