位姿检索的哈希算法:https://blog.csdn.net/wishchin/article/details/19164875
1.C++ IDE设计
MFC这种半死不活的windows C++平台已经被抛弃,很无奈。转向Qt的C++还是不错的选择。
QT的QML才是最新的亮点,可惜没有时间经历这些东西了。
2.程序代码
2.1 开始哥的配置文件:
QT += core gui
TARGET = QtGUI
TEMPLATE = app
INCLUDEPATH += C:/PCL_1.6/3rdParty/Boost/include
INCLUDEPATH += C:/PCL_1.6/3rdParty/Eigen/include
INCLUDEPATH += C:/PCL_1.6/3rdParty/FLANN/include
INCLUDEPATH += C:/PCL_1.6/3rdParty/Qhull/include
INCLUDEPATH += C:/PCL_1.6/3rdParty/VTK/include
INCLUDEPATH += C:/Dev/HDF5_1.8.11/include
INCLUDEPATH += C:/Dev/CV2.4.6/opencv/build/include
SOURCES += main.cpp\
wishgui.cpp
HEADERS += wishgui.h
//SOURCES += cwishguigo.cpp
//HEADERS += cwishguigo.h
//HEADERS += include/LSH.h
//SOURCES += include/LSH.cpp
HEADERS += include/CvDraw.h
SOURCES += include/CvDraw.cpp
//LIBS += C:/PCL_1.6/3rdParty/Boost/lib/boost_filesystem-vc100-mt-gd-1_50.lib
//LIBS += C:/PCL_1.6/3rdParty/Boost/lib/boost_system-vc100-mt-gd-1_50.lib
//LIBS += C:/PCL_1.6/3rdParty/Boost/lib/libboost_filesystem-vc100-mt-1_50.lib
//LIBS += C:/PCL_1.6/3rdParty/Boost/lib/libboost_system-vc100-mt-1_50.lib
LIBS += C:/PCL_1.6/3rdParty/Boost/lib/libboost_filesystem-vc100-mt-gd-1_50.lib
LIBS += C:/PCL_1.6/3rdParty/Boost/lib/libboost_system-vc100-mt-gd-1_50.lib
LIBS += C:/PCL_1.6/3rdParty/Boost/lib/libboost_date_time-vc100-mt-gd-1_50.lib
LIBS += C:/PCL_1.6/3rdParty/Boost/lib/libboost_thread-vc100-mt-gd-1_50.lib
LIBS += C:/PCL_1.6/3rdParty/FLANN/lib/flann_cpp_s-gd.lib
LIBS += C:/PCL_1.6/3rdParty/Qhull/lib/qhull6_d.lib
LIBS += C:/PCL_1.6/3rdParty/VTK/lib/vtk-5.8/QVTK-gd.lib
LIBS += C:/Dev/HDF5_1.8.11/lib/hdf5.lib
//使用MSVC调试器,下面注释掉两行为MinGW调试器所使用
//LIBS += C:/Dev/CV2.4.6/opencv/build/x86/mingw/lib/libopencv_highgui246.dll.a
//LIBS += C:/Dev/CV2.4.6/opencv/build/x86/mingw/lib/libopencv_core246.dll.a
LIBS += C:/Dev/CV2.4.6/opencv/build/x86/vc10/lib/opencv_highgui246d.lib
LIBS += C:/Dev/CV2.4.6/opencv/build/x86/vc10/lib/opencv_core246d.lib
FORMS += wishgui.ui
2. 2 程序入口
#include <QtGui/QApplication>
#include <QtGui>
#include "wishgui.h"
//#include "include/LSH.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
//SetBackGround...
CWishGUI *frame= new CWishGUI;
frame->setObjectName("myframe");
frame->resize(831,580);
frame->setStyleSheet("CWishGUI#myframe{border-image:url(src/GrassCropReform.png)}" );
frame->show();
return app.exec();
}
2.3 UI文件
注意事项:资源文件要放在 生成目录的 PupilGuiWish-build-desktop-Qt_4_8_6_qmake____ 文件夹!
是不是界面太丑了?来,改进一下设计:
2.3.1 按钮控件透明处理
找了半天没有找到,只实现了Tab的透明化。图片如下:
修改的UI类代码为:
CWishGUI::CWishGUI(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::CWishGUI)
{
ui->setupUi(this);
QPixmap pixmap("./Image/Spark.jpg");
ui->WishLabel->setPixmap(pixmap);
//ui->ShowRGB->setStyleSheet("QPushButton:pane {background: transparent; }");
//ui->ShowRGB->setAttribute(Qt::WA_TranslucentBackground, true);//it is no use!
ui->ShowRGB->setAttribute(Qt::WA_StyledBackground, true);
//主要修改代码
ui->tabWidget->setStyleSheet("QTabWidget:pane {border-top:2px solid #e8f3f9;border-right:2px solid #e8f3f9; border-left:2px solid #e8f3f9;border-bottom:2px solid #e8f3f9;background: transparent; }");
//ui->tabWidget->setAttribute(Qt::WA_TranslucentBackground, true);
//ui->tabWidget->setWindowOpacity(0.2);
ui->lineEdit_PoseX->setStyleSheet("QLineEdit:pane {border-top:1px solid #e8f3f9;border-right:1px solid #e8f3f9; border-left:1px solid #e8f3f9;border-bottom:1px solid #e8f3f9;background: transparent; }");
connect( ui->Connect , SIGNAL(clicked()), this, SLOT(setImageShow) );
}
3.程序结果
弄了大半天,只设计了一个UI,没有对程序进行类的规划继承,可以说是雏形的雏形。
整体程序流程
4. ICP结果