11 Commits

Author SHA1 Message Date
Tang1705
5faeff5be1 v1.0 2020-05-24 23:15:27 +08:00
Tang1705
5c923ee2d4 fix that problem a liitle 2020-05-24 10:04:41 +08:00
Tang1705
dab2be5de2 modify some details and there is a small defect 2020-05-21 12:29:59 +08:00
Tang1705
bde3ce178e modify some logical bugs,add remove point function 2020-05-19 10:36:13 +08:00
Tang1705
3a212d0b8e add camera function 2020-05-13 12:12:48 +08:00
Tang1705
b060ed5f2b move reconstruct progress to thread 2020-05-12 18:02:08 +08:00
Tang
ba4ca7903d Update Readme.md 2020-05-06 22:32:30 +08:00
Tang
c0e7dedf77 Update Readme.md 2020-05-06 22:29:34 +08:00
Tang
830e5c5140 Update Readme.md 2020-05-06 22:24:51 +08:00
Tang
1b1d2308bc Update Readme.md 2020-05-06 22:20:37 +08:00
Tang
22ad0727c4 Create LICENSE 2020-05-06 22:09:36 +08:00
72 changed files with 333093 additions and 763 deletions

147
.gitignore vendored
View File

@@ -1,7 +1,10 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
@@ -10,6 +13,9 @@
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
@@ -17,42 +23,62 @@
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015 cache/options directory
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# DNX
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
@@ -62,6 +88,7 @@ artifacts/
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
@@ -90,6 +117,9 @@ ipch/
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
@@ -101,15 +131,23 @@ _ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*[.json, .xml, .info]
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
@@ -141,9 +179,9 @@ publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
#*.pubxml
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
@@ -153,13 +191,15 @@ PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignoreable files
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
@@ -176,12 +216,15 @@ AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
!?*.[Cc]ache/
# Others
ClientBin/
@@ -192,9 +235,12 @@ ClientBin/
*.jfm
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
@@ -209,15 +255,22 @@ _UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
@@ -227,6 +280,7 @@ FakesAssemblies/
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
@@ -234,6 +288,9 @@ FakesAssemblies/
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
@@ -249,13 +306,59 @@ paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
# 忽略指定文件夹
.vs/
Lib/

View File

@@ -16,11 +16,11 @@ Calibrator::~Calibrator()
}
void Calibrator::addFrameSequence(std::vector<cv::Mat> &frameSeq)
void Calibrator::addFrameSequence(std::vector<Mat> &frameSeq)
{
int n = frameSeqs.size();
frameSeqs.resize(n+1);
std::vector<cv::Mat> &frame = frameSeqs[n];
std::vector<Mat> &frame = frameSeqs[n];
for(int i = 0; i < frameSeq.size(); i++)
{
frame.push_back(frameSeq[i]);
@@ -38,17 +38,17 @@ void Calibrator::reset()
void Calibrator::setBoardRows(int rows) {
board_rows = rows;
board_size = cv::Size(board_rows, board_cols);
board_size = Size(board_rows, board_cols);
}
void Calibrator::setBoardCols(int cols) {
board_cols = cols;
board_size = cv::Size(board_rows, board_cols);
board_size = Size(board_rows, board_cols);
}
void Calibrator::setCornerSize(double cornerSize) {
dot_dis = cornerSize;
corner_size = cv::Size2f(cornerSize, cornerSize);
corner_size = Size2f(cornerSize, cornerSize);
}
void Calibrator::setDotDiameter(double dotDiameter) {
@@ -66,7 +66,7 @@ CalibrationData* Calibrator::calibrate()
// detect corners ////////////////////////////////////
for(int i = 0; i < frameSeqs.size(); i++)
{
std::vector<cv::Point2f> corners = extract_board_corners( frameSeqs[i][0] );
std::vector<Point2f> corners = extract_board_corners( frameSeqs[i][0] );
board_corners.push_back(corners);
// std::cout<<i<<" corners: "<<corners.size()<<std::endl;
// for(int j = 0; j < corners.size(); j++) {
@@ -75,12 +75,12 @@ CalibrationData* Calibrator::calibrate()
}
// collect projector correspondences
std::vector<cv::Point2f> pcorners;
std::vector<Point2f> pcorners;
for(int i = 0; i < frameSeqs.size(); i++)
{
std::vector<cv::Point2f> const& corners = board_corners[i];
cv::Mat pattern_image;
cv::Mat min_max_image;
std::vector<Point2f> const& corners = board_corners[i];
Mat pattern_image;
Mat min_max_image;
if(corners.size()==0)
{
projector_corners.push_back(pcorners);
@@ -95,25 +95,25 @@ CalibrationData* Calibrator::calibrate()
}
pattern_list.push_back(pattern_image);
for (std::vector<cv::Point2f>::const_iterator iter=corners.begin(); iter!=corners.end(); iter++)
for (std::vector<Point2f>::const_iterator iter=corners.begin(); iter!=corners.end(); iter++)
{
const cv::Point2f & p = *iter;
cv::Point2f q;
const Point2f & p = *iter;
Point2f q;
//find an homography around p
unsigned WINDOW_SIZE = 30;
std::vector<cv::Point2f> img_points , proj_points;
std::vector<Point2f> img_points , proj_points;
if (p.x>WINDOW_SIZE && p.y>WINDOW_SIZE && p.x+WINDOW_SIZE<pattern_image.cols && p.y+WINDOW_SIZE<pattern_image.rows)
{
for (unsigned h=p.y-WINDOW_SIZE; h<p.y+WINDOW_SIZE; h++)
{
register const cv::Vec2f * row = pattern_image.ptr<cv::Vec2f>(h);
register const cv::Vec2b * min_max_row = min_max_image.ptr<cv::Vec2b>(h);
//cv::Vec2f * out_row = out_pattern_image.ptr<cv::Vec2f>(h);
register const Vec2f * row = pattern_image.ptr<Vec2f>(h);
register const Vec2b * min_max_row = min_max_image.ptr<Vec2b>(h);
//Vec2f * out_row = out_pattern_image.ptr<Vec2f>(h);
for (unsigned w=p.x-WINDOW_SIZE; w<p.x+WINDOW_SIZE; w++)
{
const cv::Vec2f & pattern = row[w];
const cv::Vec2b & min_max = min_max_row[w];
//cv::Vec2f & out_pattern = out_row[w];
const Vec2f & pattern = row[w];
const Vec2b & min_max = min_max_row[w];
//Vec2f & out_pattern = out_row[w];
if (std::isnan(pattern[0])>0 || std::isnan(pattern[1])>0)
{
continue;
@@ -123,16 +123,16 @@ CalibrationData* Calibrator::calibrate()
continue;
}
img_points.push_back(cv::Point2f(w, h));
proj_points.push_back(cv::Point2f(pattern));
img_points.push_back(Point2f(w, h));
proj_points.push_back(Point2f(pattern));
//out_pattern = pattern;
}
}
cv::Mat H = cv::findHomography(img_points , proj_points, cv::RANSAC);
Mat H = findHomography(img_points , proj_points, RANSAC);
// std::cout << " H:\n" << H << std::endl;
cv::Point3d Q = cv::Point3d(cv::Mat(H*cv::Mat(cv::Point3d(p.x , p.y , 1.0))));
q = cv::Point2f(Q.x/Q.z ,Q.y/Q.z);
Point3d Q = Point3d(Mat(H*Mat(Point3d(p.x , p.y , 1.0))));
q = Point2f(Q.x/Q.z ,Q.y/Q.z);
// jiuzheng
// q.y += 118;
pcorners.push_back(q);
@@ -159,15 +159,15 @@ CalibrationData* Calibrator::calibrate()
count++;
}
}
std::vector<cv::Point3f> world_corners;
std::vector<Point3f> world_corners;
for (int h=0; h<board_size.height; h++)
{
for (int w=0; w<board_size.width; w++)
{
world_corners.push_back(cv::Point3f(corner_size.width * w, corner_size.height * h , 0.f));
world_corners.push_back(Point3f(corner_size.width * w, corner_size.height * h , 0.f));
}
}
std::vector<std::vector<cv::Point3f> > objectPoints;
std::vector<std::vector<Point3f> > objectPoints;
objectPoints.reserve(count);
for (unsigned i=0; i<count; i++)
{
@@ -175,16 +175,16 @@ CalibrationData* Calibrator::calibrate()
}
//generate world object coordinates
std::vector<cv::Point3f> world_corners_p;
std::vector<Point3f> world_corners_p;
for (int h=0; h<board_size.height; h++)
{
for (int w=0; w<board_size.width; w++)
{
world_corners_p.push_back(cv::Point3f(corner_size.width * w , corner_size.height * h ,0.f));
world_corners_p.push_back(Point3f(corner_size.width * w , corner_size.height * h ,0.f));
}
}
std::vector<std::vector<cv::Point3f> > objectPoints_p;
std::vector<std::vector<Point3f> > objectPoints_p;
objectPoints_p.reserve(count);
for (unsigned i=0; i<count; i++)
{
@@ -196,48 +196,48 @@ CalibrationData* Calibrator::calibrate()
pattern_list.resize(count);
int cal_flags = 0
//+ cv::CALIB_FIX_K1
//+ cv::CALIB_FIX_K2
//+ cv::CALIB_ZERO_TANGENT_DIST
+ cv::CALIB_FIX_K3
//+ CALIB_FIX_K1
//+ CALIB_FIX_K2
//+ CALIB_ZERO_TANGENT_DIST
+ CALIB_FIX_K3
;
//calibrate the camera ////////////////////////////////////
std::vector<cv::Mat> cam_rvecs , cam_tvecs;
std::vector<Mat> cam_rvecs , cam_tvecs;
int cam_flags = cal_flags;
cv::Size imageSize = frameSeqs[0][0].size();
res->cam_error = cv::calibrateCamera(objectPoints , board_corners , imageSize , res->Kc , res->kc ,cam_rvecs , cam_tvecs);
Size imageSize = frameSeqs[0][0].size();
res->cam_error = calibrateCamera(objectPoints , board_corners , imageSize , res->Kc , res->kc ,cam_rvecs , cam_tvecs);
std::cout<<"calibrate the camera !"<<std::endl;
//calibrate the projector ////////////////////////////////////
std::vector<cv::Mat> proj_rvecs , proj_tvecs;
std::vector<Mat> proj_rvecs , proj_tvecs;
int proj_flags = cal_flags;
cv::Size projector_size(912, 1140);
res->proj_error = cv::calibrateCamera(objectPoints_p , projector_corners, projector_size , res->Kp , res->kp , proj_rvecs , proj_tvecs);
Size projector_size(912, 1140);
res->proj_error = calibrateCamera(objectPoints_p , projector_corners, projector_size , res->Kp , res->kp , proj_rvecs , proj_tvecs);
std::cout<<"calibrate the projector !"<<std::endl;
//stereo calibration
cv::Mat E, F;
res->stereo_error = cv::stereoCalibrate(objectPoints , board_corners , projector_corners ,
Mat E, F;
res->stereo_error = stereoCalibrate(objectPoints , board_corners , projector_corners ,
res->Kc , res->kc , res->Kp ,res->kp ,imageSize /*ignored*/ ,
res->Rp , res->Tp , E , F );
// res->stereo_error = cv::stereoCalibrate(objectPoints , board_corners , projector_corners , res->Kc , res->kc , res->Kp ,res->kp ,imageSize /*ignored*/ , res->Rp , res->Tp , E , F ,
// cv::TermCriteria(cv::TermCriteria::COUNT + cv::TermCriteria::EPS ,50 ,DBL_EPSILON) ,
// cv::CALIB_FIX_INTRINSIC /*cv::CALIB_USE_INTRINSIC_GUESS + cal_flags*/);
// res->stereo_error = stereoCalibrate(objectPoints , board_corners , projector_corners , res->Kc , res->kc , res->Kp ,res->kp ,imageSize /*ignored*/ , res->Rp , res->Tp , E , F ,
// TermCriteria(TermCriteria::COUNT + TermCriteria::EPS ,50 ,DBL_EPSILON) ,
// CALIB_FIX_INTRINSIC /*CALIB_USE_INTRINSIC_GUESS + cal_flags*/);
std::cout<<"stereo calibration !"<<std::endl;
cv::FileStorage fsc("rtc.xml", cv::FileStorage::WRITE);
cv::FileStorage fsp("rtp.xml", cv::FileStorage::WRITE);
FileStorage fsc("rtc.xml", FileStorage::WRITE);
FileStorage fsp("rtp.xml", FileStorage::WRITE);
// objectPoints projector_corners board_corners
std::ofstream opout("objectPoints.txt");
std::ofstream pcout("projector_corners.txt");
std::ofstream ccout("board_corners.txt");
for (int i = 0; i < objectPoints.size(); i++) {
fsc << "R" + std::to_string(i) << cv::Mat(cam_rvecs[i]);
fsc << "T" + std::to_string(i) << cv::Mat(cam_tvecs[i]);
fsp << "R" + std::to_string(i) << cv::Mat(proj_rvecs[i]);
fsp << "T" + std::to_string(i) << cv::Mat(proj_tvecs[i]);
fsc << "R" + std::to_string(i) << Mat(cam_rvecs[i]);
fsc << "T" + std::to_string(i) << Mat(cam_tvecs[i]);
fsp << "R" + std::to_string(i) << Mat(proj_rvecs[i]);
fsp << "T" + std::to_string(i) << Mat(proj_tvecs[i]);
for (int j = 0; j < objectPoints[i].size(); j++) {
opout << objectPoints[i][j] << std::endl;
pcout << projector_corners[i][j] << std::endl;
@@ -254,24 +254,24 @@ CalibrationData* Calibrator::calibrate()
}
std::vector<cv::Point2f> Calibrator::extract_board_corners(cv::Mat &gray_image)
std::vector<Point2f> Calibrator::extract_board_corners(Mat &gray_image)
{
std::vector<cv::Point2f> corners;
std::vector<Point2f> corners;
int image_scale = 1;
if (gray_image.rows<1)
{
return corners;
}
cv::Size imageSize = gray_image.size();
Size imageSize = gray_image.size();
if (imageSize.width>1024)
{
image_scale = imageSize.width/1024;
}
cv::Mat small_img;
Mat small_img;
if (image_scale>1)
{
cv::resize(gray_image , small_img , cv::Size(gray_image.cols/image_scale , gray_image.rows/image_scale));
resize(gray_image , small_img , Size(gray_image.cols/image_scale , gray_image.rows/image_scale));
}
else
{
@@ -279,27 +279,27 @@ std::vector<cv::Point2f> Calibrator::extract_board_corners(cv::Mat &gray_image)
}
if(board_type == Chessboard) {
cv::findChessboardCorners(small_img, board_size, corners);
findChessboardCorners(small_img, board_size, corners);
}
else if(board_type == Circular) {
cv::findCirclesGrid(small_img, board_size, corners);
findCirclesGrid(small_img, board_size, corners);
}
if (corners.size())
{
for (std::vector<cv::Point2f>::iterator iter=corners.begin(); iter!=corners.end(); iter++)
for (std::vector<Point2f>::iterator iter=corners.begin(); iter!=corners.end(); iter++)
{
*iter = image_scale*(*iter);
}
cv::cornerSubPix(gray_image , corners , cv::Size(11 , 11) , cv::Size(-1 , -1) ,
cv::TermCriteria(cv::TermCriteria::EPS + cv::TermCriteria::MAX_ITER, 30 , 0.1));
cornerSubPix(gray_image , corners , Size(11 , 11) , Size(-1 , -1) ,
TermCriteria(TermCriteria::EPS + TermCriteria::MAX_ITER, 30 , 0.1));
}
return corners;
}
bool Calibrator::decode_gray_set(int ind , cv::Mat & pattern_image, cv::Mat & min_max_image)
bool Calibrator::decode_gray_set(int ind , Mat & pattern_image, Mat & min_max_image)
{
if (ind >= frameSeqs.size())
{ //out of bounds
@@ -308,7 +308,7 @@ bool Calibrator::decode_gray_set(int ind , cv::Mat & pattern_image, cv::Mat & m
//estimate direct component
//b = config.value("robust_estimation/b" DEFAULT_B).toFloat();
std::vector<cv::Mat> images;
std::vector<Mat> images;
// QList<unsigned> direct_component_images(QList<unsigned>() << 15 << 16 << 17 << 18 << 35 << 36 << 37 << 38);
int total_images = frameSeqs[ind].size();
int total_patterns = total_images/2 - 1;
@@ -326,12 +326,12 @@ bool Calibrator::decode_gray_set(int ind , cv::Mat & pattern_image, cv::Mat & m
{
images.push_back(frameSeqs[ind][i]);
}
cv::Mat direct_light = sl::estimate_direct_light(images, b);
Mat direct_light = sl::estimate_direct_light(images, b);
//m = config.value("robust_estimation/m" DEFAULT_M).toUInt();
// return sl::decode_pattern(frameSeqs[ind] , pattern_image , min_max_image , sl::RobustDecode|sl::GrayPatternDecode , direct_light, m);
cv::Size projector_size(912, 1140);
Size projector_size(912, 1140);
bool rv = sl::decode_pattern(frameSeqs[ind], pattern_image, min_max_image, projector_size, sl::RobustDecode|sl::GrayPatternDecode, direct_light, m);
return rv;
}

View File

@@ -510,3 +510,8 @@ void CoreAlgorithm::saveCoordinate()
}
destFile.close();
}
vector<Mat> CoreAlgorithm::getCoordinates()
{
return coordinate;
}

View File

@@ -53,4 +53,6 @@ public:
void run();
void saveCoordinate();
vector<Mat> getCoordinates();
};

53
Classes/HisThread.cpp Normal file
View File

@@ -0,0 +1,53 @@
#include "HisThread.h"
HisThread::HisThread(PointCloud<PointXYZRGB>* cloudArg, PolygonMesh* meshArg)
{
mesh = meshArg;
cloud = cloudArg;
}
void HisThread::run()
{
PointCloud<PointXYZRGB>::Ptr finalCloud = cloud->makeShared();
NormalEstimation<PointXYZRGB, Normal> n;//法线估计对象
PointCloud<Normal>::Ptr normals(new PointCloud<Normal>);//存储估计的法线的指针
search::KdTree<PointXYZRGB>::Ptr tree(new search::KdTree<PointXYZRGB>);
tree->setInputCloud(finalCloud);
n.setInputCloud(finalCloud);
n.setSearchMethod(tree);
n.setKSearch(20);
n.compute(*normals); //计算法线结果存储在normals中
//将点云和法线放到一起
PointCloud<PointXYZRGBNormal>::Ptr cloud_with_normals(new PointCloud<PointXYZRGBNormal>);
concatenateFields(*finalCloud, *normals, *cloud_with_normals);
//创建搜索树
search::KdTree<PointXYZRGBNormal>::Ptr tree2(new search::KdTree<PointXYZRGBNormal>);
tree2->setInputCloud(cloud_with_normals);
//创建Poisson对象并设置参数
Poisson<PointXYZRGBNormal> pn;
pn.setConfidence(true); //是否使用法向量的大小作为置信信息。如果false所有法向量均归一化。
pn.setDegree(2); //设置参数degree[1,5],值越大越精细,耗时越久。
pn.setDepth(8); //树的最大深度求解2^d x 2^d x 2^d立方体元。由于八叉树自适应采样密度指定值仅为最大深度。
pn.setIsoDivide(8); //用于提取ISO等值面的算法的深度
pn.setManifold(true); //是否添加多边形的重心,当多边形三角化时。 设置流行标志如果设置为true则对多边形进行细分三角话时添加重心设置false则不添加
pn.setManifold(false);
pn.setOutputPolygons(false); //是否输出多边形网格(而不是三角化移动立方体的结果)
//pn.setSamplesPerNode(3.0); //设置落入一个八叉树结点中的样本点的最小数量。无噪声,[1.0-5.0],有噪声[15.-20.]平滑
pn.setSamplesPerNode(18); //设置落入一个八叉树结点中的样本点的最小数量。无噪声,[1.0-5.0],有噪声[15.-20.]平滑
pn.setScale(1.25); //设置用于重构的立方体直径和样本边界立方体直径的比率。
pn.setSolverDivide(8); //设置求解线性方程组的Gauss-Seidel迭代方法的深度
//pn.setIndices();
//设置搜索方法和输入点云
pn.setSearchMethod(tree2);
pn.setInputCloud(cloud_with_normals);
//执行重构
pn.performReconstruction(*mesh);
// auto pclData = PointCloudData::getInstance(cloud);
// pclData->getViewer()->removeAllPointClouds();
// pclData->getViewer()->addPolygonMesh(mesh, "my");
}

32
Classes/HisThread.h Normal file
View File

@@ -0,0 +1,32 @@
#pragma once
#include <qthread.h>
#include <pcl/point_types.h>
#include <pcl/io/vtk_lib_io.h>
#include <pcl/kdtree/kdtree_flann.h>
#include <pcl/features/normal_3d_omp.h>
#include <pcl/features/normal_3d.h>
#include <pcl/surface/gp3.h>
#include <pcl/surface/poisson.h>
#include <pcl/PolygonMesh.h>
#include <pcl/features/normal_3d.h>
#include <pcl/features/normal_3d_omp.h>
using namespace std;
using namespace pcl;
class HisThread :
public QThread
{
public:
HisThread(PointCloud<PointXYZRGB>* cloud,PolygonMesh* meshArg);
~HisThread(){};
private:
PolygonMesh* mesh;// 多变形网格,用于存储结果
PointCloud<PointXYZRGB>* cloud;
protected:
void run();
};

View File

@@ -10,9 +10,15 @@ void MyThread::run()
if(!pcd.empty())
{
PointCloud<PointXYZRGB>::Ptr cloudPtr(new PointCloud<PointXYZRGB>);
io::loadPCDFile(pcd, *cloudPtr);
if (QString::fromStdString(pcd).endsWith(".pcd", Qt::CaseInsensitive))
io::loadPCDFile(pcd, *cloudPtr);
else if (QString::fromStdString(pcd).endsWith(".ply", Qt::CaseInsensitive))
io::loadPLYFile(pcd, *cloudPtr);
cloud = *cloudPtr;
}
auto pclData = PointCloudData::getInstance(cloud);
pclData->setCloud(cloud);
}
@@ -26,7 +32,3 @@ PointCloud<PointXYZRGB> MyThread::getCloud()
{
return cloud;
}
MyThread::~MyThread()
{
}

View File

@@ -3,6 +3,7 @@
#include <qthread.h>
#include <pcl/point_types.h>
#include <pcl/io/vtk_lib_io.h>
#include "PointCloudData.h"
using namespace std;
using namespace pcl;
@@ -12,7 +13,7 @@ class MyThread :
{
public:
MyThread();
~MyThread();
~MyThread(){};
void setPcd(QString str);
PointCloud<PointXYZRGB> getCloud();

View File

@@ -0,0 +1,70 @@
#include "PointCloudData.h"
PointCloudData* PointCloudData::instance = nullptr;
PointCloudData::PointCloudData(PointCloud<PointXYZRGB> cloudArg)
{
cloud = cloudArg;
num = 0;
}
PointCloudData* PointCloudData::getInstance(PointCloud<PointXYZRGB> cloudArg)
{
if (instance == nullptr) instance = new PointCloudData(cloudArg);
return instance;
}
PointCloudData* PointCloudData::getInstance()
{
return instance;
}
PointCloud<PointXYZRGB> PointCloudData::getCloud() const{
return cloud;
}
void PointCloudData::setCloud(PointCloud<PointXYZRGB> cloudArg){
cloud= cloudArg;
}
boost::shared_ptr<visualization::PCLVisualizer> PointCloudData::getViewer()
{
return viewer;
}
void PointCloudData::setViewer(boost::shared_ptr<visualization::PCLVisualizer> viewerArg)
{
viewer = viewerArg;
}
std::vector<int> PointCloudData::getIndices()
{
return indices;
}
void PointCloudData::setIndices(std::vector<int> indicesArg)
{
indices = indicesArg;
}
Ui::ReconstructionClass PointCloudData::getUI()
{
return ui;
}
void PointCloudData::setUI(Ui::ReconstructionClass uiArg)
{
ui = uiArg;
}
int PointCloudData::getNum()
{
return num;
}
void PointCloudData::setNum()
{
num++;
}

36
Classes/PointCloudData.h Normal file
View File

@@ -0,0 +1,36 @@
#pragma once
#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/io/vtk_lib_io.h>
#include <QtWidgets/QMainWindow>
#include "Reconstruction.h"
using namespace pcl;
class PointCloudData
{
private:
PointCloudData(PointCloud<PointXYZRGB> cloudArg);
~PointCloudData(){};
PointCloud<PointXYZRGB> cloud;
boost::shared_ptr<visualization::PCLVisualizer> viewer;
std::vector<int> indices;
Ui::ReconstructionClass ui;
int num;// 用于框选删除点云的名称
public:
static PointCloudData* getInstance();
static PointCloudData* getInstance(PointCloud<PointXYZRGB> cloudArg);
static PointCloudData* instance ;
PointCloud<PointXYZRGB> getCloud() const;
void setCloud(PointCloud<PointXYZRGB> cloudArg);
boost::shared_ptr<visualization::PCLVisualizer> getViewer();
void setViewer(boost::shared_ptr<visualization::PCLVisualizer> viewerArg);
std::vector<int> getIndices();
void setIndices(std::vector<int> indicesArg);
Ui::ReconstructionClass getUI();
void setUI(Ui::ReconstructionClass uiArg);
int getNum();
void setNum();
};

View File

@@ -1,14 +1,21 @@
#include "Reconstruction.h"
#include "MyThread.h"
#include "YourThread.h"
Reconstruction::Reconstruction(QWidget* parent)
: QMainWindow(parent)
{
ui.setupUi(this);
this->setWindowIcon(QIcon(":/icon/image/common/icon.png"));
calibData = new CalibrationData();
calibrator = new Calibrator();
dirModel = new TreeModel(this);
td = new YourThread(&cloud);
t = new MyThread;
htd = new HisThread(&cloud, &mesh);
connect(td, SIGNAL(finished()), this, SLOT(setCloud()));
connect(t, SIGNAL(finished()), this, SLOT(setCloud()));
connect(htd, SIGNAL(finished()), this, SLOT(setCloud()));
device = Device::getInstance();
setStyle();
}
@@ -16,6 +23,15 @@ Reconstruction::Reconstruction(QWidget* parent)
#pragma region Style
void Reconstruction::setStyle()
{
boost::shared_ptr<visualization::PCLVisualizer> viewer(new visualization::PCLVisualizer("3D Viewer"));
viewer->setBackgroundColor(0.458, 0.529, 0.844);
viewer->initCameraParameters();
auto pclData = PointCloudData::getInstance(cloud);
pclData->setViewer(viewer);
pclData->setUI(ui);
ui.qvtkWidget->SetRenderWindow(viewer->getRenderWindow());
ui.qvtkWidget->update();
this->setContentsMargins(0, 0, 0, 0);
// this->setFixedSize(1240, 680);
// ui.centralWidget->setGeometry(0, 40, 1240, 680);
@@ -63,6 +79,9 @@ void Reconstruction::setPicStyle()
ui.pushButton_6->setEnabled(false);
ui.pushButton_7->setEnabled(false);
ui.pushButton_8->setEnabled(false);
ui.pushButton_9->setEnabled(false);
ui.pushButton_10->setEnabled(false);
ui.pushButton_19->setEnabled(false);
}
ui.label_21->setPixmap(QPixmap(":/icon/image/projection/novideo.jpg"));
@@ -93,8 +112,9 @@ void Reconstruction::setButtonStyle()
// 三维重建界面
ui.pushButton_13->setIcon(QIcon(":/icon/image/reconstruction/import.png"));
ui.pushButton_14->setIcon(QIcon(":/icon/image/reconstruction/export.png"));
ui.pushButton_15->setIcon(QIcon(":/icon/image/reconstruction/save2.png"));
ui.pushButton_15->setIcon(QIcon(":/icon/image/reconstruction/surface.png"));
ui.pushButton_16->setIcon(QIcon(":/icon/image/reconstruction/color.png"));
ui.pushButton_18->setIcon(QIcon(":/icon/image/reconstruction/help2.png"));
}
#pragma endregion
@@ -111,6 +131,10 @@ void Reconstruction::on_pushButton_clicked()
void Reconstruction::on_pushButton_2_clicked()
{
if (device->getHasCamera())
{
liveViewTimer = startTimer(100);
}
ui.stackedWidget->setCurrentIndex(1);
}
@@ -118,7 +142,7 @@ void Reconstruction::on_pushButton_3_clicked()
{
ui.stackedWidget->setCurrentIndex(2);
updateQVTK(cloud, color);
if (loadingStatus)
if (loadingStatus || reconstructStatus)
{
ui.label_9->setVisible(true);
}
@@ -130,30 +154,114 @@ void Reconstruction::on_pushButton_3_clicked()
#pragma endregion
#pragma region 多线程
// 点云框选回调函数
void pp_callback(const visualization::AreaPickingEvent& event, void* args)
{
auto pclData = PointCloudData::getInstance();
PointCloud<PointXYZRGB>::Ptr cloudPtr(new PointCloud<PointXYZRGB>);
cloudPtr = pclData->getCloud().makeShared();
auto num = pclData->getNum();
std::vector<int> indices;
if (event.getPointsIndices(indices) == -1)
return;
// cout << indices.size() << "\n";
PointCloud<PointXYZRGB>::Ptr clicked_points_3d(new PointCloud<PointXYZRGB>);
if(indices.size()>0){
for (auto i = 0; i < indices.size(); ++i)
{
clicked_points_3d->points.push_back(cloudPtr->points.at(indices[i]));
}
visualization::PointCloudColorHandlerCustom<PointXYZRGB> red(clicked_points_3d, 255, 0, 0);
std::stringstream ss;
std::string cloudName;
pclData->setNum();
ss << num++;
ss >> cloudName;
cloudName += "_cloudName";
pclData->getViewer()->addPointCloud(clicked_points_3d, red, cloudName);
pclData->getViewer()->
setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 10, cloudName);
// pclData->getViewer()->updatePointCloud(clicked_points_3d,"cloudName");
pclData->setIndices(indices);
pclData->getUI().qvtkWidget->SetRenderWindow(pclData->getViewer()->getRenderWindow());
pclData->getUI().qvtkWidget->update();
}
}
void Reconstruction::setCloud()
{
ui.label_9->setVisible(false);
loadingStatus = false;
cloud = t->getCloud();
updateQVTK(cloud, color);
if(possionStatus)
{
auto pclData = PointCloudData::getInstance(cloud);
pclData->getViewer()->removeAllPointClouds();
pclData->getViewer()->addPolygonMesh(mesh, "my");
possionStatus = false;
}else
{
if (loadingStatus)
{
cloud = t->getCloud();
loadingStatus = false;
}
if (reconstructStatus)
{
reconstructStatus = false;
}
cout << cloud[0].r;
updateQVTK(cloud, color);
}
}
void Reconstruction::updateQVTK(PointCloud<PointXYZRGB> cloud, QColor color)
{
boost::shared_ptr<visualization::PCLVisualizer> viewer(new visualization::PCLVisualizer("3D Viewer"));
viewer->setBackgroundColor(0.458, 0.529, 0.844);
viewer->setPointCloudRenderingProperties(visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud");
boost::shared_ptr<visualization::PCLVisualizer> viewer;
visualization::Camera camera;
if (PointCloudData::getInstance() != nullptr)
{
auto pclData = PointCloudData::getInstance();
pclData->setCloud(cloud);
pclData->getViewer()->getCameraParameters(camera);
cout << camera.pos[0] << "," << camera.pos[1] << "," << camera.pos[2] << "," << camera.
view[0] <<
"," << camera.view[1] << "," << camera.view[2] << "\n";
viewer = pclData->getViewer();
}
else
{
boost::shared_ptr<visualization::PCLVisualizer> viewerArg(new visualization::PCLVisualizer("3D Viewer"));
viewer = viewerArg;
viewer->setBackgroundColor(0.458, 0.529, 0.844);
viewer->initCameraParameters();
viewer->getCameraParameters(camera);
cout << camera.pos[0] << "," << camera.pos[1] << "," << camera.pos[2] << "," << camera.
view[0] <<"," << camera.view[1] << "," << camera.view[2] << "\n";
// viewer->setCameraPosition(50, -50, 1500,50,-50,1490,0, 1, 0, 0);
auto pclData = PointCloudData::getInstance(cloud);
pclData->setViewer(viewer);
pclData->setUI(ui);
}
double size = 1;
viewer->getPointCloudRenderingProperties(visualization::PCL_VISUALIZER_POINT_SIZE, size, "cloud");
viewer->removeAllPointClouds();
// viewer->setPointCloudRenderingProperties(visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud");
if (cloud.size() != 0)
{
PointCloud<PointXYZRGB>::Ptr cloudPtr(new PointCloud<PointXYZRGB>);
cloudPtr = cloud.makeShared();
int x = int(color.redF() * 255);
int y = int(color.greenF() * 255);
int z = int(color.blueF() * 255);
visualization::PointCloudColorHandlerCustom<PointXYZRGB> cloud_color(cloudPtr, x, y, z);// 统一处理点云颜色
auto x = int(color.redF() * 255);
auto y = int(color.greenF() * 255);
auto z = int(color.blueF() * 255);
visualization::PointCloudColorHandlerCustom<PointXYZRGB> cloud_color(cloudPtr, x, y, z); // 统一处理点云颜色
viewer->addPointCloud(cloudPtr, cloud_color, "cloud");
viewer->setPointCloudRenderingProperties(visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud");
viewer->setPointCloudRenderingProperties(visualization::PCL_VISUALIZER_POINT_SIZE, size, "cloud");
// viewer->setCameraPosition(camera.pos[0], camera.pos[1], camera.pos[2], camera.view[0], camera.view[1], camera.view[2],0,0,1);
viewer->registerAreaPickingCallback(pp_callback, (void*)&cloud);
}
ui.qvtkWidget->SetRenderWindow(viewer->getRenderWindow());
ui.qvtkWidget->update();
@@ -195,19 +303,19 @@ void Reconstruction::on_pushButton_6_clicked()
fstools::mkDir(tr("./config/calib"), tr(path));
device->getProjector()->displayPattern(0);
//QTest::qSleep(500);
Sleep(500);
for (unsigned int i = 0; i < 44; i++)
{
// Project pattern
device->getProjector()->displayPattern(i);
//QTest::qSleep(200);
Sleep(200);
// Effectuate sleep (necessary with some camera implementations)
QApplication::processEvents();
// Aquire frame
auto frame = device->getCamera()->getFrame();
auto frameCV = cvtools::camFrame2Mat(frame);
cvtColor(frameCV, frameCV, cv::COLOR_BGR2GRAY);
cvtColor(frameCV, frameCV, COLOR_BGR2GRAY);
//parameter
std::cout << cv::format("./config/calib/calib%.2d/%.2d.bmp", imgCount, i) << std::endl;
imwrite(cv::format("./config/calib/calib%.2d/%.2d.bmp", imgCount, i), frameCV);
@@ -338,9 +446,13 @@ void Reconstruction::timerEvent(QTimerEvent* event)
// correct size only if label has no borders/frame!
auto w = ui.label_11->width();
auto h = ui.label_11->height();
auto pixmap = QPixmap::fromImage(qimage);
ui.label_11->setPixmap(pixmap.scaled(w, h, Qt::KeepAspectRatio));
w = ui.label_21->width();
h = ui.label_21->height();
pixmap = QPixmap::fromImage(qimage);
ui.label_21->setPixmap(pixmap.scaled(w, h, Qt::KeepAspectRatio));
}
void Reconstruction::setDirModel(const QString& dirname)
@@ -377,7 +489,7 @@ void Reconstruction::setDirModel(const QString& dirname)
continue;
}
// add the childrens
// add the childrens
auto parent = dirModel->index(row, 0);
dirModel->setData(parent, item, Qt::DisplayRole);
@@ -483,19 +595,45 @@ void Reconstruction::on_pushButton_4_clicked()
}
ui.lineEdit->setText(fileName);
td->setPath(fileName.toStdString());
// 投影结构光图案
// device->getProjector()->displayPattern(44);
// todo 接着进行投影操作
}
// 投影图案
void Reconstruction::on_pushButton_19_clicked()
{
device->getProjector()->displayPattern(44);
}
// 相机拍照
void Reconstruction::on_pushButton_9_clicked()
{
// todo 相机拍照
picPath = "Resources/image/test.png"; // 该行仅做测试使用
DisplayPic* picDlg = new DisplayPic();
picDlg->setPicPath(picPath);
connect(picDlg, SIGNAL(getPicAction(QString)), this, SLOT(setPicAction(QString)));
picDlg->show();
killTimer(liveViewTimer);
auto frame = device->getCamera()->getFrame();
auto frameCV = cvtools::camFrame2Mat(frame);
// cvtColor(frameCV, frameCV, cv::COLOR_BGR2GRAY);
if (frameCV.rows == 0 || frameCV.cols == 0)
{
return;
}
frameCV = frameCV.clone();
auto qimage = cvtools::cvMat2qImage(frameCV);
// correct size only if label has no borders/frame!
auto w = ui.label_21->width();
auto h = ui.label_21->height();
auto pixmap = QPixmap::fromImage(qimage);
ui.label_21->setPixmap(pixmap.scaled(w, h, Qt::KeepAspectRatio));
// picPath = "Resources/image/test.png"; // 该行仅做测试使用
// DisplayPic* picDlg = new DisplayPic();
// picDlg->setPicPath(picPath);
// connect(picDlg, SIGNAL(getPicAction(QString)), this, SLOT(setPicAction(QString)));
// picDlg->show();
}
void Reconstruction::setPicAction(QString action)
@@ -525,18 +663,23 @@ void Reconstruction::on_pushButton_10_clicked()
if (!fileName.isNull())
{
QImage iim(picPath); //创建一个图片对象,存储源图片
QPainter painter(&iim); //设置绘画设备
QFile file(fileName); //创建一个文件对象,存储用户选择的文件
if (!file.open(QIODevice::ReadWrite))
{
return;
}
QByteArray ba;
QBuffer buffer(&ba);
buffer.open(QIODevice::WriteOnly);
iim.save(&buffer, "JPG"); //把图片以流方式写入文件缓存流中
file.write(ba); //将流中的图片写入文件对象当中
QScreen* screen = QGuiApplication::primaryScreen();
screen->grabWindow(ui.label_21->winId()).save(fileName);
// QImage iim(picPath); //创建一个图片对象,存储源图片
// QPainter painter(&iim); //设置绘画设备
// QFile file(fileName); //创建一个文件对象,存储用户选择的文件
// if (!file.open(QIODevice::ReadWrite))
// {
// return;
// }
// QByteArray ba;
// QBuffer buffer(&ba);
// buffer.open(QIODevice::WriteOnly);
// iim.save(&buffer, "JPG"); //把图片以流方式写入文件缓存流中
// file.write(ba); //将流中的图片写入文件对象当中
}
}
else
@@ -550,49 +693,11 @@ void Reconstruction::on_pushButton_10_clicked()
void Reconstruction::on_pushButton_17_clicked()
{
// todo 开始重建
// auto cArg = CameraArguments::getInstance();
Mat r(3, 3, CV_32F);
double m0[3][3] = {
{9.7004457782050868e-001, 1.3447278830863673e-002, 2.4255450466457243e-001},
{-8.7082927494022376e-003, 9.9974988338843274e-001, -2.0599424802792338e-002},
{-2.4277084396282392e-001, 1.7870124701864658e-002, 9.6991905639837694e-001}
};
for (auto i = 0; i < r.rows; i++)
for (auto j = 0; j < r.cols; j++)
r.at<float>(i, j) = m0[i][j];
Mat t(1, 3, CV_32F);
double m1[1][3] = {
{-1.9511179496234658e+002, 1.2627509817628756e+001, -5.9345885017522171e+001}
};
for (auto i = 0; i < t.rows; i++)
for (auto j = 0; j < t.cols; j++)
t.at<float>(i, j) = m1[i][j];
Mat kc(3, 3, CV_32F);
double m2[3][3] = {
{2.1536653255083029e+003, 0., 6.1886776197116581e+002},
{0., 2.1484363899666910e+003, 5.0694898820460787e+002},
{0., 0., 1.}
};
for (auto i = 0; i < kc.rows; i++)
for (auto j = 0; j < kc.cols; j++)
kc.at<float>(i, j) = m2[i][j];
Mat kp(3, 3, CV_32F);
double m3[3][3] = {
{1.7235093158297350e+003, 0., 4.4128195628736904e+002},
{0., 3.4533404000869359e+003, 5.7316457428558715e+002},
{0., 0., 1.}
};
for (auto i = 0; i < kp.rows; i++)
for (auto j = 0; j < kp.cols; j++)
kp.at<float>(i, j) = m3[i][j];
auto cArg = CameraArguments::getInstance(r, t, kc, kp);
CoreAlgorithm testCase = CoreAlgorithm("./Data/image/reconstruction/tq.png", cArg);
testCase.run();
reconstructStatus = true;
on_pushButton_3_clicked();
ui.label_9->setVisible(true);
QCoreApplication::processEvents();
td->start();
}
#pragma endregion
@@ -602,28 +707,46 @@ void Reconstruction::on_pushButton_17_clicked()
// 异常点选择
void Reconstruction::on_pushButton_11_clicked()
{
// todo 异常点选择
QMessageBox::information(this, tr("QMessageBox::information()"),
"Please press the 'X' in the keyboard to choose the outlier points!");
}
// 异常点剔除
void Reconstruction::on_pushButton_12_clicked()
{
// todo 异常点剔除
auto pclData = PointCloudData::getInstance();
// cloud = pclData->getCloud();
auto indices = pclData->getIndices();
for (auto i = 0; i < indices.size(); ++i)
{
// cout << "i:" << i << " indices:" << indices[i] << " diff:" << indices[i]-i << "\n";
auto index = cloud.begin() + (indices[i] - i);
// cout << "size:" << cloudPtr->size() << ",index:" << indices[i] - i<<"\n" ;
if (indices[i] - i >= cloud.size())break;
cloud.erase(index);
}
indices.clear();
pclData->setIndices(indices);
pclData->setCloud(cloud);
updateQVTK(cloud, color);
// pclData->getViewer()->updatePointCloud();
}
// 导入点云
void Reconstruction::on_pushButton_13_clicked()
{
if (loadingStatus)
if (loadingStatus || reconstructStatus)
{
QMessageBox mesg;
mesg.warning(this, "WARNING", "正在加载… ");
mesg.warning(this, "WARNING", "There is a Point Cloud Loading.");
return;
}
QString fileName = QFileDialog::getOpenFileName(
this, tr("open multiple image file"),
"./", tr("PCD files(*.pcd);;All files (*.*)")); // todo 文件类型待确认
"./", tr("PCD files(*.pcd);;PLY files(*.ply);;All files (*.*)")); // todo 文件类型待确认
if (fileName.isEmpty())
{
@@ -631,43 +754,53 @@ void Reconstruction::on_pushButton_13_clicked()
mesg.warning(this, "WARNING", "Failed to open file");
return;
}
boost::shared_ptr<visualization::PCLVisualizer> viewer(new visualization::PCLVisualizer("3D Viewer"));
viewer->setBackgroundColor(0.458, 0.529, 0.844);
viewer->initCameraParameters();
// viewer->setCameraPosition(0, -10, -25, 0, 1, 0, 0, 1, 0, 0);
// viewer->setPosition(0, 0);
ui.qvtkWidget->SetRenderWindow(viewer->getRenderWindow());
auto pclData = PointCloudData::getInstance(cloud);
pclData->setViewer(viewer);
ui.label_9->setVisible(true);
QCoreApplication::processEvents();
t->setPcd(fileName);
t->start();
loadingStatus = true;
// todo 存储文件或文件路径
}
// 导出结果
void Reconstruction::on_pushButton_14_clicked()
{
// todo 导出结果
}
// 保存截图
void Reconstruction::on_pushButton_15_clicked()
{
QString fileName = QFileDialog::getSaveFileName(this,
tr("save screen shot"),
"",
tr("*.png;; *.jpg;; *.bmp;; All files(*.*)"));
QString fileName=QFileDialog::getSaveFileName(this, tr("Save to file"),
"./", tr("PCD files(*.pcd);;PLY files(*.ply);;All files (*.*)"));
if (!fileName.isNull())
{
// 截图所选的控件暂时用 label_17 替代
QPixmap pix = QPixmap::grabWidget(ui.qvtkWidget);
pix.save(fileName);
if (fileName.endsWith(".pcd", Qt::CaseInsensitive))
io::savePCDFileBinary(fileName.toStdString(), cloud);
else if (fileName.endsWith(".ply", Qt::CaseInsensitive))
io::savePLYFileBinary(fileName.toStdString(), cloud);
}
}
// 泊松曲面重建
void Reconstruction::on_pushButton_15_clicked()
{
ui.label_9->setVisible(true);
QCoreApplication::processEvents();
htd->start();
possionStatus = true;
}
// 颜色选取
void Reconstruction::on_pushButton_16_clicked()
{
QColor colortmp = QColorDialog::getColor(Qt::black);
if (colortmp.isValid()) {
if (colortmp.isValid())
{
color = colortmp;
updateQVTK(cloud, color);
}
@@ -679,4 +812,5 @@ void Reconstruction::on_pushButton_18_clicked()
Help* help = new Help();
help->show();
}
#pragma endregion
#pragma endregion

View File

@@ -7,13 +7,25 @@
#include <QBuffer>
#include <QTextStream>
#include <QStyleFactory>
#include <QScreen>
#include <QtTest/QtTest>
#include "DisplayPic.h"
#include "ui_Reconstruction.h"
#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
#include <pcl/io/ply_io.h>
#include <pcl/io/png_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/io/vtk_lib_io.h>
#include <vtkOutputwindow.h>
#include <pcl\filters\statistical_outlier_removal.h>
#include <pcl/filters/voxel_grid.h>
#include <pcl/common/transforms.h>
#include <vector>
#include <pcl/io/obj_io.h>
#include <pcl/PolygonMesh.h>
#include <pcl/features/normal_3d.h>
#include <pcl/features/normal_3d_omp.h>
#include <vtkRenderWindow.h>
#include <QProgressDialog>
#include "Camera.h"
@@ -23,15 +35,19 @@
#include "Calibrator.h"
#include "CalibrationData.h"
#include "Device.h"
#include "HisThread.h"
#include "CoreAlgorithm.h"
#include "MyThread.h"
#include "Help.h"
#include <iostream>
using namespace pcl;
using namespace std;
enum Role { ImageFilenameRole = Qt::UserRole, GrayImageRole, ColorImageRole };
class MyThread;
class YourThread;
class Reconstruction : public QMainWindow
{
Q_OBJECT
@@ -50,17 +66,25 @@ private:
QString picPath = "Result/result.png"; // 三维重建:拍摄照片的存储路径
PointCloud<PointXYZRGB> cloud;
bool confirmPic = false; // 三维重建:确定是否用所拍照片进行重建
QColor color = Qt::black; // 点云渲染:颜色
QColor color = Qt::yellow; // 点云渲染:颜色
// 标定相关变量
int liveViewTimer;
TreeModel* dirModel;
CalibrationData* calibData;
Calibrator* calibrator;
int imgCount;
// 多线程
MyThread* t;
// 重建多线程
YourThread *td;
bool reconstructStatus = false; // 点云渲染
// 点云多线程
MyThread *t;
HisThread* htd;
PolygonMesh mesh;
bool loadingStatus = false; // 点云渲染
bool possionStatus = false;
void setStyle();
void setPicStyle();
void setButtonStyle();
@@ -85,6 +109,7 @@ private slots:
void on_pushButton_16_clicked();
void on_pushButton_17_clicked();
void on_pushButton_18_clicked();
void on_pushButton_19_clicked();
void setPicAction(QString action);
void setCloud();
};

74
Classes/YourThread.cpp Normal file
View File

@@ -0,0 +1,74 @@
#include "YourThread.h"
YourThread::YourThread(PointCloud<PointXYZRGB> *cloudRef)
{
cloud = cloudRef;
}
void YourThread::run()
{
// auto cArg = CameraArguments::getInstance();
Mat r(3, 3, CV_32F);
double m0[3][3] = {
{9.7004457782050868e-001, 1.3447278830863673e-002, 2.4255450466457243e-001},
{-8.7082927494022376e-003, 9.9974988338843274e-001, -2.0599424802792338e-002},
{-2.4277084396282392e-001, 1.7870124701864658e-002, 9.6991905639837694e-001}
};
for (auto i = 0; i < r.rows; i++)
for (auto j = 0; j < r.cols; j++)
r.at<float>(i, j) = m0[i][j];
Mat t(1, 3, CV_32F);
double m1[1][3] = {
{-1.9511179496234658e+002, 1.2627509817628756e+001, -5.9345885017522171e+001}
};
for (auto i = 0; i < t.rows; i++)
for (auto j = 0; j < t.cols; j++)
t.at<float>(i, j) = m1[i][j];
Mat kc(3, 3, CV_32F);
double m2[3][3] = {
{2.1536653255083029e+003, 0., 6.1886776197116581e+002},
{0., 2.1484363899666910e+003, 5.0694898820460787e+002},
{0., 0., 1.}
};
for (auto i = 0; i < kc.rows; i++)
for (auto j = 0; j < kc.cols; j++)
kc.at<float>(i, j) = m2[i][j];
Mat kp(3, 3, CV_32F);
double m3[3][3] = {
{1.7235093158297350e+003, 0., 4.4128195628736904e+002},
{0., 3.4533404000869359e+003, 5.7316457428558715e+002},
{0., 0., 1.}
};
for (auto i = 0; i < kp.rows; i++)
for (auto j = 0; j < kp.cols; j++)
kp.at<float>(i, j) = m3[i][j];
auto cArg = CameraArguments::getInstance(r, t, kc, kp);
CoreAlgorithm testCase = CoreAlgorithm(path, cArg);
testCase.run();
vector<Mat> coordinates=testCase.getCoordinates();
cloud->width = coordinates.size();
cloud->height = 1;
cloud->is_dense = false;
cloud->points.resize(cloud->width * cloud->height);
auto index = 0;
for (size_t i = 0; i < cloud->points.size(); ++i)
{
cloud->points[i].x = coordinates[index].at<float>(0, 0);
cloud->points[i].y = coordinates[index].at<float>(0, 1);
cloud->points[i].z = coordinates[index].at<float>(0, 2);
index++;
}
auto pclData = PointCloudData::getInstance(*cloud);
pclData->setCloud(*cloud);
}
void YourThread::setPath(string pathArg)
{
path = pathArg;
}

25
Classes/YourThread.h Normal file
View File

@@ -0,0 +1,25 @@
#pragma once
#include <qthread.h>
#include <pcl/point_types.h>
#include <pcl/io/vtk_lib_io.h>
#include "PointCloudData.h"
using namespace std;
using namespace pcl;
class YourThread :
public QThread
{
public:
YourThread(PointCloud<PointXYZRGB> *cloud);
~YourThread(){}
void setPath(string pathArg);
private:
PointCloud<PointXYZRGB> *cloud;
string path;
protected:
void run();
};

View File

@@ -5,8 +5,8 @@
int main(int argc, char *argv[])
{
AllocConsole();//分配控制台
freopen("CONOUT$", "w+t", stdout);//向控制台输出
// AllocConsole();//分配控制台
// freopen("CONOUT$", "w+t", stdout);//向控制台输出
QApplication a(argc, argv);
Loading l;
l.show();

3071
Data/result/1.pcd Normal file

File diff suppressed because it is too large Load Diff

176786
Data/result/ball.pcd Normal file

File diff suppressed because it is too large Load Diff

35958
Data/result/bunny.pcd Normal file

File diff suppressed because it is too large Load Diff

100011
Data/result/rail.pcd Normal file

File diff suppressed because it is too large Load Diff

BIN
Data/result/result.ply Normal file

Binary file not shown.

Binary file not shown.

201
LICENSE Normal file
View File

@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@@ -2,7 +2,7 @@
高铁列车运行速度快,轮轨表面相对光滑且无明显特征点,使得特征不易提取,点云重建精度较差,给三维重建带来了很大的困难。
<div class="imgs" align="center" ><img src="https://5618.oss-cn-beijing.aliyuncs.com/wordpress/image/00/00.gif" alt="01" width="45%" height="45%" /> </div>
<div class="imgs" align="center" ><img src="http://static.zybuluo.com/TangWill/83s2b1jh93zumwaeavyhn0w2/00.gif" alt="01" width="45%" height="45%"/></div>
针对高铁列车速度快的特点,可以通过采用非接触的测量方法 —— 计算机视觉。物体表面的点云三维重建在机器视觉领域已经成为一个很重要的研究方向。点云即物体表面特征点的集合,这些点包含了物体表面的三维坐标以及颜色等信息。点云的重建方法包括基于结构光的三维重建技术、光照模型、基于单目视觉或双目视觉的重建方法等。
@@ -12,24 +12,24 @@
项目前期,对项目研究内容进行深入了解,根据研究内容查阅相关文献资料,了解了目前各项技术研究现状,能够明白经典方法的原理并能够将其实现。在学习并理解了研究内容及相关原理的基础上,对空间编码中的基于 De Bruijn 序列编码和基于伪随机矩阵编码两种方式的有关理论及其相关论文进行了学习,部分论文如下所示。
<div class="imgs" align="center" ><img src="https://5618.oss-cn-beijing.aliyuncs.com/wordpress/image/00/02.png" alt="03" width="30%" height="30%" /> <img src="https://5618.oss-cn-beijing.aliyuncs.com/wordpress/image/00/03.png" alt="04" width="30%" height="30%" /> <img src="https://5618.oss-cn-beijing.aliyuncs.com/wordpress/image/00/04.png" alt="05" width="30%" height="30%" /></div>
<div class="imgs" align="center" ><img src="http://static.zybuluo.com/TangWill/epo24nprhgogp1g0s38hiwy7/02.png" alt="03" width="30%" height="30%" /> <img src="http://static.zybuluo.com/TangWill/6q8x3x920nxdyluimu43gut1/03.png" alt="04" width="30%" height="30%" /> <img src="http://static.zybuluo.com/TangWill/z6giu9sqibq08fc1crweplxa/04.png" alt="05" width="30%" height="30%" /></div>
项目中期,对前期所阅读的文献和经典算法的实现进行研究、归纳、整理。参照本项目的研究内容拟选出适用的相关算法与技术,提出实验思路,制定实验方案。
伪随机序列具有良好的窗口特性,即通过一个较小的窗口在编码图案上面移动时,每个窗口内的编码组合是唯一的,根据窗口的这个特性可以唯一地辨识编码图案上的特征点。复现论文的本原多项式采用 h(x)=2𝑥^6+2𝑥^5+𝑥^4+3𝑥^3+2𝑥^2+2𝑥+1菱形作为结构光编码图案的基本元素红、蓝、绿、黑四种颜色作为标记菱形代表的不同数值窗口大小为$2\times 3$,同时以菱形角点作为特征点,可以有效提高特征点提取的精度。根据论文提出的结构光解码方法,可有效提取物体表面特征点,但由于角点数量较少,不能达到稠密点云的效果,未来可以通过改善相机分辨率,减小菱形面积,增加特征点等方式以提高特征点的密度。部分参考论文和实验结果如下。
<div class="imgs" align="center" ><img src="https://5618.oss-cn-beijing.aliyuncs.com/wordpress/image/00/04.png" alt="06" width="22%" height="22%" /> <img src="https://5618.oss-cn-beijing.aliyuncs.com/wordpress/image/00/05.png" alt="07" width="22%" height="22%" /> <img src="https://5618.oss-cn-beijing.aliyuncs.com/wordpress/image/00/06.png" alt="08" width="22%" height="22%" /><img src="https://5618.oss-cn-beijing.aliyuncs.com/wordpress/image/00/07.png" alt="09" width="22%" height="22%" /></div>
<div class="imgs" align="center" ><img src="http://static.zybuluo.com/TangWill/z6giu9sqibq08fc1crweplxa/04.png" alt="06" width="22%" height="22%" /> <img src="http://static.zybuluo.com/TangWill/9jljaktk7e3qso61by60pohf/05.png" alt="07" width="22%" height="22%" /> <img src="http://static.zybuluo.com/TangWill/1wqxgxn4iwdicq1v9rs04e1x/06.png" alt="08" width="22%" height="22%" /><img src="http://static.zybuluo.com/TangWill/s3gah640whmsbfxoxzg2pqib/07.png" alt="09" width="22%" height="22%" /></div>
De Bruijn 序列由n种不同元素构成任意长度为m的连续子序列只出现一次。复现的论文以 B(3,4) 序列进行编码,条纹作为结构光编码图案的基本元素,红、蓝、绿三种颜色作为标记条纹代表的不同数值,窗口大小为 4*1以条纹中心点作为特征点。同时在 HSV 颜色空间模型中,以余弦函数对条纹的 V 通道进行编码。在结构光解码时,除了提取条纹中心点作为特征点,同时对拍摄到的图像的 V 通道进行加窗傅里叶变换分析,通过分析得到的相位进而增加特征点的密度。根据论文的基本思路,可在提高提取点云进度的同时增加点云的稠密度,实验效果较好。根据项目内容和有关研究的进展,在研究论文和实验的基础上,对复现论文的算法进行改进,提出适合项目场景的算法流程。部分论文如下。
<div class="imgs" align="center" ><img src="https://5618.oss-cn-beijing.aliyuncs.com/wordpress/image/00/08.png" alt="10" width="22%" height="22%" /> <img src="https://5618.oss-cn-beijing.aliyuncs.com/wordpress/image/00/09.png" alt="11" width="22%" height="22%" /> <img src="https://5618.oss-cn-beijing.aliyuncs.com/wordpress/image/00/10.png" alt="12" width="22%" height="22%" /><img src="https://5618.oss-cn-beijing.aliyuncs.com/wordpress/image/00/11.png" alt="13" width="22%" height="22%" /></div>
<div class="imgs" align="center" ><img src="http://static.zybuluo.com/TangWill/i9bvx3xay0c8v4040hjzulcv/08.png" alt="10" width="22%" height="22%" /> <img src="http://static.zybuluo.com/TangWill/wspx83923ujobnjysj4y2l3h/09.png" alt="11" width="22%" height="22%" /> <img src="http://static.zybuluo.com/TangWill/pflvpf9yzwkfw8csn0at2trl/10.png" alt="12" width="22%" height="22%" /><img src="http://static.zybuluo.com/TangWill/v0cdilgqhy1k4oqaw2dhdpgh/11.png" alt="13" width="22%" height="22%" /></div>
基于改进的算法对球体表面进行重建,得到约 17W 条点云数据,在 Meshlab 中对点云数据进行渲染,实验结果如下。
<div class="imgs" align="center" ><img src="https://5618.oss-cn-beijing.aliyuncs.com/wordpress/image/00/13.png" alt="14" /></div>
<div class="imgs" align="center" ><img src="http://static.zybuluo.com/TangWill/etw2k42uqvbb63zyvbry0ki6/13.png" alt="14" /></div>
改用以 B(4,3) 序列进行编码,条纹作为结构光编码图案的基本元素,红、蓝、绿、白四种颜色作为标记条纹代表的不同数值,窗口大小为 3*1以条纹中心点作为特征点。同样对球体表面进行重建得到约 20W 条点云数据,在 Meshlab 中对点云数据进行渲染,实验结果如下。
<div class="imgs" align="center" ><img src="https://5618.oss-cn-beijing.aliyuncs.com/wordpress/image/00/14.png" alt="15" /></div>
<div class="imgs" align="center" ><img src="http://static.zybuluo.com/TangWill/8z4qxmk5467d6r7rpr1brpkg/14.png" alt="15" /></div>
---

73
Reconstruction.rc Normal file
View File

@@ -0,0 +1,73 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource1.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// 中文(简体,中国) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource1.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""winres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON1 ICON "icon1.ico"
IDI_ICON2 ICON "D:\\BJTU\\Reconstruction\\Resources\\image\\common\\icon.ico"
#endif // 中文(简体,中国) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@@ -39,8 +39,12 @@
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<IncludePath>D:\BJTU\Reconstruction\Lib\FlyCapture2\include;D:\BJTU\Reconstruction\Lib\FlyCapture2\include\C;D:\BJTU\Reconstruction\Lib\opencv\build\include;D:\BJTU\Reconstruction\Lib\opencv\build\include\opencv2;$(IncludePath)</IncludePath>
<LibraryPath>D:\BJTU\Reconstruction\Lib\FlyCapture2\lib64;D:\BJTU\Reconstruction\Lib\FlyCapture2\lib64\vs2015;D:\BJTU\Reconstruction\Lib\opencv\build\x64\vc15\lib;$(LibraryPath)</LibraryPath>
<IncludePath>D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\VTK\include\vtk-8.0;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\Qhull\include;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\FLANN\include;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\Eigen\eigen3;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\Boost\include\boost-1_64;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\include\pcl-1.8;C:\Program Files\OpenNI2\Include;D:\BJTU\Reconstruction\Lib\FlyCapture2\include;D:\BJTU\Reconstruction\Lib\FlyCapture2\include\C;D:\BJTU\Reconstruction\Lib\opencv\build\include;D:\BJTU\Reconstruction\Lib\opencv\build\include\opencv2;$(IncludePath)</IncludePath>
<LibraryPath>D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\Boost\lib;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\FLANN\lib;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\Qhull\lib;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\VTK\lib;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\lib;C:\Program Files\OpenNI2\Lib;D:\BJTU\Reconstruction\Lib\FlyCapture2\lib64;D:\BJTU\Reconstruction\Lib\FlyCapture2\lib64\vs2015;D:\BJTU\Reconstruction\Lib\opencv\build\x64\vc15\lib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<IncludePath>D:\BJTU\Reconstruction\Lib\opencv\build\include\opencv2;D:\BJTU\Reconstruction\Lib\opencv\build\include;D:\BJTU\Reconstruction\Lib\FlyCapture2\include;D:\BJTU\Reconstruction\Lib\FlyCapture2\include\C;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\VTK\include\vtk-8.0;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\Qhull\include;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\FLANN\include;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\Eigen\eigen3;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\Boost\include\boost-1_64;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\include\pcl-1.8;C:\Program Files\OpenNI2\Include;$(IncludePath)</IncludePath>
<LibraryPath>D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\VTK\lib;D:\BJTU\Reconstruction\Lib\opencv\build\x64\vc15\lib;D:\BJTU\Reconstruction\Lib\FlyCapture2\lib64\vs2015;D:\BJTU\Reconstruction\Lib\FlyCapture2\lib64;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\Boost\lib;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\FLANN\lib;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\3rdParty\Qhull\lib;D:\BJTU\Reconstruction\Lib\PCL\PCL 1.8.1\lib;C:\Program Files\OpenNI2\Lib;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
<Import Project="$(QtMsBuild)\qt_defaults.props" />
@@ -63,12 +67,14 @@
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SILENCE_FPOS_SEEKPOS_DEPRECATION_WARNING;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>false</SDLCheck>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>setupapi.lib;opencv_world420d.lib;FlyCapture2d_v140.lib;FlyCapture2GUId_v140.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>setupapi.lib;opencv_world420d.lib;FlyCapture2d_v140.lib;FlyCapture2GUId_v140.lib;pcl_common_debug.lib;pcl_features_debug.lib;pcl_filters_debug.lib;pcl_io_debug.lib;pcl_io_ply_debug.lib;pcl_kdtree_debug.lib;pcl_keypoints_debug.lib;pcl_ml_debug.lib;pcl_octree_debug.lib;pcl_outofcore_debug.lib;pcl_people_debug.lib;pcl_recognition_debug.lib;pcl_registration_debug.lib;pcl_sample_consensus_debug.lib;pcl_search_debug.lib;pcl_segmentation_debug.lib;pcl_stereo_debug.lib;pcl_surface_debug.lib;pcl_tracking_debug.lib;pcl_visualization_debug.lib;vtkalglib-8.0-gd.lib;vtkChartsCore-8.0-gd.lib;vtkCommonColor-8.0-gd.lib;vtkCommonComputationalGeometry-8.0-gd.lib;vtkCommonCore-8.0-gd.lib;vtkCommonDataModel-8.0-gd.lib;vtkCommonExecutionModel-8.0-gd.lib;vtkCommonMath-8.0-gd.lib;vtkCommonMisc-8.0-gd.lib;vtkCommonSystem-8.0-gd.lib;vtkCommonTransforms-8.0-gd.lib;vtkDICOMParser-8.0-gd.lib;vtkDomainsChemistry-8.0-gd.lib;vtkDomainsChemistryOpenGL2-8.0-gd.lib;vtkexoIIc-8.0-gd.lib;vtkexpat-8.0-gd.lib;vtkFiltersAMR-8.0-gd.lib;vtkFiltersCore-8.0-gd.lib;vtkFiltersExtraction-8.0-gd.lib;vtkFiltersFlowPaths-8.0-gd.lib;vtkFiltersGeneral-8.0-gd.lib;vtkFiltersGeneric-8.0-gd.lib;vtkFiltersGeometry-8.0-gd.lib;vtkFiltersHybrid-8.0-gd.lib;vtkFiltersHyperTree-8.0-gd.lib;vtkFiltersImaging-8.0-gd.lib;vtkFiltersModeling-8.0-gd.lib;vtkFiltersParallel-8.0-gd.lib;vtkFiltersParallelImaging-8.0-gd.lib;vtkFiltersPoints-8.0-gd.lib;vtkFiltersProgrammable-8.0-gd.lib;vtkFiltersSelection-8.0-gd.lib;vtkFiltersSMP-8.0-gd.lib;vtkFiltersSources-8.0-gd.lib;vtkFiltersStatistics-8.0-gd.lib;vtkFiltersTexture-8.0-gd.lib;vtkFiltersTopology-8.0-gd.lib;vtkFiltersVerdict-8.0-gd.lib;vtkfreetype-8.0-gd.lib;vtkGeovisCore-8.0-gd.lib;vtkgl2ps-8.0-gd.lib;vtkglew-8.0-gd.lib;vtkGUISupportQt-8.0-gd.lib;vtkGUISupportQtSQL-8.0-gd.lib;vtkhdf5-8.0-gd.lib;vtkhdf5_hl-8.0-gd.lib;vtkImagingColor-8.0-gd.lib;vtkImagingCore-8.0-gd.lib;vtkImagingFourier-8.0-gd.lib;vtkImagingGeneral-8.0-gd.lib;vtkImagingHybrid-8.0-gd.lib;vtkImagingMath-8.0-gd.lib;vtkImagingMorphological-8.0-gd.lib;vtkImagingSources-8.0-gd.lib;vtkImagingStatistics-8.0-gd.lib;vtkImagingStencil-8.0-gd.lib;vtkInfovisCore-8.0-gd.lib;vtkInfovisLayout-8.0-gd.lib;vtkInteractionImage-8.0-gd.lib;vtkInteractionStyle-8.0-gd.lib;vtkInteractionWidgets-8.0-gd.lib;vtkIOAMR-8.0-gd.lib;vtkIOCore-8.0-gd.lib;vtkIOEnSight-8.0-gd.lib;vtkIOExodus-8.0-gd.lib;vtkIOExport-8.0-gd.lib;vtkIOExportOpenGL2-8.0-gd.lib;vtkIOGeometry-8.0-gd.lib;vtkIOImage-8.0-gd.lib;vtkIOImport-8.0-gd.lib;vtkIOInfovis-8.0-gd.lib;vtkIOLegacy-8.0-gd.lib;vtkIOLSDyna-8.0-gd.lib;vtkIOMINC-8.0-gd.lib;vtkIOMovie-8.0-gd.lib;vtkIONetCDF-8.0-gd.lib;vtkIOParallel-8.0-gd.lib;vtkIOParallelXML-8.0-gd.lib;vtkIOPLY-8.0-gd.lib;vtkIOSQL-8.0-gd.lib;vtkIOTecplotTable-8.0-gd.lib;vtkIOVideo-8.0-gd.lib;vtkIOXML-8.0-gd.lib;vtkIOXMLParser-8.0-gd.lib;vtkjpeg-8.0-gd.lib;vtkjsoncpp-8.0-gd.lib;vtklibharu-8.0-gd.lib;vtklibxml2-8.0-gd.lib;vtklz4-8.0-gd.lib;vtkmetaio-8.0-gd.lib;vtkNetCDF-8.0-gd.lib;vtknetcdf_c++-gd.lib;vtkoggtheora-8.0-gd.lib;vtkParallelCore-8.0-gd.lib;vtkpng-8.0-gd.lib;vtkproj4-8.0-gd.lib;vtkRenderingAnnotation-8.0-gd.lib;vtkRenderingContext2D-8.0-gd.lib;vtkRenderingContextOpenGL2-8.0-gd.lib;vtkRenderingCore-8.0-gd.lib;vtkRenderingFreeType-8.0-gd.lib;vtkRenderingGL2PSOpenGL2-8.0-gd.lib;vtkRenderingImage-8.0-gd.lib;vtkRenderingLabel-8.0-gd.lib;vtkRenderingLOD-8.0-gd.lib;vtkRenderingOpenGL2-8.0-gd.lib;vtkRenderingQt-8.0-gd.lib;vtkRenderingVolume-8.0-gd.lib;vtkRenderingVolumeOpenGL2-8.0-gd.lib;vtksqlite-8.0-gd.lib;vtksys-8.0-gd.lib;vtktiff-8.0-gd.lib;vtkverdict-8.0-gd.lib;vtkViewsContext2D-8.0-gd.lib;vtkViewsCore-8.0-gd.lib;vtkViewsInfovis-8.0-gd.lib;vtkViewsQt-8.0-gd.lib;vtkzlib-8.0-gd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -77,29 +83,66 @@
<DebugInformationFormat />
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_SILENCE_FPOS_SEEKPOS_DEPRECATION_WARNING;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>false</SDLCheck>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<AdditionalDependencies>setupapi.lib;opencv_world420.lib;FlyCapture2_v140.lib;FlyCapture2GUI_v140.lib;qtmain.lib;shell32.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;pcl_common_release.lib;pcl_features_release.lib;pcl_filters_release.lib;pcl_io_ply_release.lib;pcl_io_release.lib;pcl_kdtree_release.lib;pcl_keypoints_release.lib;pcl_ml_release.lib;pcl_octree_release.lib;pcl_outofcore_release.lib;pcl_people_release.lib;pcl_recognition_release.lib;pcl_registration_release.lib;pcl_sample_consensus_release.lib;pcl_search_release.lib;pcl_segmentation_release.lib;pcl_stereo_release.lib;pcl_surface_release.lib;pcl_tracking_release.lib;pcl_visualization_release.lib;flann.lib;flann_cpp.lib;flann_cpp_s.lib;flann_s.lib;qhull_d.lib;qhullcpp_d.lib;qhullstatic_d.lib;qhullstatic_r_d.lib;qhull_p_d.lib;qhull_r_d.lib;vtkGUISupportQt-8.0.lib;vtkRenderingOpenGL2-8.0.lib;vtkglew-8.0.lib;vtkInteractionImage-8.0.lib;vtkInteractionWidgets-8.0.lib;vtkFiltersHybrid-8.0.lib;vtkFiltersModeling-8.0.lib;vtkImagingGeneral-8.0.lib;vtkImagingHybrid-8.0.lib;vtkRenderingAnnotation-8.0.lib;vtkRenderingFreeType-8.0.lib;vtkfreetype-8.0.lib;vtkRenderingVolume-8.0.lib;vtkIOXML-8.0.lib;vtkIOXMLParser-8.0.lib;vtkexpat-8.0.lib;vtkInteractionStyle-8.0.lib;vtkFiltersExtraction-8.0.lib;vtkFiltersStatistics-8.0.lib;vtkImagingFourier-8.0.lib;vtkalglib-8.0.lib;vtkImagingSources-8.0.lib;vtkIOImage-8.0.lib;vtkDICOMParser-8.0.lib;vtkmetaio-8.0.lib;vtkpng-8.0.lib;vtktiff-8.0.lib;vtkjpeg-8.0.lib;vtkImagingColor-8.0.lib;vtkImagingCore-8.0.lib;vtkRenderingCore-8.0.lib;vtkFiltersSources-8.0.lib;vtkFiltersGeneral-8.0.lib;vtkCommonComputationalGeometry-8.0.lib;vtkCommonColor-8.0.lib;vtkFiltersGeometry-8.0.lib;vtkFiltersCore-8.0.lib;vtkIOCore-8.0.lib;vtkCommonExecutionModel-8.0.lib;vtkCommonDataModel-8.0.lib;vtkCommonTransforms-8.0.lib;vtkCommonMisc-8.0.lib;vtkCommonMath-8.0.lib;vtkCommonSystem-8.0.lib;vtkCommonCore-8.0.lib;vtksys-8.0.lib</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<QtUic Include="UI\DisplayPic.ui" />
<QtUic Include="UI\Help.ui" />
<QtUic Include="UI\Loading.ui" />
<QtUic Include="UI\Reconstruction.ui" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="Classes\CoreAlgorithm.cpp" />
<ClCompile Include="Classes\API.cpp" />
<ClCompile Include="Classes\bsxfun.cpp" />
<ClCompile Include="Classes\CalibrationData.cpp" />
<ClCompile Include="Classes\Calibrator.cpp" />
<ClCompile Include="Classes\Camera.cpp" />
<ClCompile Include="Classes\CameraPointGrey.cpp" />
<ClCompile Include="Classes\CameraArguments.cpp" />
<ClCompile Include="Classes\CoreAlgorithm.cpp" />
<ClCompile Include="Classes\cvtools.cpp" />
<ClCompile Include="Classes\cwt.cpp" />
<ClCompile Include="Classes\cwtfilterbank.cpp" />
<ClCompile Include="Classes\cwtfreqlimits.cpp" />
<ClCompile Include="Classes\cwt_data.cpp" />
<ClCompile Include="Classes\cwt_emxAPI.cpp" />
<ClCompile Include="Classes\cwt_emxutil.cpp" />
<ClCompile Include="Classes\cwt_initialize.cpp" />
<ClCompile Include="Classes\cwt_rtwutil.cpp" />
<ClCompile Include="Classes\cwt_terminate.cpp" />
<ClCompile Include="Classes\Device.cpp" />
<ClCompile Include="Classes\DisplayPic.cpp" />
<ClCompile Include="Classes\fft.cpp" />
<ClCompile Include="Classes\fft1.cpp" />
<ClCompile Include="Classes\fstools.cpp" />
<ClCompile Include="Classes\gammaln.cpp" />
<ClCompile Include="Classes\Help.cpp" />
<ClCompile Include="Classes\hid.Win.c" />
<ClCompile Include="Classes\HisThread.cpp" />
<ClCompile Include="Classes\ifft.cpp" />
<ClCompile Include="Classes\Loading.cpp" />
<ClCompile Include="Classes\log2.cpp" />
<ClCompile Include="Classes\main.cpp" />
<ClCompile Include="Classes\MyThread.cpp" />
<ClCompile Include="Classes\PointCloudData.cpp" />
<ClCompile Include="Classes\ProjectorLC4500.cpp" />
<ClCompile Include="Classes\Reconstruction.cpp" />
<ClCompile Include="Lib\projector\LC4500API\API.cpp" />
<ClCompile Include="Lib\projector\LC4500API\hid.Win.c" />
<ClCompile Include="Lib\projector\LC4500API\usb.cpp" />
<ClCompile Include="Lib\projector\ProjectorLC4500.cpp" />
<ClCompile Include="Classes\rtGetInf.cpp" />
<ClCompile Include="Classes\rtGetNaN.cpp" />
<ClCompile Include="Classes\rt_nonfinite.cpp" />
<ClCompile Include="Classes\structured_light.cpp" />
<ClCompile Include="Classes\TreeModel.cpp" />
<ClCompile Include="Classes\usb.cpp" />
<ClCompile Include="Classes\wavCFandSD.cpp" />
<ClCompile Include="Classes\YourThread.cpp" />
</ItemGroup>
<ItemGroup>
<QtMoc Include="Classes\Reconstruction.h" />
@@ -108,16 +151,61 @@
<QtRcc Include="Resources\Reconstruction.qrc" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="Classes\CoreAlgorithm.h" />
<ClInclude Include="Classes\API.h" />
<ClInclude Include="Classes\bsxfun.h" />
<ClInclude Include="Classes\CalibrationData.h" />
<ClInclude Include="Classes\Calibrator.h" />
<ClInclude Include="Classes\Camera.h" />
<ClInclude Include="Classes\CameraPointGrey.h" />
<ClInclude Include="Classes\CameraArguments.h" />
<ClInclude Include="Classes\HisThread.h" />
<ClInclude Include="Classes\PointCloudData.h" />
<ClInclude Include="Classes\YourThread.h" />
<ClInclude Include="resource1.h" />
<QtMoc Include="Classes\Loading.h" />
<QtMoc Include="Classes\DisplayPic.h" />
<ClInclude Include="Lib\projector\LC4500API\API.h" />
<ClInclude Include="Lib\projector\LC4500API\Common.h" />
<ClInclude Include="Lib\projector\LC4500API\hidapi.h" />
<ClInclude Include="Lib\projector\LC4500API\usb.h" />
<ClInclude Include="Lib\projector\Projector.h" />
<ClInclude Include="Lib\projector\ProjectorLC4500.h" />
<ClInclude Include="Classes\Common.h" />
<ClInclude Include="Classes\CoreAlgorithm.h" />
<ClInclude Include="Classes\cvtools.h" />
<ClInclude Include="Classes\cwt.h" />
<ClInclude Include="Classes\cwtfilterbank.h" />
<ClInclude Include="Classes\cwtfreqlimits.h" />
<ClInclude Include="Classes\cwt_data.h" />
<ClInclude Include="Classes\cwt_emxAPI.h" />
<ClInclude Include="Classes\cwt_emxutil.h" />
<ClInclude Include="Classes\cwt_initialize.h" />
<ClInclude Include="Classes\cwt_rtwutil.h" />
<ClInclude Include="Classes\cwt_terminate.h" />
<ClInclude Include="Classes\cwt_types.h" />
<ClInclude Include="Classes\Device.h" />
<ClInclude Include="Classes\fft.h" />
<ClInclude Include="Classes\fft1.h" />
<ClInclude Include="Classes\fstools.h" />
<ClInclude Include="Classes\gammaln.h" />
<QtMoc Include="Classes\Help.h" />
<ClInclude Include="Classes\hidapi.h" />
<ClInclude Include="Classes\ifft.h" />
<ClInclude Include="Classes\log2.h" />
<ClInclude Include="Classes\MyThread.h" />
<ClInclude Include="Classes\Projector.h" />
<ClInclude Include="Classes\ProjectorLC4500.h" />
<ClInclude Include="Classes\rtGetInf.h" />
<ClInclude Include="Classes\rtGetNaN.h" />
<ClInclude Include="Classes\rtwtypes.h" />
<ClInclude Include="Classes\rt_defines.h" />
<ClInclude Include="Classes\rt_nonfinite.h" />
<ClInclude Include="Classes\structured_light.h" />
<ClInclude Include="Classes\tmwtypes.h" />
<ClInclude Include="Classes\TreeModel.h" />
<ClInclude Include="Classes\usb.h" />
<ClInclude Include="Classes\wavCFandSD.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Reconstruction.rc" />
</ItemGroup>
<ItemGroup>
<Image Include="icon1.ico" />
<Image Include="Resources\image\common\icon.ico" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">

View File

@@ -17,12 +17,6 @@
<Filter Include="lib">
<UniqueIdentifier>{bfb1e724-306d-436f-9c4b-61bcfde16fb2}</UniqueIdentifier>
</Filter>
<Filter Include="lib\projector">
<UniqueIdentifier>{0a72a89e-fc22-42c6-9293-1cf2d411e663}</UniqueIdentifier>
</Filter>
<Filter Include="lib\projector\LC4500API">
<UniqueIdentifier>{b0d62f9b-d43c-4971-9e7c-a0cc53e4140f}</UniqueIdentifier>
</Filter>
<Filter Include="src\scene">
<UniqueIdentifier>{2ae873f3-9729-42ac-8918-28ee9ea3c253}</UniqueIdentifier>
</Filter>
@@ -50,6 +44,29 @@
<Filter Include="resource\font">
<UniqueIdentifier>{ec183521-b5e0-408b-9e24-aa9910874ed3}</UniqueIdentifier>
</Filter>
<Filter Include="src\reconstruction\cwt">
<UniqueIdentifier>{67a013bf-9fd9-4fa2-a2a7-e8d6817bcc7a}</UniqueIdentifier>
</Filter>
<Filter Include="src\reconstruction\tool">
<UniqueIdentifier>{defd3eaf-903c-49c5-a2d6-2edbeb2f02b3}</UniqueIdentifier>
</Filter>
<Filter Include="src\reconstruction\calibrator">
<UniqueIdentifier>{3a7d9bd9-24e9-4558-9564-4ef98bd12ea3}</UniqueIdentifier>
</Filter>
<Filter Include="src\reconstruction\camera">
<UniqueIdentifier>{288ad6dd-dd7c-43f3-abd5-8998c2a01d04}</UniqueIdentifier>
</Filter>
<Filter Include="src\reconstruction\projector">
<UniqueIdentifier>{762af5a3-10df-4dc7-8ce8-ed2501d9eb12}</UniqueIdentifier>
</Filter>
<Filter Include="src\reconstruction\pointcloud">
<UniqueIdentifier>{cdf9f84f-4a3a-4fc8-b596-038eb3990675}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
<ParseFiles>true</ParseFiles>
</Filter>
</ItemGroup>
<ItemGroup>
<QtUic Include="UI\Reconstruction.ui">
@@ -61,6 +78,9 @@
<QtUic Include="UI\Loading.ui">
<Filter>ui</Filter>
</QtUic>
<QtUic Include="UI\Help.ui">
<Filter>ui</Filter>
</QtUic>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Classes\main.cpp">
@@ -69,30 +89,129 @@
<ClCompile Include="Classes\Reconstruction.cpp">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="Lib\projector\LC4500API\API.cpp">
<Filter>lib\projector\LC4500API</Filter>
</ClCompile>
<ClCompile Include="Lib\projector\LC4500API\hid.Win.c">
<Filter>lib\projector\LC4500API</Filter>
</ClCompile>
<ClCompile Include="Lib\projector\LC4500API\usb.cpp">
<Filter>lib\projector\LC4500API</Filter>
</ClCompile>
<ClCompile Include="Lib\projector\ProjectorLC4500.cpp">
<Filter>lib\projector</Filter>
</ClCompile>
<ClCompile Include="Classes\CameraArguments.cpp">
<Filter>src\reconstruction</Filter>
</ClCompile>
<ClCompile Include="Classes\Loading.cpp">
<Filter>src\scene\loadingscene</Filter>
</ClCompile>
<ClCompile Include="Classes\DisplayPic.cpp">
<Filter>src\scene\resultscene</Filter>
</ClCompile>
<ClCompile Include="Classes\cwt_emxAPI.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\cwt_emxutil.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\ifft.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\fft1.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\fft.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\bsxfun.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\gammaln.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\wavCFandSD.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\cwtfreqlimits.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\log2.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\cwtfilterbank.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\cwt.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\cwt_terminate.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\cwt_initialize.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\cwt_data.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\cwt_rtwutil.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\rtGetInf.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\rtGetNaN.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\rt_nonfinite.cpp">
<Filter>src\reconstruction\cwt</Filter>
</ClCompile>
<ClCompile Include="Classes\CalibrationData.cpp">
<Filter>src\reconstruction\calibrator</Filter>
</ClCompile>
<ClCompile Include="Classes\cvtools.cpp">
<Filter>src\reconstruction\tool</Filter>
</ClCompile>
<ClCompile Include="Classes\Camera.cpp">
<Filter>src\reconstruction\camera</Filter>
</ClCompile>
<ClCompile Include="Classes\CameraPointGrey.cpp">
<Filter>src\reconstruction\camera</Filter>
</ClCompile>
<ClCompile Include="Classes\Calibrator.cpp">
<Filter>src\reconstruction\calibrator</Filter>
</ClCompile>
<ClCompile Include="Classes\structured_light.cpp">
<Filter>src\reconstruction\tool</Filter>
</ClCompile>
<ClCompile Include="Classes\ProjectorLC4500.cpp">
<Filter>src\reconstruction\projector</Filter>
</ClCompile>
<ClCompile Include="Classes\API.cpp">
<Filter>src\reconstruction\projector</Filter>
</ClCompile>
<ClCompile Include="Classes\usb.cpp">
<Filter>src\reconstruction\projector</Filter>
</ClCompile>
<ClCompile Include="Classes\CoreAlgorithm.cpp">
<Filter>src\reconstruction</Filter>
</ClCompile>
<ClCompile Include="Classes\Help.cpp">
<Filter>src\scene\resultscene</Filter>
</ClCompile>
<ClCompile Include="Classes\Device.cpp">
<Filter>src\reconstruction\tool</Filter>
</ClCompile>
<ClCompile Include="Classes\TreeModel.cpp">
<Filter>src\reconstruction\tool</Filter>
</ClCompile>
<ClCompile Include="Classes\fstools.cpp">
<Filter>src\reconstruction\tool</Filter>
</ClCompile>
<ClCompile Include="Classes\hid.Win.c">
<Filter>src\reconstruction\projector</Filter>
</ClCompile>
<ClCompile Include="Classes\YourThread.cpp">
<Filter>src\scene\mainscene</Filter>
</ClCompile>
<ClCompile Include="Classes\CameraArguments.cpp">
<Filter>src\reconstruction\calibrator</Filter>
</ClCompile>
<ClCompile Include="Classes\PointCloudData.cpp">
<Filter>src\reconstruction\pointcloud</Filter>
</ClCompile>
<ClCompile Include="Classes\MyThread.cpp">
<Filter>src\scene\resultscene</Filter>
</ClCompile>
<ClCompile Include="Classes\HisThread.cpp">
<Filter>src\scene\resultscene</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<QtMoc Include="Classes\Reconstruction.h">
@@ -104,6 +223,9 @@
<QtMoc Include="Classes\DisplayPic.h">
<Filter>src\scene\resultscene</Filter>
</QtMoc>
<QtMoc Include="Classes\Help.h">
<Filter>src\scene\resultscene</Filter>
</QtMoc>
</ItemGroup>
<ItemGroup>
<QtRcc Include="Resources\Reconstruction.qrc">
@@ -111,29 +233,147 @@
</QtRcc>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Lib\projector\LC4500API\API.h">
<Filter>lib\projector\LC4500API</Filter>
<ClInclude Include="Classes\cwt_emxAPI.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Lib\projector\LC4500API\Common.h">
<Filter>lib\projector\LC4500API</Filter>
<ClInclude Include="Classes\cwt_emxutil.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Lib\projector\LC4500API\hidapi.h">
<Filter>lib\projector\LC4500API</Filter>
<ClInclude Include="Classes\ifft.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Lib\projector\LC4500API\usb.h">
<Filter>lib\projector\LC4500API</Filter>
<ClInclude Include="Classes\fft1.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Lib\projector\Projector.h">
<Filter>lib\projector</Filter>
<ClInclude Include="Classes\fft.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Lib\projector\ProjectorLC4500.h">
<Filter>lib\projector</Filter>
<ClInclude Include="Classes\bsxfun.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\CameraArguments.h">
<Filter>src\reconstruction</Filter>
<ClInclude Include="Classes\gammaln.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\wavCFandSD.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\cwtfreqlimits.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\log2.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\cwtfilterbank.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\cwt.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\cwt_terminate.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\cwt_initialize.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\cwt_data.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\cwt_types.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\cwt_rtwutil.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\rt_defines.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\rtGetInf.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\rtGetNaN.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\rt_nonfinite.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\rtwtypes.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\tmwtypes.h">
<Filter>src\reconstruction\cwt</Filter>
</ClInclude>
<ClInclude Include="Classes\MyThread.h">
<Filter>src\scene\resultscene</Filter>
</ClInclude>
<ClInclude Include="Classes\CalibrationData.h">
<Filter>src\reconstruction\calibrator</Filter>
</ClInclude>
<ClInclude Include="Classes\cvtools.h">
<Filter>src\reconstruction\tool</Filter>
</ClInclude>
<ClInclude Include="Classes\Camera.h">
<Filter>src\reconstruction\camera</Filter>
</ClInclude>
<ClInclude Include="Classes\CameraPointGrey.h">
<Filter>src\reconstruction\camera</Filter>
</ClInclude>
<ClInclude Include="Classes\Calibrator.h">
<Filter>src\reconstruction\calibrator</Filter>
</ClInclude>
<ClInclude Include="Classes\structured_light.h">
<Filter>src\reconstruction\tool</Filter>
</ClInclude>
<ClInclude Include="Classes\Projector.h">
<Filter>src\reconstruction\projector</Filter>
</ClInclude>
<ClInclude Include="Classes\ProjectorLC4500.h">
<Filter>src\reconstruction\projector</Filter>
</ClInclude>
<ClInclude Include="Classes\API.h">
<Filter>src\reconstruction\projector</Filter>
</ClInclude>
<ClInclude Include="Classes\Common.h">
<Filter>src\reconstruction\projector</Filter>
</ClInclude>
<ClInclude Include="Classes\hidapi.h">
<Filter>src\reconstruction\projector</Filter>
</ClInclude>
<ClInclude Include="Classes\usb.h">
<Filter>src\reconstruction\projector</Filter>
</ClInclude>
<ClInclude Include="Classes\CoreAlgorithm.h">
<Filter>src\reconstruction</Filter>
</ClInclude>
<ClInclude Include="Classes\Device.h">
<Filter>src\reconstruction\tool</Filter>
</ClInclude>
<ClInclude Include="Classes\TreeModel.h">
<Filter>src\reconstruction\tool</Filter>
</ClInclude>
<ClInclude Include="Classes\fstools.h">
<Filter>src\reconstruction\tool</Filter>
</ClInclude>
<ClInclude Include="Classes\YourThread.h">
<Filter>src\scene\mainscene</Filter>
</ClInclude>
<ClInclude Include="Classes\CameraArguments.h">
<Filter>src\reconstruction\calibrator</Filter>
</ClInclude>
<ClInclude Include="Classes\PointCloudData.h">
<Filter>src\reconstruction\pointcloud</Filter>
</ClInclude>
<ClInclude Include="Classes\HisThread.h">
<Filter>src\scene\resultscene</Filter>
</ClInclude>
<ClInclude Include="resource1.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Reconstruction.rc" />
</ItemGroup>
<ItemGroup>
<Image Include="icon1.ico" />
<Image Include="Resources\image\common\icon.ico" />
</ItemGroup>
</Project>

View File

@@ -21,6 +21,9 @@
<file>image/loading/label.png</file>
<file>image/loading/press.png</file>
<file>image/reconstruction/loading.png</file>
<file>image/reconstruction/surface.png</file>
<file>image/reconstruction/help2.png</file>
<file>image/common/icon.png</file>
</qresource>
<qresource prefix="/qss">
<file>qss/flat.qss</file>

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 818 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -69,7 +69,7 @@
<string notr="true"/>
</property>
<property name="currentIndex">
<number>0</number>
<number>1</number>
</property>
<widget class="QWidget" name="page">
<widget class="QLabel" name="label_2">
@@ -758,7 +758,7 @@
<x>700</x>
<y>50</y>
<width>281</width>
<height>311</height>
<height>291</height>
</rect>
</property>
<property name="font">
@@ -779,7 +779,7 @@
<x>10</x>
<y>20</y>
<width>261</width>
<height>281</height>
<height>261</height>
</rect>
</property>
<property name="font">
@@ -793,9 +793,9 @@
<property name="geometry">
<rect>
<x>710</x>
<y>380</y>
<y>350</y>
<width>261</width>
<height>251</height>
<height>281</height>
</rect>
</property>
<property name="font">
@@ -814,7 +814,7 @@
<property name="geometry">
<rect>
<x>70</x>
<y>20</y>
<y>80</y>
<width>120</width>
<height>51</height>
</rect>
@@ -838,7 +838,7 @@
<property name="geometry">
<rect>
<x>70</x>
<y>100</y>
<y>150</y>
<width>120</width>
<height>51</height>
</rect>
@@ -862,7 +862,7 @@
<property name="geometry">
<rect>
<x>70</x>
<y>180</y>
<y>220</y>
<width>120</width>
<height>51</height>
</rect>
@@ -882,6 +882,30 @@
<string>开始重建</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_19">
<property name="geometry">
<rect>
<x>70</x>
<y>10</y>
<width>120</width>
<height>51</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>120</width>
<height>0</height>
</size>
</property>
<property name="font">
<font>
<family>黑体</family>
</font>
</property>
<property name="text">
<string>投影图案</string>
</property>
</widget>
</widget>
<zorder>groupBox_8</zorder>
<zorder>label_3</zorder>
@@ -895,10 +919,10 @@
<widget class="QGroupBox" name="groupBox_4">
<property name="geometry">
<rect>
<x>800</x>
<x>785</x>
<y>70</y>
<width>181</width>
<height>191</height>
<width>201</width>
<height>171</height>
</rect>
</property>
<property name="font">
@@ -915,36 +939,10 @@
<property name="flat">
<bool>false</bool>
</property>
<widget class="QSlider" name="horizontalSlider">
<property name="geometry">
<rect>
<x>90</x>
<y>90</y>
<width>81</width>
<height>22</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QLabel" name="label_13">
<property name="geometry">
<rect>
<x>10</x>
<y>90</y>
<width>61</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>点的大小</string>
</property>
</widget>
<widget class="QLabel" name="label_12">
<property name="geometry">
<rect>
<x>10</x>
<x>20</x>
<y>50</y>
<width>61</width>
<height>16</height>
@@ -958,9 +956,9 @@
<property name="geometry">
<rect>
<x>70</x>
<y>130</y>
<y>100</y>
<width>51</width>
<height>21</height>
<height>31</height>
</rect>
</property>
<property name="text">
@@ -970,10 +968,10 @@
<widget class="QPushButton" name="pushButton_12">
<property name="geometry">
<rect>
<x>130</x>
<y>130</y>
<x>140</x>
<y>100</y>
<width>51</width>
<height>21</height>
<height>31</height>
</rect>
</property>
<property name="text">
@@ -984,7 +982,7 @@
<property name="geometry">
<rect>
<x>10</x>
<y>130</y>
<y>110</y>
<width>51</width>
<height>16</height>
</rect>
@@ -996,7 +994,7 @@
<widget class="QPushButton" name="pushButton_16">
<property name="geometry">
<rect>
<x>90</x>
<x>100</x>
<y>40</y>
<width>51</width>
<height>31</height>
@@ -1010,8 +1008,8 @@
<widget class="QPushButton" name="pushButton_13">
<property name="geometry">
<rect>
<x>820</x>
<y>310</y>
<x>815</x>
<y>290</y>
<width>141</width>
<height>41</height>
</rect>
@@ -1028,8 +1026,8 @@
<widget class="QPushButton" name="pushButton_14">
<property name="geometry">
<rect>
<x>820</x>
<y>390</y>
<x>815</x>
<y>380</y>
<width>141</width>
<height>41</height>
</rect>
@@ -1046,7 +1044,7 @@
<widget class="QPushButton" name="pushButton_15">
<property name="geometry">
<rect>
<x>820</x>
<x>815</x>
<y>470</y>
<width>141</width>
<height>41</height>
@@ -1058,7 +1056,7 @@
</font>
</property>
<property name="text">
<string>保存截图</string>
<string>曲面重建</string>
</property>
</widget>
<widget class="QVTKWidget" name="qvtkWidget">
@@ -1096,8 +1094,8 @@
<widget class="QPushButton" name="pushButton_18">
<property name="geometry">
<rect>
<x>820</x>
<y>550</y>
<x>815</x>
<y>560</y>
<width>141</width>
<height>41</height>
</rect>
@@ -1108,7 +1106,7 @@
</font>
</property>
<property name="text">
<string>帮助</string>
<string>使用帮助</string>
</property>
</widget>
</widget>

BIN
icon1.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,2 @@
Reading Qt configuration (D:\Qt\5.12.3\msvc2017_64\bin\qmake.exe)
CoreAlgorithm.cpp
正在创建库 D:\BJTU\Reconstruction\x64\Debug\Reconstruction.lib 和对象 D:\BJTU\Reconstruction\x64\Debug\Reconstruction.exp
Reconstruction.vcxproj -> D:\BJTU\Reconstruction\x64\Debug\Reconstruction.exe

Binary file not shown.

Binary file not shown.

View File

@@ -1,2 +1,2 @@
#TargetFrameworkVersion=v4.0:PlatformToolSet=v142:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0
PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.25.28610:TargetPlatformVersion=10.0.18362.0:
Debug|x64|D:\BJTU\Reconstruction\|

Binary file not shown.

Binary file not shown.

View File

@@ -21,8 +21,8 @@ QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_Reconstruction_t {
QByteArrayData data[20];
char stringdata0[425];
QByteArrayData data[24];
char stringdata0[509];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
@@ -49,8 +49,12 @@ QT_MOC_LITERAL(14, 305, 24), // "on_pushButton_13_clicked"
QT_MOC_LITERAL(15, 330, 24), // "on_pushButton_14_clicked"
QT_MOC_LITERAL(16, 355, 24), // "on_pushButton_15_clicked"
QT_MOC_LITERAL(17, 380, 24), // "on_pushButton_16_clicked"
QT_MOC_LITERAL(18, 405, 12), // "setPicAction"
QT_MOC_LITERAL(19, 418, 6) // "action"
QT_MOC_LITERAL(18, 405, 24), // "on_pushButton_17_clicked"
QT_MOC_LITERAL(19, 430, 24), // "on_pushButton_18_clicked"
QT_MOC_LITERAL(20, 455, 24), // "on_pushButton_19_clicked"
QT_MOC_LITERAL(21, 480, 12), // "setPicAction"
QT_MOC_LITERAL(22, 493, 6), // "action"
QT_MOC_LITERAL(23, 500, 8) // "setCloud"
},
"Reconstruction\0on_pushButton_clicked\0"
@@ -65,8 +69,11 @@ QT_MOC_LITERAL(19, 418, 6) // "action"
"on_pushButton_13_clicked\0"
"on_pushButton_14_clicked\0"
"on_pushButton_15_clicked\0"
"on_pushButton_16_clicked\0setPicAction\0"
"action"
"on_pushButton_16_clicked\0"
"on_pushButton_17_clicked\0"
"on_pushButton_18_clicked\0"
"on_pushButton_19_clicked\0setPicAction\0"
"action\0setCloud"
};
#undef QT_MOC_LITERAL
@@ -76,7 +83,7 @@ static const uint qt_meta_data_Reconstruction[] = {
8, // revision
0, // classname
0, 0, // classinfo
17, 14, // methods
21, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
@@ -84,23 +91,27 @@ static const uint qt_meta_data_Reconstruction[] = {
0, // signalCount
// slots: name, argc, parameters, tag, flags
1, 0, 99, 2, 0x08 /* Private */,
3, 0, 100, 2, 0x08 /* Private */,
4, 0, 101, 2, 0x08 /* Private */,
5, 0, 102, 2, 0x08 /* Private */,
6, 0, 103, 2, 0x08 /* Private */,
7, 0, 104, 2, 0x08 /* Private */,
8, 0, 105, 2, 0x08 /* Private */,
9, 0, 106, 2, 0x08 /* Private */,
10, 0, 107, 2, 0x08 /* Private */,
11, 0, 108, 2, 0x08 /* Private */,
12, 0, 109, 2, 0x08 /* Private */,
13, 0, 110, 2, 0x08 /* Private */,
14, 0, 111, 2, 0x08 /* Private */,
15, 0, 112, 2, 0x08 /* Private */,
16, 0, 113, 2, 0x08 /* Private */,
17, 0, 114, 2, 0x08 /* Private */,
18, 1, 115, 2, 0x08 /* Private */,
1, 0, 119, 2, 0x08 /* Private */,
3, 0, 120, 2, 0x08 /* Private */,
4, 0, 121, 2, 0x08 /* Private */,
5, 0, 122, 2, 0x08 /* Private */,
6, 0, 123, 2, 0x08 /* Private */,
7, 0, 124, 2, 0x08 /* Private */,
8, 0, 125, 2, 0x08 /* Private */,
9, 0, 126, 2, 0x08 /* Private */,
10, 0, 127, 2, 0x08 /* Private */,
11, 0, 128, 2, 0x08 /* Private */,
12, 0, 129, 2, 0x08 /* Private */,
13, 0, 130, 2, 0x08 /* Private */,
14, 0, 131, 2, 0x08 /* Private */,
15, 0, 132, 2, 0x08 /* Private */,
16, 0, 133, 2, 0x08 /* Private */,
17, 0, 134, 2, 0x08 /* Private */,
18, 0, 135, 2, 0x08 /* Private */,
19, 0, 136, 2, 0x08 /* Private */,
20, 0, 137, 2, 0x08 /* Private */,
21, 1, 138, 2, 0x08 /* Private */,
23, 0, 141, 2, 0x08 /* Private */,
// slots: parameters
QMetaType::Void,
@@ -119,7 +130,11 @@ static const uint qt_meta_data_Reconstruction[] = {
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void, QMetaType::QString, 19,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void, QMetaType::QString, 22,
QMetaType::Void,
0 // eod
};
@@ -146,7 +161,11 @@ void Reconstruction::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _
case 13: _t->on_pushButton_14_clicked(); break;
case 14: _t->on_pushButton_15_clicked(); break;
case 15: _t->on_pushButton_16_clicked(); break;
case 16: _t->setPicAction((*reinterpret_cast< QString(*)>(_a[1]))); break;
case 16: _t->on_pushButton_17_clicked(); break;
case 17: _t->on_pushButton_18_clicked(); break;
case 18: _t->on_pushButton_19_clicked(); break;
case 19: _t->setPicAction((*reinterpret_cast< QString(*)>(_a[1]))); break;
case 20: _t->setCloud(); break;
default: ;
}
}
@@ -181,13 +200,13 @@ int Reconstruction::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 17)
if (_id < 21)
qt_static_metacall(this, _c, _id, _a);
_id -= 17;
_id -= 21;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 17)
if (_id < 21)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 17;
_id -= 21;
}
return _id;
}

View File

@@ -1,94 +0,0 @@
/****************************************************************************
** Meta object code from reading C++ file 'Reconstruction.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.3)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include "../../../Reconstruction.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'Reconstruction.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.12.3. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_Reconstruction_t {
QByteArrayData data[1];
char stringdata0[15];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_Reconstruction_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_Reconstruction_t qt_meta_stringdata_Reconstruction = {
{
QT_MOC_LITERAL(0, 0, 14) // "Reconstruction"
},
"Reconstruction"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_Reconstruction[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
0, 0, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
0 // eod
};
void Reconstruction::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
Q_UNUSED(_o);
Q_UNUSED(_id);
Q_UNUSED(_c);
Q_UNUSED(_a);
}
QT_INIT_METAOBJECT const QMetaObject Reconstruction::staticMetaObject = { {
&QMainWindow::staticMetaObject,
qt_meta_stringdata_Reconstruction.data,
qt_meta_data_Reconstruction,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *Reconstruction::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *Reconstruction::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_Reconstruction.stringdata0))
return static_cast<void*>(this);
return QMainWindow::qt_metacast(_clname);
}
int Reconstruction::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QMainWindow::qt_metacall(_c, _id, _a);
return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE

Binary file not shown.

View File

@@ -4,6 +4,31 @@
<Qt_INCLUDEPATH_>D:\Qt\5.12.3\msvc2017_64\include;D:\Qt\5.12.3\msvc2017_64\include\QtWidgets;D:\Qt\5.12.3\msvc2017_64\include\QtGui;D:\Qt\5.12.3\msvc2017_64\include\QtANGLE;D:\Qt\5.12.3\msvc2017_64\include\QtCore;C:\VulkanSDK\1.0.51.0\include;D:\Qt\5.12.3\msvc2017_64\mkspecs\win32-msvc</Qt_INCLUDEPATH_>
<Qt_LIBS_>D:\Qt\5.12.3\msvc2017_64\lib\Qt5Widgetsd.lib;D:\Qt\5.12.3\msvc2017_64\lib\Qt5Guid.lib;D:\Qt\5.12.3\msvc2017_64\lib\Qt5Cored.lib;D:\Qt\5.12.3\msvc2017_64\lib\qtmaind.lib;shell32.lib</Qt_LIBS_>
<Qt_LIBPATH_>D:\Qt\5.12.3\msvc2017_64\lib;C:\openssl\lib;C:\Utils\my_sql\mysql-5.6.11-winx64\lib;C:\Utils\postgresql\pgsql\lib</Qt_LIBPATH_>
<QMake_QT_SYSROOT_></QMake_QT_SYSROOT_>
<QMake_QT_INSTALL_PREFIX_>D:/Qt/5.12.3/msvc2017_64</QMake_QT_INSTALL_PREFIX_>
<QMake_QT_INSTALL_ARCHDATA_>D:/Qt/5.12.3/msvc2017_64</QMake_QT_INSTALL_ARCHDATA_>
<QMake_QT_INSTALL_DATA_>D:/Qt/5.12.3/msvc2017_64</QMake_QT_INSTALL_DATA_>
<QMake_QT_INSTALL_DOCS_>D:/Qt/Docs/Qt-5.12.3</QMake_QT_INSTALL_DOCS_>
<QMake_QT_INSTALL_HEADERS_>D:/Qt/5.12.3/msvc2017_64/include</QMake_QT_INSTALL_HEADERS_>
<QMake_QT_INSTALL_LIBS_>D:/Qt/5.12.3/msvc2017_64/lib</QMake_QT_INSTALL_LIBS_>
<QMake_QT_INSTALL_LIBEXECS_>D:/Qt/5.12.3/msvc2017_64/bin</QMake_QT_INSTALL_LIBEXECS_>
<QMake_QT_INSTALL_BINS_>D:/Qt/5.12.3/msvc2017_64/bin</QMake_QT_INSTALL_BINS_>
<QMake_QT_INSTALL_TESTS_>D:/Qt/5.12.3/msvc2017_64/tests</QMake_QT_INSTALL_TESTS_>
<QMake_QT_INSTALL_PLUGINS_>D:/Qt/5.12.3/msvc2017_64/plugins</QMake_QT_INSTALL_PLUGINS_>
<QMake_QT_INSTALL_IMPORTS_>D:/Qt/5.12.3/msvc2017_64/imports</QMake_QT_INSTALL_IMPORTS_>
<QMake_QT_INSTALL_QML_>D:/Qt/5.12.3/msvc2017_64/qml</QMake_QT_INSTALL_QML_>
<QMake_QT_INSTALL_TRANSLATIONS_>D:/Qt/5.12.3/msvc2017_64/translations</QMake_QT_INSTALL_TRANSLATIONS_>
<QMake_QT_INSTALL_CONFIGURATION_></QMake_QT_INSTALL_CONFIGURATION_>
<QMake_QT_INSTALL_EXAMPLES_>D:/Qt/Examples/Qt-5.12.3</QMake_QT_INSTALL_EXAMPLES_>
<QMake_QT_INSTALL_DEMOS_>D:/Qt/Examples/Qt-5.12.3</QMake_QT_INSTALL_DEMOS_>
<QMake_QT_HOST_PREFIX_>D:/Qt/5.12.3/msvc2017_64</QMake_QT_HOST_PREFIX_>
<QMake_QT_HOST_DATA_>D:/Qt/5.12.3/msvc2017_64</QMake_QT_HOST_DATA_>
<QMake_QT_HOST_BINS_>D:/Qt/5.12.3/msvc2017_64/bin</QMake_QT_HOST_BINS_>
<QMake_QT_HOST_LIBS_>D:/Qt/5.12.3/msvc2017_64/lib</QMake_QT_HOST_LIBS_>
<QMake_QMAKE_SPEC_>win32-msvc</QMake_QMAKE_SPEC_>
<QMake_QMAKE_XSPEC_>win32-msvc</QMake_QMAKE_XSPEC_>
<QMake_QMAKE_VERSION_>3.1</QMake_QMAKE_VERSION_>
<QMake_QT_VERSION_>5.12.3</QMake_QT_VERSION_>
<Qt_INCLUDEPATH_
>$(Qt_INCLUDEPATH_);x64\Debug\moc\Classes;x64\Debug\uic\UI</Qt_INCLUDEPATH_>
<QtBkup_QtInstall
@@ -19,10 +44,14 @@
<QtBkup_QtLibrarySearchPath
></QtBkup_QtLibrarySearchPath>
<QtBkup_QtVars
>DEFINES=/-D(\w+)/$1/;INCLUDEPATH=INCPATH/-I(\x22[^\x22]+\x22|[^\s]+)/$1/;LIBS=/(?:\/LIBPATH:(?:\x22[^\x22]+\x22|[^\s]+))|(\x22[^\x22]+\x22|[^\s]+)/$1/;LIBPATH=LIBS/\/LIBPATH:(\x22[^\x22]+\x22|[^\s]+)/$1/</QtBkup_QtVars>
>DEFINES=/-D([^\s=]+(=(\x22(\\\\|\\\x22|[^\x22])*\x22|\S+))?)/$1/;INCLUDEPATH=INCPATH/-I(\x22[^\x22]+\x22|[^\s]+)/$1/;LIBS=/(?:\/LIBPATH:(?:\x22[^\x22]+\x22|[^\s]+))|(\x22[^\x22]+\x22|[^\s]+)/$1/;LIBPATH=LIBS/\/LIBPATH:(\x22[^\x22]+\x22|[^\s]+)/$1/</QtBkup_QtVars>
<QtBkup_QMakeCodeLines
></QtBkup_QMakeCodeLines>
<QtBkup_QtBuildConfig
>debug</QtBkup_QtBuildConfig>
<QtVersion>5.12.3</QtVersion>
<QtVersionMajor>5</QtVersionMajor>
<QtVersionMinor>12</QtVersionMinor>
<QtVersionPatch>3</QtVersionPatch>
</PropertyGroup>
</Project>

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,46 +0,0 @@
/****************************************************************************
** Resource object code
**
** Created by: The Resource Compiler for Qt version 5.12.3
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#ifdef QT_NAMESPACE
# define QT_RCC_PREPEND_NAMESPACE(name) ::QT_NAMESPACE::name
# define QT_RCC_MANGLE_NAMESPACE0(x) x
# define QT_RCC_MANGLE_NAMESPACE1(a, b) a##_##b
# define QT_RCC_MANGLE_NAMESPACE2(a, b) QT_RCC_MANGLE_NAMESPACE1(a,b)
# define QT_RCC_MANGLE_NAMESPACE(name) QT_RCC_MANGLE_NAMESPACE2( \
QT_RCC_MANGLE_NAMESPACE0(name), QT_RCC_MANGLE_NAMESPACE0(QT_NAMESPACE))
#else
# define QT_RCC_PREPEND_NAMESPACE(name) name
# define QT_RCC_MANGLE_NAMESPACE(name) name
#endif
#ifdef QT_NAMESPACE
namespace QT_NAMESPACE {
#endif
#ifdef QT_NAMESPACE
}
#endif
int QT_RCC_MANGLE_NAMESPACE(qInitResources_Reconstruction)();
int QT_RCC_MANGLE_NAMESPACE(qInitResources_Reconstruction)()
{
return 1;
}
int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_Reconstruction)();
int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_Reconstruction)()
{
return 1;
}
namespace {
struct initializer {
initializer() { QT_RCC_MANGLE_NAMESPACE(qInitResources_Reconstruction)(); }
~initializer() { QT_RCC_MANGLE_NAMESPACE(qCleanupResources_Reconstruction)(); }
} dummy;
}

View File

@@ -10,120 +10,141 @@
#define UI_RECONSTRUCTION_H
#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QFrame>
#include <QtWidgets/QGraphicsView>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QGroupBox>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenu>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QSlider>
#include <QtWidgets/QSpinBox>
#include <QtWidgets/QStackedWidget>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QTextBrowser>
#include <QtWidgets/QToolBar>
#include <QtWidgets/QTreeView>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>
#include "QVTKWidget.h"
QT_BEGIN_NAMESPACE
class Ui_ReconstructionClass
{
public:
QAction *actioncamera;
QAction *actionstyle;
QWidget *centralWidget;
QFrame *line;
QStackedWidget *stackedWidget;
QWidget *page;
QLabel *label_2;
QGroupBox *groupBox;
QWidget *gridLayoutWidget_2;
QGridLayout *gridLayout_2;
QTextBrowser *textBrowser;
QLabel *label_7;
QLabel *label_6;
QLabel *label_5;
QTextBrowser *textBrowser_3;
QLabel *label_7;
QTextBrowser *textBrowser;
QLabel *label_10;
QTextBrowser *textBrowser_2;
QLabel *label_8;
QLabel *label_9;
QTextBrowser *textBrowser_6;
QTextBrowser *textBrowser_5;
QTextBrowser *textBrowser_3;
QTextBrowser *textBrowser_2;
QTextBrowser *textBrowser_4;
QGroupBox *groupBox_2;
QWidget *gridLayoutWidget_6;
QGridLayout *gridLayout_6;
QLabel *label_22;
QLabel *label_15;
QSpinBox *spinBox;
QSpinBox *spinBox_2;
QLabel *label_15;
QLabel *label_22;
QSpinBox *spinBox_3;
QLabel *label_16;
QGroupBox *groupBox_5;
QLabel *label_11;
QGraphicsView *graphicsView_3;
QPushButton *pushButton_5;
QPushButton *pushButton_6;
QPushButton *pushButton_7;
QPushButton *pushButton_8;
QGroupBox *groupBox_3;
QTextBrowser *textBrowser_7;
QTreeView *treeView;
QWidget *page_2;
QLabel *label_3;
QGroupBox *groupBox_6;
QLabel *label_21;
QPushButton *pushButton_9;
QPushButton *pushButton_10;
QGraphicsView *graphicsView_2;
QPushButton *pushButton_4;
QLineEdit *lineEdit;
QLabel *label_18;
QGroupBox *groupBox_7;
QTextBrowser *textBrowser_8;
QGroupBox *groupBox_8;
QPushButton *pushButton_9;
QPushButton *pushButton_10;
QPushButton *pushButton_17;
QPushButton *pushButton_19;
QWidget *page_3;
QGroupBox *groupBox_4;
QSlider *horizontalSlider;
QLabel *label_13;
QLabel *label_12;
QPushButton *pushButton_11;
QPushButton *pushButton_12;
QLabel *label_14;
QPushButton *pushButton_16;
QGraphicsView *graphicsView;
QPushButton *pushButton_13;
QPushButton *pushButton_14;
QPushButton *pushButton_15;
QVTKWidget *qvtkWidget;
QLabel *label_9;
QPushButton *pushButton_18;
QWidget *widget;
QLabel *label;
QLabel *label_4;
QWidget *layoutWidget;
QVBoxLayout *verticalLayout;
QPushButton *pushButton;
QPushButton *pushButton_2;
QPushButton *pushButton_3;
QLabel *label_4;
QLabel *label;
QMenuBar *menuBar;
QToolBar *mainToolBar;
QMenu *menusettings;
QMenu *menuabout;
QStatusBar *statusBar;
void setupUi(QMainWindow *ReconstructionClass)
{
if (ReconstructionClass->objectName().isEmpty())
ReconstructionClass->setObjectName(QString::fromUtf8("ReconstructionClass"));
ReconstructionClass->resize(1111, 601);
ReconstructionClass->resize(1240, 680);
ReconstructionClass->setMinimumSize(QSize(1240, 680));
ReconstructionClass->setMaximumSize(QSize(1240, 680));
actioncamera = new QAction(ReconstructionClass);
actioncamera->setObjectName(QString::fromUtf8("actioncamera"));
actionstyle = new QAction(ReconstructionClass);
actionstyle->setObjectName(QString::fromUtf8("actionstyle"));
centralWidget = new QWidget(ReconstructionClass);
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
line = new QFrame(centralWidget);
line->setObjectName(QString::fromUtf8("line"));
line->setGeometry(QRect(230, 0, 20, 571));
line->setFrameShape(QFrame::VLine);
line->setFrameShadow(QFrame::Sunken);
centralWidget->setEnabled(true);
QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(centralWidget->sizePolicy().hasHeightForWidth());
centralWidget->setSizePolicy(sizePolicy);
centralWidget->setMinimumSize(QSize(1240, 680));
centralWidget->setMaximumSize(QSize(1240, 680));
centralWidget->setAutoFillBackground(false);
centralWidget->setStyleSheet(QString::fromUtf8(""));
stackedWidget = new QStackedWidget(centralWidget);
stackedWidget->setObjectName(QString::fromUtf8("stackedWidget"));
stackedWidget->setGeometry(QRect(249, -1, 851, 531));
stackedWidget->setGeometry(QRect(239, -4, 1001, 651));
stackedWidget->setAutoFillBackground(true);
stackedWidget->setStyleSheet(QString::fromUtf8(""));
page = new QWidget();
page->setObjectName(QString::fromUtf8("page"));
label_2 = new QLabel(page);
label_2->setObjectName(QString::fromUtf8("label_2"));
label_2->setGeometry(QRect(220, 20, 81, 16));
label_2->setGeometry(QRect(310, 20, 81, 16));
QFont font;
font.setFamily(QString::fromUtf8("Adobe Devanagari"));
font.setPointSize(11);
@@ -132,15 +153,16 @@ public:
label_2->setFont(font);
groupBox = new QGroupBox(page);
groupBox->setObjectName(QString::fromUtf8("groupBox"));
groupBox->setGeometry(QRect(520, 260, 321, 271));
groupBox->setGeometry(QRect(690, 430, 291, 201));
QFont font1;
font1.setFamily(QString::fromUtf8("\351\273\221\344\275\223"));
font1.setPointSize(10);
groupBox->setFont(font1);
groupBox->setAlignment(Qt::AlignCenter);
groupBox->setFlat(false);
gridLayoutWidget_2 = new QWidget(groupBox);
gridLayoutWidget_2->setObjectName(QString::fromUtf8("gridLayoutWidget_2"));
gridLayoutWidget_2->setGeometry(QRect(0, 20, 321, 251));
gridLayoutWidget_2->setGeometry(QRect(10, 20, 281, 181));
gridLayout_2 = new QGridLayout(gridLayoutWidget_2);
gridLayout_2->setSpacing(6);
gridLayout_2->setContentsMargins(11, 11, 11, 11);
@@ -148,11 +170,27 @@ public:
gridLayout_2->setSizeConstraint(QLayout::SetMinAndMaxSize);
gridLayout_2->setHorizontalSpacing(7);
gridLayout_2->setContentsMargins(10, 10, 10, 10);
label_6 = new QLabel(gridLayoutWidget_2);
label_6->setObjectName(QString::fromUtf8("label_6"));
textBrowser = new QTextBrowser(gridLayoutWidget_2);
textBrowser->setObjectName(QString::fromUtf8("textBrowser"));
textBrowser->setMaximumSize(QSize(250, 31));
QFont font2;
font2.setFamily(QString::fromUtf8("Adobe Devanagari"));
font2.setPointSize(10);
textBrowser->setFont(font2);
textBrowser->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
textBrowser->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
gridLayout_2->addWidget(textBrowser, 0, 1, 1, 1);
label_7 = new QLabel(gridLayoutWidget_2);
label_7->setObjectName(QString::fromUtf8("label_7"));
label_7->setFont(font2);
label_7->setAlignment(Qt::AlignCenter);
gridLayout_2->addWidget(label_7, 2, 0, 1, 1);
label_6 = new QLabel(gridLayoutWidget_2);
label_6->setObjectName(QString::fromUtf8("label_6"));
label_6->setFont(font2);
label_6->setAlignment(Qt::AlignCenter);
@@ -165,41 +203,6 @@ public:
gridLayout_2->addWidget(label_5, 0, 0, 1, 1);
textBrowser_3 = new QTextBrowser(gridLayoutWidget_2);
textBrowser_3->setObjectName(QString::fromUtf8("textBrowser_3"));
textBrowser_3->setMaximumSize(QSize(250, 31));
textBrowser_3->setFont(font2);
gridLayout_2->addWidget(textBrowser_3, 2, 1, 1, 1);
label_7 = new QLabel(gridLayoutWidget_2);
label_7->setObjectName(QString::fromUtf8("label_7"));
label_7->setFont(font2);
label_7->setAlignment(Qt::AlignCenter);
gridLayout_2->addWidget(label_7, 2, 0, 1, 1);
textBrowser = new QTextBrowser(gridLayoutWidget_2);
textBrowser->setObjectName(QString::fromUtf8("textBrowser"));
textBrowser->setMaximumSize(QSize(250, 31));
textBrowser->setFont(font2);
gridLayout_2->addWidget(textBrowser, 0, 1, 1, 1);
label_10 = new QLabel(gridLayoutWidget_2);
label_10->setObjectName(QString::fromUtf8("label_10"));
label_10->setFont(font2);
label_10->setAlignment(Qt::AlignCenter);
gridLayout_2->addWidget(label_10, 5, 0, 1, 1);
textBrowser_2 = new QTextBrowser(gridLayoutWidget_2);
textBrowser_2->setObjectName(QString::fromUtf8("textBrowser_2"));
textBrowser_2->setMaximumSize(QSize(250, 31));
textBrowser_2->setFont(font2);
gridLayout_2->addWidget(textBrowser_2, 1, 1, 1, 1);
label_8 = new QLabel(gridLayoutWidget_2);
label_8->setObjectName(QString::fromUtf8("label_8"));
label_8->setFont(font2);
@@ -207,42 +210,41 @@ public:
gridLayout_2->addWidget(label_8, 3, 0, 1, 1);
label_9 = new QLabel(gridLayoutWidget_2);
label_9->setObjectName(QString::fromUtf8("label_9"));
label_9->setFont(font2);
label_9->setAlignment(Qt::AlignCenter);
textBrowser_3 = new QTextBrowser(gridLayoutWidget_2);
textBrowser_3->setObjectName(QString::fromUtf8("textBrowser_3"));
textBrowser_3->setMaximumSize(QSize(250, 31));
textBrowser_3->setFont(font2);
textBrowser_3->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
textBrowser_3->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
gridLayout_2->addWidget(label_9, 4, 0, 1, 1);
gridLayout_2->addWidget(textBrowser_3, 2, 1, 1, 1);
textBrowser_6 = new QTextBrowser(gridLayoutWidget_2);
textBrowser_6->setObjectName(QString::fromUtf8("textBrowser_6"));
textBrowser_6->setMaximumSize(QSize(250, 31));
textBrowser_6->setFont(font2);
textBrowser_2 = new QTextBrowser(gridLayoutWidget_2);
textBrowser_2->setObjectName(QString::fromUtf8("textBrowser_2"));
textBrowser_2->setMaximumSize(QSize(250, 31));
textBrowser_2->setFont(font2);
textBrowser_2->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
textBrowser_2->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
gridLayout_2->addWidget(textBrowser_6, 5, 1, 1, 1);
textBrowser_5 = new QTextBrowser(gridLayoutWidget_2);
textBrowser_5->setObjectName(QString::fromUtf8("textBrowser_5"));
textBrowser_5->setMaximumSize(QSize(250, 31));
textBrowser_5->setFont(font2);
gridLayout_2->addWidget(textBrowser_5, 4, 1, 1, 1);
gridLayout_2->addWidget(textBrowser_2, 1, 1, 1, 1);
textBrowser_4 = new QTextBrowser(gridLayoutWidget_2);
textBrowser_4->setObjectName(QString::fromUtf8("textBrowser_4"));
textBrowser_4->setMaximumSize(QSize(250, 31));
textBrowser_4->setFont(font2);
textBrowser_4->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
textBrowser_4->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
gridLayout_2->addWidget(textBrowser_4, 3, 1, 1, 1);
groupBox_2 = new QGroupBox(page);
groupBox_2->setObjectName(QString::fromUtf8("groupBox_2"));
groupBox_2->setGeometry(QRect(10, 360, 251, 171));
groupBox_2->setGeometry(QRect(690, 30, 291, 151));
groupBox_2->setFont(font1);
groupBox_2->setAlignment(Qt::AlignCenter);
gridLayoutWidget_6 = new QWidget(groupBox_2);
gridLayoutWidget_6->setObjectName(QString::fromUtf8("gridLayoutWidget_6"));
gridLayoutWidget_6->setGeometry(QRect(20, 30, 211, 131));
gridLayoutWidget_6->setGeometry(QRect(30, 20, 231, 121));
gridLayout_6 = new QGridLayout(gridLayoutWidget_6);
gridLayout_6->setSpacing(6);
gridLayout_6->setContentsMargins(11, 11, 11, 11);
@@ -250,25 +252,6 @@ public:
gridLayout_6->setSizeConstraint(QLayout::SetMinAndMaxSize);
gridLayout_6->setHorizontalSpacing(7);
gridLayout_6->setContentsMargins(10, 10, 10, 10);
label_22 = new QLabel(gridLayoutWidget_6);
label_22->setObjectName(QString::fromUtf8("label_22"));
QFont font3;
font3.setPointSize(9);
label_22->setFont(font3);
label_22->setAlignment(Qt::AlignCenter);
gridLayout_6->addWidget(label_22, 0, 0, 1, 1);
label_15 = new QLabel(gridLayoutWidget_6);
label_15->setObjectName(QString::fromUtf8("label_15"));
QFont font4;
font4.setFamily(QString::fromUtf8("\351\273\221\344\275\223"));
font4.setPointSize(9);
label_15->setFont(font4);
label_15->setAlignment(Qt::AlignCenter);
gridLayout_6->addWidget(label_15, 1, 0, 1, 1);
spinBox = new QSpinBox(gridLayoutWidget_6);
spinBox->setObjectName(QString::fromUtf8("spinBox"));
@@ -279,6 +262,25 @@ public:
gridLayout_6->addWidget(spinBox_2, 1, 2, 1, 1);
label_15 = new QLabel(gridLayoutWidget_6);
label_15->setObjectName(QString::fromUtf8("label_15"));
QFont font3;
font3.setFamily(QString::fromUtf8("\351\273\221\344\275\223"));
font3.setPointSize(9);
label_15->setFont(font3);
label_15->setAlignment(Qt::AlignCenter);
gridLayout_6->addWidget(label_15, 1, 0, 1, 1);
label_22 = new QLabel(gridLayoutWidget_6);
label_22->setObjectName(QString::fromUtf8("label_22"));
QFont font4;
font4.setFamily(QString::fromUtf8("\351\273\221\344\275\223"));
label_22->setFont(font4);
label_22->setAlignment(Qt::AlignCenter);
gridLayout_6->addWidget(label_22, 0, 0, 1, 1);
spinBox_3 = new QSpinBox(gridLayoutWidget_6);
spinBox_3->setObjectName(QString::fromUtf8("spinBox_3"));
@@ -286,188 +288,361 @@ public:
label_16 = new QLabel(gridLayoutWidget_6);
label_16->setObjectName(QString::fromUtf8("label_16"));
label_16->setFont(font4);
label_16->setFont(font3);
label_16->setAlignment(Qt::AlignCenter);
gridLayout_6->addWidget(label_16, 2, 0, 1, 1);
groupBox_5 = new QGroupBox(page);
groupBox_5->setObjectName(QString::fromUtf8("groupBox_5"));
groupBox_5->setGeometry(QRect(10, 40, 491, 291));
groupBox_5->setGeometry(QRect(30, 40, 640, 512));
groupBox_5->setFlat(false);
label_11 = new QLabel(groupBox_5);
label_11->setObjectName(QString::fromUtf8("label_11"));
label_11->setGeometry(QRect(190, 120, 121, 31));
label_11->setGeometry(QRect(0, 0, 640, 512));
QFont font5;
font5.setFamily(QString::fromUtf8("Adobe Devanagari"));
font5.setPointSize(16);
label_11->setFont(font5);
label_11->setAlignment(Qt::AlignCenter);
graphicsView_3 = new QGraphicsView(groupBox_5);
graphicsView_3->setObjectName(QString::fromUtf8("graphicsView_3"));
graphicsView_3->setGeometry(QRect(0, 0, 640, 512));
graphicsView_3->raise();
label_11->raise();
pushButton_5 = new QPushButton(page);
pushButton_5->setObjectName(QString::fromUtf8("pushButton_5"));
pushButton_5->setGeometry(QRect(280, 390, 100, 28));
pushButton_5->setMaximumSize(QSize(100, 16777215));
pushButton_5->setFont(font4);
pushButton_5->setGeometry(QRect(50, 580, 120, 51));
pushButton_5->setMinimumSize(QSize(120, 0));
pushButton_5->setMaximumSize(QSize(110, 16777215));
pushButton_5->setFont(font3);
pushButton_6 = new QPushButton(page);
pushButton_6->setObjectName(QString::fromUtf8("pushButton_6"));
pushButton_6->setGeometry(QRect(400, 390, 100, 28));
pushButton_6->setMaximumSize(QSize(100, 16777215));
pushButton_6->setFont(font4);
pushButton_6->setGeometry(QRect(210, 580, 120, 51));
pushButton_6->setMinimumSize(QSize(120, 0));
pushButton_6->setMaximumSize(QSize(110, 16777215));
pushButton_6->setFont(font3);
pushButton_7 = new QPushButton(page);
pushButton_7->setObjectName(QString::fromUtf8("pushButton_7"));
pushButton_7->setGeometry(QRect(280, 470, 100, 28));
pushButton_7->setMaximumSize(QSize(100, 16777215));
pushButton_7->setFont(font4);
pushButton_7->setGeometry(QRect(370, 580, 120, 51));
pushButton_7->setMinimumSize(QSize(120, 0));
pushButton_7->setMaximumSize(QSize(110, 16777215));
pushButton_7->setFont(font3);
pushButton_8 = new QPushButton(page);
pushButton_8->setObjectName(QString::fromUtf8("pushButton_8"));
pushButton_8->setGeometry(QRect(400, 470, 100, 28));
pushButton_8->setMaximumSize(QSize(100, 16777215));
pushButton_8->setFont(font4);
pushButton_8->setGeometry(QRect(530, 580, 120, 51));
pushButton_8->setMinimumSize(QSize(120, 0));
pushButton_8->setMaximumSize(QSize(120, 16777215));
pushButton_8->setFont(font3);
groupBox_3 = new QGroupBox(page);
groupBox_3->setObjectName(QString::fromUtf8("groupBox_3"));
groupBox_3->setGeometry(QRect(520, 30, 321, 211));
groupBox_3->setGeometry(QRect(690, 200, 291, 211));
groupBox_3->setFont(font1);
groupBox_3->setAlignment(Qt::AlignCenter);
textBrowser_7 = new QTextBrowser(groupBox_3);
textBrowser_7->setObjectName(QString::fromUtf8("textBrowser_7"));
textBrowser_7->setGeometry(QRect(10, 20, 301, 181));
treeView = new QTreeView(groupBox_3);
treeView->setObjectName(QString::fromUtf8("treeView"));
treeView->setGeometry(QRect(10, 20, 271, 181));
stackedWidget->addWidget(page);
page_2 = new QWidget();
page_2->setObjectName(QString::fromUtf8("page_2"));
label_3 = new QLabel(page_2);
label_3->setObjectName(QString::fromUtf8("label_3"));
label_3->setGeometry(QRect(390, 20, 81, 16));
label_3->setGeometry(QRect(310, 30, 81, 16));
label_3->setFont(font);
groupBox_6 = new QGroupBox(page_2);
groupBox_6->setObjectName(QString::fromUtf8("groupBox_6"));
groupBox_6->setGeometry(QRect(80, 40, 701, 401));
groupBox_6->setGeometry(QRect(30, 60, 640, 512));
label_21 = new QLabel(groupBox_6);
label_21->setObjectName(QString::fromUtf8("label_21"));
label_21->setGeometry(QRect(280, 170, 121, 31));
label_21->setGeometry(QRect(0, 0, 640, 512));
label_21->setFont(font5);
pushButton_9 = new QPushButton(page_2);
pushButton_9->setObjectName(QString::fromUtf8("pushButton_9"));
pushButton_9->setGeometry(QRect(620, 470, 93, 31));
QFont font6;
font6.setFamily(QString::fromUtf8("\351\273\221\344\275\223"));
pushButton_9->setFont(font6);
pushButton_10 = new QPushButton(page_2);
pushButton_10->setObjectName(QString::fromUtf8("pushButton_10"));
pushButton_10->setGeometry(QRect(730, 470, 93, 31));
pushButton_10->setFont(font6);
label_21->setAlignment(Qt::AlignCenter);
graphicsView_2 = new QGraphicsView(groupBox_6);
graphicsView_2->setObjectName(QString::fromUtf8("graphicsView_2"));
graphicsView_2->setGeometry(QRect(0, 0, 640, 512));
graphicsView_2->raise();
label_21->raise();
pushButton_4 = new QPushButton(page_2);
pushButton_4->setObjectName(QString::fromUtf8("pushButton_4"));
pushButton_4->setGeometry(QRect(470, 470, 81, 31));
pushButton_4->setFont(font6);
pushButton_4->setGeometry(QRect(550, 590, 120, 41));
pushButton_4->setMinimumSize(QSize(120, 0));
pushButton_4->setFont(font4);
lineEdit = new QLineEdit(page_2);
lineEdit->setObjectName(QString::fromUtf8("lineEdit"));
lineEdit->setGeometry(QRect(160, 470, 294, 31));
lineEdit->setGeometry(QRect(150, 590, 381, 41));
label_18 = new QLabel(page_2);
label_18->setObjectName(QString::fromUtf8("label_18"));
label_18->setGeometry(QRect(40, 470, 111, 30));
label_18->setMaximumSize(QSize(16777215, 30));
label_18->setFont(font4);
label_18->setGeometry(QRect(30, 590, 111, 40));
label_18->setMinimumSize(QSize(0, 40));
label_18->setMaximumSize(QSize(16777215, 40));
label_18->setFont(font3);
label_18->setAlignment(Qt::AlignCenter);
groupBox_7 = new QGroupBox(page_2);
groupBox_7->setObjectName(QString::fromUtf8("groupBox_7"));
groupBox_7->setGeometry(QRect(700, 50, 281, 291));
groupBox_7->setFont(font1);
groupBox_7->setAlignment(Qt::AlignCenter);
textBrowser_8 = new QTextBrowser(groupBox_7);
textBrowser_8->setObjectName(QString::fromUtf8("textBrowser_8"));
textBrowser_8->setGeometry(QRect(10, 20, 261, 261));
QFont font6;
font6.setPointSize(9);
textBrowser_8->setFont(font6);
groupBox_8 = new QGroupBox(page_2);
groupBox_8->setObjectName(QString::fromUtf8("groupBox_8"));
groupBox_8->setGeometry(QRect(710, 350, 261, 281));
groupBox_8->setFont(font1);
groupBox_8->setAlignment(Qt::AlignCenter);
pushButton_9 = new QPushButton(groupBox_8);
pushButton_9->setObjectName(QString::fromUtf8("pushButton_9"));
pushButton_9->setGeometry(QRect(70, 80, 120, 51));
pushButton_9->setMinimumSize(QSize(120, 0));
pushButton_9->setFont(font4);
pushButton_10 = new QPushButton(groupBox_8);
pushButton_10->setObjectName(QString::fromUtf8("pushButton_10"));
pushButton_10->setGeometry(QRect(70, 150, 120, 51));
pushButton_10->setMinimumSize(QSize(120, 0));
pushButton_10->setFont(font4);
pushButton_17 = new QPushButton(groupBox_8);
pushButton_17->setObjectName(QString::fromUtf8("pushButton_17"));
pushButton_17->setGeometry(QRect(70, 220, 120, 51));
pushButton_17->setMinimumSize(QSize(120, 0));
pushButton_17->setFont(font4);
pushButton_19 = new QPushButton(groupBox_8);
pushButton_19->setObjectName(QString::fromUtf8("pushButton_19"));
pushButton_19->setGeometry(QRect(70, 10, 120, 51));
pushButton_19->setMinimumSize(QSize(120, 0));
pushButton_19->setFont(font4);
stackedWidget->addWidget(page_2);
groupBox_8->raise();
label_3->raise();
groupBox_6->raise();
pushButton_4->raise();
lineEdit->raise();
label_18->raise();
groupBox_7->raise();
page_3 = new QWidget();
page_3->setObjectName(QString::fromUtf8("page_3"));
groupBox_4 = new QGroupBox(page_3);
groupBox_4->setObjectName(QString::fromUtf8("groupBox_4"));
groupBox_4->setGeometry(QRect(650, 60, 191, 171));
groupBox_4->setFont(font6);
groupBox_4->setGeometry(QRect(785, 70, 201, 171));
groupBox_4->setFont(font4);
groupBox_4->setAlignment(Qt::AlignCenter);
horizontalSlider = new QSlider(groupBox_4);
horizontalSlider->setObjectName(QString::fromUtf8("horizontalSlider"));
horizontalSlider->setGeometry(QRect(90, 80, 91, 22));
horizontalSlider->setOrientation(Qt::Horizontal);
label_13 = new QLabel(groupBox_4);
label_13->setObjectName(QString::fromUtf8("label_13"));
label_13->setGeometry(QRect(10, 80, 72, 15));
groupBox_4->setFlat(false);
label_12 = new QLabel(groupBox_4);
label_12->setObjectName(QString::fromUtf8("label_12"));
label_12->setGeometry(QRect(10, 50, 72, 15));
label_12->setGeometry(QRect(20, 50, 61, 16));
pushButton_11 = new QPushButton(groupBox_4);
pushButton_11->setObjectName(QString::fromUtf8("pushButton_11"));
pushButton_11->setGeometry(QRect(70, 117, 51, 21));
pushButton_11->setGeometry(QRect(70, 100, 51, 31));
pushButton_12 = new QPushButton(groupBox_4);
pushButton_12->setObjectName(QString::fromUtf8("pushButton_12"));
pushButton_12->setGeometry(QRect(130, 117, 51, 21));
pushButton_12->setGeometry(QRect(140, 100, 51, 31));
label_14 = new QLabel(groupBox_4);
label_14->setObjectName(QString::fromUtf8("label_14"));
label_14->setGeometry(QRect(10, 120, 72, 15));
label_14->setGeometry(QRect(10, 110, 51, 16));
pushButton_16 = new QPushButton(groupBox_4);
pushButton_16->setObjectName(QString::fromUtf8("pushButton_16"));
pushButton_16->setGeometry(QRect(100, 47, 51, 21));
graphicsView = new QGraphicsView(page_3);
graphicsView->setObjectName(QString::fromUtf8("graphicsView"));
graphicsView->setGeometry(QRect(0, 10, 641, 521));
pushButton_16->setGeometry(QRect(100, 40, 51, 31));
pushButton_13 = new QPushButton(page_3);
pushButton_13->setObjectName(QString::fromUtf8("pushButton_13"));
pushButton_13->setGeometry(QRect(700, 310, 93, 28));
pushButton_13->setFont(font6);
pushButton_13->setGeometry(QRect(815, 290, 141, 41));
pushButton_13->setFont(font4);
pushButton_14 = new QPushButton(page_3);
pushButton_14->setObjectName(QString::fromUtf8("pushButton_14"));
pushButton_14->setGeometry(QRect(700, 380, 93, 28));
pushButton_14->setFont(font6);
pushButton_14->setGeometry(QRect(815, 380, 141, 41));
pushButton_14->setFont(font4);
pushButton_15 = new QPushButton(page_3);
pushButton_15->setObjectName(QString::fromUtf8("pushButton_15"));
pushButton_15->setGeometry(QRect(700, 450, 93, 28));
pushButton_15->setFont(font6);
pushButton_15->setGeometry(QRect(815, 470, 141, 41));
pushButton_15->setFont(font4);
qvtkWidget = new QVTKWidget(page_3);
qvtkWidget->setObjectName(QString::fromUtf8("qvtkWidget"));
qvtkWidget->setGeometry(QRect(30, 20, 741, 621));
label_9 = new QLabel(page_3);
label_9->setObjectName(QString::fromUtf8("label_9"));
label_9->setGeometry(QRect(30, 20, 741, 611));
QFont font7;
font7.setFamily(QString::fromUtf8("\351\273\221\344\275\223"));
font7.setPointSize(18);
label_9->setFont(font7);
label_9->setStyleSheet(QString::fromUtf8(""));
pushButton_18 = new QPushButton(page_3);
pushButton_18->setObjectName(QString::fromUtf8("pushButton_18"));
pushButton_18->setGeometry(QRect(815, 560, 141, 41));
pushButton_18->setFont(font4);
stackedWidget->addWidget(page_3);
layoutWidget = new QWidget(centralWidget);
widget = new QWidget(centralWidget);
widget->setObjectName(QString::fromUtf8("widget"));
widget->setGeometry(QRect(0, -10, 241, 671));
QPalette palette;
QBrush brush(QColor(0, 0, 0, 255));
brush.setStyle(Qt::SolidPattern);
palette.setBrush(QPalette::Active, QPalette::WindowText, brush);
QBrush brush1(QColor(44, 46, 70, 255));
brush1.setStyle(Qt::SolidPattern);
palette.setBrush(QPalette::Active, QPalette::Button, brush1);
QBrush brush2(QColor(255, 0, 0, 255));
brush2.setStyle(Qt::SolidPattern);
palette.setBrush(QPalette::Active, QPalette::Light, brush2);
QBrush brush3(QColor(212, 0, 0, 255));
brush3.setStyle(Qt::SolidPattern);
palette.setBrush(QPalette::Active, QPalette::Midlight, brush3);
QBrush brush4(QColor(85, 0, 0, 255));
brush4.setStyle(Qt::SolidPattern);
palette.setBrush(QPalette::Active, QPalette::Dark, brush4);
QBrush brush5(QColor(113, 0, 0, 255));
brush5.setStyle(Qt::SolidPattern);
palette.setBrush(QPalette::Active, QPalette::Mid, brush5);
palette.setBrush(QPalette::Active, QPalette::Text, brush);
QBrush brush6(QColor(255, 255, 255, 255));
brush6.setStyle(Qt::SolidPattern);
palette.setBrush(QPalette::Active, QPalette::BrightText, brush6);
palette.setBrush(QPalette::Active, QPalette::ButtonText, brush);
palette.setBrush(QPalette::Active, QPalette::Base, brush1);
palette.setBrush(QPalette::Active, QPalette::Window, brush1);
palette.setBrush(QPalette::Active, QPalette::Shadow, brush);
QBrush brush7(QColor(212, 127, 127, 255));
brush7.setStyle(Qt::SolidPattern);
palette.setBrush(QPalette::Active, QPalette::AlternateBase, brush7);
QBrush brush8(QColor(255, 255, 220, 255));
brush8.setStyle(Qt::SolidPattern);
palette.setBrush(QPalette::Active, QPalette::ToolTipBase, brush8);
palette.setBrush(QPalette::Active, QPalette::ToolTipText, brush);
QBrush brush9(QColor(0, 0, 0, 128));
brush9.setStyle(Qt::NoBrush);
#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
palette.setBrush(QPalette::Active, QPalette::PlaceholderText, brush9);
#endif
palette.setBrush(QPalette::Inactive, QPalette::WindowText, brush);
palette.setBrush(QPalette::Inactive, QPalette::Button, brush1);
palette.setBrush(QPalette::Inactive, QPalette::Light, brush2);
palette.setBrush(QPalette::Inactive, QPalette::Midlight, brush3);
palette.setBrush(QPalette::Inactive, QPalette::Dark, brush4);
palette.setBrush(QPalette::Inactive, QPalette::Mid, brush5);
palette.setBrush(QPalette::Inactive, QPalette::Text, brush);
palette.setBrush(QPalette::Inactive, QPalette::BrightText, brush6);
palette.setBrush(QPalette::Inactive, QPalette::ButtonText, brush);
palette.setBrush(QPalette::Inactive, QPalette::Base, brush1);
palette.setBrush(QPalette::Inactive, QPalette::Window, brush1);
palette.setBrush(QPalette::Inactive, QPalette::Shadow, brush);
palette.setBrush(QPalette::Inactive, QPalette::AlternateBase, brush7);
palette.setBrush(QPalette::Inactive, QPalette::ToolTipBase, brush8);
palette.setBrush(QPalette::Inactive, QPalette::ToolTipText, brush);
QBrush brush10(QColor(0, 0, 0, 128));
brush10.setStyle(Qt::NoBrush);
#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
palette.setBrush(QPalette::Inactive, QPalette::PlaceholderText, brush10);
#endif
palette.setBrush(QPalette::Disabled, QPalette::WindowText, brush4);
palette.setBrush(QPalette::Disabled, QPalette::Button, brush1);
palette.setBrush(QPalette::Disabled, QPalette::Light, brush2);
palette.setBrush(QPalette::Disabled, QPalette::Midlight, brush3);
palette.setBrush(QPalette::Disabled, QPalette::Dark, brush4);
palette.setBrush(QPalette::Disabled, QPalette::Mid, brush5);
palette.setBrush(QPalette::Disabled, QPalette::Text, brush4);
palette.setBrush(QPalette::Disabled, QPalette::BrightText, brush6);
palette.setBrush(QPalette::Disabled, QPalette::ButtonText, brush4);
palette.setBrush(QPalette::Disabled, QPalette::Base, brush1);
palette.setBrush(QPalette::Disabled, QPalette::Window, brush1);
palette.setBrush(QPalette::Disabled, QPalette::Shadow, brush);
QBrush brush11(QColor(170, 0, 0, 255));
brush11.setStyle(Qt::SolidPattern);
palette.setBrush(QPalette::Disabled, QPalette::AlternateBase, brush11);
palette.setBrush(QPalette::Disabled, QPalette::ToolTipBase, brush8);
palette.setBrush(QPalette::Disabled, QPalette::ToolTipText, brush);
QBrush brush12(QColor(0, 0, 0, 128));
brush12.setStyle(Qt::NoBrush);
#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
palette.setBrush(QPalette::Disabled, QPalette::PlaceholderText, brush12);
#endif
widget->setPalette(palette);
widget->setAutoFillBackground(true);
widget->setStyleSheet(QString::fromUtf8(""));
label = new QLabel(widget);
label->setObjectName(QString::fromUtf8("label"));
label->setGeometry(QRect(10, 10, 221, 151));
label->setMaximumSize(QSize(16777215, 400));
QFont font8;
font8.setFamily(QString::fromUtf8("Adobe Devanagari"));
font8.setPointSize(13);
font8.setBold(true);
font8.setWeight(75);
label->setFont(font8);
label->setStyleSheet(QString::fromUtf8("color: rgb(255, 255, 255);"));
label->setAlignment(Qt::AlignCenter);
label_4 = new QLabel(widget);
label_4->setObjectName(QString::fromUtf8("label_4"));
label_4->setGeometry(QRect(20, 290, 201, 91));
QFont font9;
font9.setFamily(QString::fromUtf8("\347\255\211\347\272\277"));
font9.setPointSize(9);
label_4->setFont(font9);
label_4->setStyleSheet(QString::fromUtf8("color: rgb(255, 255, 255);"));
label_4->setAlignment(Qt::AlignCenter);
layoutWidget = new QWidget(widget);
layoutWidget->setObjectName(QString::fromUtf8("layoutWidget"));
layoutWidget->setGeometry(QRect(10, 260, 219, 241));
layoutWidget->setGeometry(QRect(10, 390, 221, 241));
verticalLayout = new QVBoxLayout(layoutWidget);
verticalLayout->setSpacing(6);
verticalLayout->setSpacing(40);
verticalLayout->setContentsMargins(11, 11, 11, 11);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
verticalLayout->setContentsMargins(0, 0, 0, 0);
pushButton = new QPushButton(layoutWidget);
pushButton->setObjectName(QString::fromUtf8("pushButton"));
pushButton->setFont(font6);
QSizePolicy sizePolicy1(QSizePolicy::Minimum, QSizePolicy::Minimum);
sizePolicy1.setHorizontalStretch(0);
sizePolicy1.setVerticalStretch(0);
sizePolicy1.setHeightForWidth(pushButton->sizePolicy().hasHeightForWidth());
pushButton->setSizePolicy(sizePolicy1);
pushButton->setFont(font1);
pushButton->setStyleSheet(QString::fromUtf8(""));
verticalLayout->addWidget(pushButton);
pushButton_2 = new QPushButton(layoutWidget);
pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));
pushButton_2->setFont(font6);
sizePolicy1.setHeightForWidth(pushButton_2->sizePolicy().hasHeightForWidth());
pushButton_2->setSizePolicy(sizePolicy1);
pushButton_2->setFont(font1);
pushButton_2->setStyleSheet(QString::fromUtf8(""));
verticalLayout->addWidget(pushButton_2);
pushButton_3 = new QPushButton(layoutWidget);
pushButton_3->setObjectName(QString::fromUtf8("pushButton_3"));
pushButton_3->setFont(font6);
sizePolicy1.setHeightForWidth(pushButton_3->sizePolicy().hasHeightForWidth());
pushButton_3->setSizePolicy(sizePolicy1);
pushButton_3->setFont(font1);
pushButton_3->setStyleSheet(QString::fromUtf8(""));
verticalLayout->addWidget(pushButton_3);
label_4 = new QLabel(centralWidget);
label_4->setObjectName(QString::fromUtf8("label_4"));
label_4->setGeometry(QRect(10, 180, 219, 91));
label_4->setFont(font1);
label_4->setAlignment(Qt::AlignCenter);
label = new QLabel(centralWidget);
label->setObjectName(QString::fromUtf8("label"));
label->setGeometry(QRect(10, 20, 219, 151));
label->setMaximumSize(QSize(16777215, 400));
QFont font7;
font7.setFamily(QString::fromUtf8("Adobe Devanagari"));
font7.setPointSize(14);
font7.setBold(true);
font7.setWeight(75);
label->setFont(font7);
ReconstructionClass->setCentralWidget(centralWidget);
menuBar = new QMenuBar(ReconstructionClass);
menuBar->setObjectName(QString::fromUtf8("menuBar"));
menuBar->setGeometry(QRect(0, 0, 1111, 26));
menuBar->setGeometry(QRect(0, 0, 1240, 26));
menusettings = new QMenu(menuBar);
menusettings->setObjectName(QString::fromUtf8("menusettings"));
QFont font10;
font10.setFamily(QString::fromUtf8("\351\273\221\344\275\223"));
font10.setPointSize(8);
menusettings->setFont(font10);
menuabout = new QMenu(menuBar);
menuabout->setObjectName(QString::fromUtf8("menuabout"));
menuabout->setFont(font10);
ReconstructionClass->setMenuBar(menuBar);
mainToolBar = new QToolBar(ReconstructionClass);
mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
ReconstructionClass->addToolBar(Qt::TopToolBarArea, mainToolBar);
statusBar = new QStatusBar(ReconstructionClass);
statusBar->setObjectName(QString::fromUtf8("statusBar"));
ReconstructionClass->setStatusBar(statusBar);
retranslateUi(ReconstructionClass);
menuBar->addAction(menusettings->menuAction());
menuBar->addAction(menuabout->menuAction());
stackedWidget->setCurrentIndex(0);
retranslateUi(ReconstructionClass);
QObject::connect(spinBox, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));
stackedWidget->setCurrentIndex(1);
QMetaObject::connectSlotsByName(ReconstructionClass);
@@ -476,17 +651,17 @@ public:
void retranslateUi(QMainWindow *ReconstructionClass)
{
ReconstructionClass->setWindowTitle(QApplication::translate("ReconstructionClass", "Reconstruction", nullptr));
actioncamera->setText(QApplication::translate("ReconstructionClass", "camera", nullptr));
actionstyle->setText(QApplication::translate("ReconstructionClass", "style", nullptr));
label_2->setText(QApplication::translate("ReconstructionClass", "Live Video", nullptr));
groupBox->setTitle(QApplication::translate("ReconstructionClass", "\347\233\270\346\234\272\345\217\202\346\225\260\346\240\217", nullptr));
label_7->setText(QApplication::translate("ReconstructionClass", "KC1", nullptr));
label_6->setText(QApplication::translate("ReconstructionClass", "T12", nullptr));
label_5->setText(QApplication::translate("ReconstructionClass", "R12", nullptr));
label_7->setText(QApplication::translate("ReconstructionClass", "KC1", nullptr));
label_10->setText(QApplication::translate("ReconstructionClass", "HP2", nullptr));
label_8->setText(QApplication::translate("ReconstructionClass", "KP2", nullptr));
label_9->setText(QApplication::translate("ReconstructionClass", "HC1", nullptr));
groupBox_2->setTitle(QApplication::translate("ReconstructionClass", "\346\240\207\345\256\232\346\235\277\350\256\276\347\275\256", nullptr));
label_22->setText(QApplication::translate("ReconstructionClass", "\346\243\213\347\233\230\345\260\272\345\257\270(mm)", nullptr));
label_15->setText(QApplication::translate("ReconstructionClass", "\350\241\214\346\225\260", nullptr));
label_22->setText(QApplication::translate("ReconstructionClass", "\346\243\213\347\233\230\345\260\272\345\257\270(mm)", nullptr));
label_16->setText(QApplication::translate("ReconstructionClass", "\345\210\227\346\225\260", nullptr));
groupBox_5->setTitle(QString());
label_11->setText(QApplication::translate("ReconstructionClass", "NO VIDEO", nullptr));
@@ -498,25 +673,32 @@ public:
label_3->setText(QApplication::translate("ReconstructionClass", "Live Video", nullptr));
groupBox_6->setTitle(QString());
label_21->setText(QApplication::translate("ReconstructionClass", "NO VIDEO", nullptr));
pushButton_9->setText(QApplication::translate("ReconstructionClass", "\347\233\270\346\234\272\346\213\215\347\205\247", nullptr));
pushButton_10->setText(QApplication::translate("ReconstructionClass", "\344\277\235\345\255\230\347\205\247\347\211\207", nullptr));
pushButton_4->setText(QApplication::translate("ReconstructionClass", "\351\200\211\346\213\251\346\226\207\344\273\266", nullptr));
label_18->setText(QApplication::translate("ReconstructionClass", "\350\275\275\345\205\245\346\212\225\345\275\261\345\233\276\346\241\210", nullptr));
groupBox_7->setTitle(QApplication::translate("ReconstructionClass", "\351\207\215\345\273\272\346\227\245\345\277\227", nullptr));
groupBox_8->setTitle(QString());
pushButton_9->setText(QApplication::translate("ReconstructionClass", "\347\233\270\346\234\272\346\213\215\347\205\247", nullptr));
pushButton_10->setText(QApplication::translate("ReconstructionClass", "\344\277\235\345\255\230\347\205\247\347\211\207", nullptr));
pushButton_17->setText(QApplication::translate("ReconstructionClass", "\345\274\200\345\247\213\351\207\215\345\273\272", nullptr));
pushButton_19->setText(QApplication::translate("ReconstructionClass", "\346\212\225\345\275\261\345\233\276\346\241\210", nullptr));
groupBox_4->setTitle(QApplication::translate("ReconstructionClass", "\350\256\276\347\275\256", nullptr));
label_13->setText(QApplication::translate("ReconstructionClass", "\347\202\271\347\232\204\345\244\247\345\260\217", nullptr));
label_12->setText(QApplication::translate("ReconstructionClass", "\351\242\234\350\211\262\351\200\211\346\213\251", nullptr));
pushButton_11->setText(QApplication::translate("ReconstructionClass", "\351\200\211\346\213\251", nullptr));
pushButton_12->setText(QApplication::translate("ReconstructionClass", "\345\211\224\351\231\244", nullptr));
label_14->setText(QApplication::translate("ReconstructionClass", "\345\274\202\345\270\270\347\202\271", nullptr));
pushButton_16->setText(QApplication::translate("ReconstructionClass", "COLOR", nullptr));
pushButton_16->setText(QString());
pushButton_13->setText(QApplication::translate("ReconstructionClass", "\345\257\274\345\205\245\347\202\271\344\272\221", nullptr));
pushButton_14->setText(QApplication::translate("ReconstructionClass", "\345\257\274\345\207\272\347\273\223\346\236\234", nullptr));
pushButton_15->setText(QApplication::translate("ReconstructionClass", "\344\277\235\345\255\230\346\210\252\345\233\276", nullptr));
pushButton->setText(QApplication::translate("ReconstructionClass", "\347\233\270\346\234\272\346\240\207\345\256\232", nullptr));
pushButton_2->setText(QApplication::translate("ReconstructionClass", "\345\233\276\346\241\210\346\212\225\345\275\261", nullptr));
pushButton_3->setText(QApplication::translate("ReconstructionClass", "\344\270\211\347\273\264\351\207\215\345\273\272", nullptr));
label_4->setText(QApplication::translate("ReconstructionClass", "\345\212\237\350\203\275\351\200\211\346\213\251", nullptr));
pushButton_15->setText(QApplication::translate("ReconstructionClass", "\346\233\262\351\235\242\351\207\215\345\273\272", nullptr));
label_9->setText(QString());
pushButton_18->setText(QApplication::translate("ReconstructionClass", "\344\275\277\347\224\250\345\270\256\345\212\251", nullptr));
label->setText(QApplication::translate("ReconstructionClass", "3D RECONSTRUCTION", nullptr));
label_4->setText(QApplication::translate("ReconstructionClass", "\345\212\237\350\203\275\351\200\211\346\213\251", nullptr));
pushButton->setText(QApplication::translate("ReconstructionClass", "\347\263\273\347\273\237\346\240\207\345\256\232", nullptr));
pushButton_2->setText(QApplication::translate("ReconstructionClass", "\344\270\211\347\273\264\351\207\215\345\273\272", nullptr));
pushButton_3->setText(QApplication::translate("ReconstructionClass", "\347\202\271\344\272\221\346\270\262\346\237\223", nullptr));
menusettings->setTitle(QApplication::translate("ReconstructionClass", "\347\233\270\346\234\272\350\256\276\347\275\256", nullptr));
menuabout->setTitle(QApplication::translate("ReconstructionClass", "\345\205\263\344\272\216", nullptr));
} // retranslateUi
};

View File

@@ -1,66 +0,0 @@
/********************************************************************************
** Form generated from reading UI file 'Reconstruction.ui'
**
** Created by: Qt User Interface Compiler version 5.12.3
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_RECONSTRUCTION_H
#define UI_RECONSTRUCTION_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QToolBar>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_ReconstructionClass
{
public:
QMenuBar *menuBar;
QToolBar *mainToolBar;
QWidget *centralWidget;
QStatusBar *statusBar;
void setupUi(QMainWindow *ReconstructionClass)
{
if (ReconstructionClass->objectName().isEmpty())
ReconstructionClass->setObjectName(QString::fromUtf8("ReconstructionClass"));
ReconstructionClass->resize(600, 400);
menuBar = new QMenuBar(ReconstructionClass);
menuBar->setObjectName(QString::fromUtf8("menuBar"));
ReconstructionClass->setMenuBar(menuBar);
mainToolBar = new QToolBar(ReconstructionClass);
mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
ReconstructionClass->addToolBar(mainToolBar);
centralWidget = new QWidget(ReconstructionClass);
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
ReconstructionClass->setCentralWidget(centralWidget);
statusBar = new QStatusBar(ReconstructionClass);
statusBar->setObjectName(QString::fromUtf8("statusBar"));
ReconstructionClass->setStatusBar(statusBar);
retranslateUi(ReconstructionClass);
QMetaObject::connectSlotsByName(ReconstructionClass);
} // setupUi
void retranslateUi(QMainWindow *ReconstructionClass)
{
ReconstructionClass->setWindowTitle(QApplication::translate("ReconstructionClass", "Reconstruction", nullptr));
} // retranslateUi
};
namespace Ui {
class ReconstructionClass: public Ui_ReconstructionClass {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_RECONSTRUCTION_H

Binary file not shown.

Binary file not shown.

View File

@@ -4,6 +4,31 @@
<Qt_INCLUDEPATH_>D:\Qt\5.12.3\msvc2017_64\include;D:\Qt\5.12.3\msvc2017_64\include\QtWidgets;D:\Qt\5.12.3\msvc2017_64\include\QtGui;D:\Qt\5.12.3\msvc2017_64\include\QtANGLE;D:\Qt\5.12.3\msvc2017_64\include\QtCore;C:\VulkanSDK\1.0.51.0\include;D:\Qt\5.12.3\msvc2017_64\mkspecs\win32-msvc</Qt_INCLUDEPATH_>
<Qt_LIBS_>D:\Qt\5.12.3\msvc2017_64\lib\Qt5Widgets.lib;D:\Qt\5.12.3\msvc2017_64\lib\Qt5Gui.lib;D:\Qt\5.12.3\msvc2017_64\lib\Qt5Core.lib;D:\Qt\5.12.3\msvc2017_64\lib\qtmain.lib;shell32.lib</Qt_LIBS_>
<Qt_LIBPATH_>D:\Qt\5.12.3\msvc2017_64\lib;C:\openssl\lib;C:\Utils\my_sql\mysql-5.6.11-winx64\lib;C:\Utils\postgresql\pgsql\lib</Qt_LIBPATH_>
<QMake_QT_SYSROOT_></QMake_QT_SYSROOT_>
<QMake_QT_INSTALL_PREFIX_>D:/Qt/5.12.3/msvc2017_64</QMake_QT_INSTALL_PREFIX_>
<QMake_QT_INSTALL_ARCHDATA_>D:/Qt/5.12.3/msvc2017_64</QMake_QT_INSTALL_ARCHDATA_>
<QMake_QT_INSTALL_DATA_>D:/Qt/5.12.3/msvc2017_64</QMake_QT_INSTALL_DATA_>
<QMake_QT_INSTALL_DOCS_>D:/Qt/Docs/Qt-5.12.3</QMake_QT_INSTALL_DOCS_>
<QMake_QT_INSTALL_HEADERS_>D:/Qt/5.12.3/msvc2017_64/include</QMake_QT_INSTALL_HEADERS_>
<QMake_QT_INSTALL_LIBS_>D:/Qt/5.12.3/msvc2017_64/lib</QMake_QT_INSTALL_LIBS_>
<QMake_QT_INSTALL_LIBEXECS_>D:/Qt/5.12.3/msvc2017_64/bin</QMake_QT_INSTALL_LIBEXECS_>
<QMake_QT_INSTALL_BINS_>D:/Qt/5.12.3/msvc2017_64/bin</QMake_QT_INSTALL_BINS_>
<QMake_QT_INSTALL_TESTS_>D:/Qt/5.12.3/msvc2017_64/tests</QMake_QT_INSTALL_TESTS_>
<QMake_QT_INSTALL_PLUGINS_>D:/Qt/5.12.3/msvc2017_64/plugins</QMake_QT_INSTALL_PLUGINS_>
<QMake_QT_INSTALL_IMPORTS_>D:/Qt/5.12.3/msvc2017_64/imports</QMake_QT_INSTALL_IMPORTS_>
<QMake_QT_INSTALL_QML_>D:/Qt/5.12.3/msvc2017_64/qml</QMake_QT_INSTALL_QML_>
<QMake_QT_INSTALL_TRANSLATIONS_>D:/Qt/5.12.3/msvc2017_64/translations</QMake_QT_INSTALL_TRANSLATIONS_>
<QMake_QT_INSTALL_CONFIGURATION_></QMake_QT_INSTALL_CONFIGURATION_>
<QMake_QT_INSTALL_EXAMPLES_>D:/Qt/Examples/Qt-5.12.3</QMake_QT_INSTALL_EXAMPLES_>
<QMake_QT_INSTALL_DEMOS_>D:/Qt/Examples/Qt-5.12.3</QMake_QT_INSTALL_DEMOS_>
<QMake_QT_HOST_PREFIX_>D:/Qt/5.12.3/msvc2017_64</QMake_QT_HOST_PREFIX_>
<QMake_QT_HOST_DATA_>D:/Qt/5.12.3/msvc2017_64</QMake_QT_HOST_DATA_>
<QMake_QT_HOST_BINS_>D:/Qt/5.12.3/msvc2017_64/bin</QMake_QT_HOST_BINS_>
<QMake_QT_HOST_LIBS_>D:/Qt/5.12.3/msvc2017_64/lib</QMake_QT_HOST_LIBS_>
<QMake_QMAKE_SPEC_>win32-msvc</QMake_QMAKE_SPEC_>
<QMake_QMAKE_XSPEC_>win32-msvc</QMake_QMAKE_XSPEC_>
<QMake_QMAKE_VERSION_>3.1</QMake_QMAKE_VERSION_>
<QMake_QT_VERSION_>5.12.3</QMake_QT_VERSION_>
<Qt_INCLUDEPATH_
>$(Qt_INCLUDEPATH_);x64\Release\moc\Classes;x64\Release\uic\UI</Qt_INCLUDEPATH_>
<QtBkup_QtInstall
@@ -19,10 +44,14 @@
<QtBkup_QtLibrarySearchPath
></QtBkup_QtLibrarySearchPath>
<QtBkup_QtVars
>DEFINES=/-D(\w+)/$1/;INCLUDEPATH=INCPATH/-I(\x22[^\x22]+\x22|[^\s]+)/$1/;LIBS=/(?:\/LIBPATH:(?:\x22[^\x22]+\x22|[^\s]+))|(\x22[^\x22]+\x22|[^\s]+)/$1/;LIBPATH=LIBS/\/LIBPATH:(\x22[^\x22]+\x22|[^\s]+)/$1/</QtBkup_QtVars>
>DEFINES=/-D([^\s=]+(=(\x22(\\\\|\\\x22|[^\x22])*\x22|\S+))?)/$1/;INCLUDEPATH=INCPATH/-I(\x22[^\x22]+\x22|[^\s]+)/$1/;LIBS=/(?:\/LIBPATH:(?:\x22[^\x22]+\x22|[^\s]+))|(\x22[^\x22]+\x22|[^\s]+)/$1/;LIBPATH=LIBS/\/LIBPATH:(\x22[^\x22]+\x22|[^\s]+)/$1/</QtBkup_QtVars>
<QtBkup_QMakeCodeLines
></QtBkup_QMakeCodeLines>
<QtBkup_QtBuildConfig
>release</QtBkup_QtBuildConfig>
<QtVersion>5.12.3</QtVersion>
<QtVersionMajor>5</QtVersionMajor>
<QtVersionMinor>12</QtVersionMinor>
<QtVersionPatch>3</QtVersionPatch>
</PropertyGroup>
</Project>