diff --git a/CMakeLists.txt b/CMakeLists.txt index ab947c34..28e7feee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,7 +13,7 @@ ENDIF(NOT WIN32) ####################### # VERSION ####################### -SET(PROJECT_VERSION "0.4.6") +SET(PROJECT_VERSION "0.5.0") ADD_DEFINITIONS(-DPROJECT_VERSION="${PROJECT_VERSION}") STRING(REGEX MATCHALL "[0-9]" PROJECT_VERSION_PARTS "${PROJECT_VERSION}") @@ -34,11 +34,46 @@ ENDIF(${CMAKE_GENERATOR} MATCHES ".*Makefiles") SET(CMAKE_DEBUG_POSTFIX "d") +####### Build libraries as shared or static ####### +OPTION( BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON ) + +####### SET RPATH ######### +# When RPATH is activated (supported on most UNIX systems), +# the user doesn't need to change LD_LIBRARY_PATH + +# use, i.e. don't skip the full RPATH for the build tree +SET(CMAKE_SKIP_BUILD_RPATH FALSE) + +# when building, don't use the install RPATH already +# (but later on when installing) +SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) + +# the RPATH to be used when installing +SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib/${PROJECT_PREFIX}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") + +# add the automatically determined parts of the RPATH +# which point to directories outside the build tree to the install RPATH +SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + ####### OUTPUT DIR ####### SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib) +####### INSTALL DIR ####### +# Offer the user the choice of overriding the installation directories +set(INSTALL_LIB_DIR lib/${PROJECT_PREFIX}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} CACHE PATH "Installation directory for libraries") +set(INSTALL_BIN_DIR bin CACHE PATH "Installation directory for executables") +set(INSTALL_INCLUDE_DIR include/${PROJECT_PREFIX}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} CACHE PATH + "Installation directory for header files") +if(WIN32 AND NOT CYGWIN) + set(DEF_INSTALL_CMAKE_DIR CMake) +else() + set(DEF_INSTALL_CMAKE_DIR lib/${PROJECT_PREFIX}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}) +endif() +set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH + "Installation directory for CMake files") + ####### DEPENDENCIES ####### FIND_PACKAGE(OpenCV REQUIRED) # tested on 2.3.1 FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtNetwork) # tested on Qt4.7 @@ -63,6 +98,7 @@ IF(APPLE AND BUILD_AS_BUNDLE) ENDIF(APPLE AND BUILD_AS_BUNDLE) ####### SOURCES (Projects) ####### +ADD_SUBDIRECTORY( src ) ADD_SUBDIRECTORY( app ) ADD_SUBDIRECTORY( example ) ADD_SUBDIRECTORY( tcpClient ) @@ -82,6 +118,36 @@ CONFIGURE_FILE( ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") +####################### +# Setup FindObjectConfig.cmake +####################### +# Create the FindObjectConfig.cmake and FindObjectConfigVersion files +file(RELATIVE_PATH REL_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_CMAKE_DIR}" "${CMAKE_INSTALL_PREFIX}/${INSTALL_INCLUDE_DIR}") +file(RELATIVE_PATH REL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_CMAKE_DIR}" "${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR}") + +# ... for the build tree +set(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/include") +set(CONF_LIB_DIR "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}") +configure_file(FindObjectConfig.cmake.in + "${PROJECT_BINARY_DIR}/FindObjectConfig.cmake" @ONLY) + +# ... for the install tree +set(CONF_INCLUDE_DIRS "\${FindObject_CMAKE_DIR}/${REL_INCLUDE_DIR}") +set(CONF_LIB_DIR "\${FindObject_CMAKE_DIR}/${REL_LIB_DIR}") +configure_file(FindObjectConfig.cmake.in + "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindObjectConfig.cmake" @ONLY) + +# ... for both +configure_file(FindObjectConfigVersion.cmake.in + "${PROJECT_BINARY_DIR}/FindObjectConfigVersion.cmake" @ONLY) + +# Install the FindObjectConfig.cmake and FindObjectConfigVersion.cmake +install(FILES + "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindObjectConfig.cmake" + "${PROJECT_BINARY_DIR}/FindObjectConfigVersion.cmake" + DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT devel) +#### + ####################### # CPACK (Packaging) ####################### diff --git a/FindObjectConfig.cmake.in b/FindObjectConfig.cmake.in new file mode 100644 index 00000000..f9d908e5 --- /dev/null +++ b/FindObjectConfig.cmake.in @@ -0,0 +1,10 @@ +# - Config file for the FindObject package +# It defines the following variables +# FindObject_INCLUDE_DIRS - include directories for FindObject +# FindObject_LIBRARIES - libraries to link against + +# Compute paths +get_filename_component(FindObject_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +set(FindObject_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@") + +find_library(FindObject_LIBRARIES NAMES find_object NO_DEFAULT_PATH HINTS "@CONF_LIB_DIR@") \ No newline at end of file diff --git a/FindObjectConfigVersion.cmake.in b/FindObjectConfigVersion.cmake.in new file mode 100644 index 00000000..22ffec0f --- /dev/null +++ b/FindObjectConfigVersion.cmake.in @@ -0,0 +1,11 @@ +set(PACKAGE_VERSION "@PROJECT_VERSION@") + +# Check whether the requested PACKAGE_FIND_VERSION is compatible +if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 7f73f477..e8de3fc0 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -1,74 +1,8 @@ - -### Qt Gui stuff ### -SET(headers_ui - ../src/MainWindow.h - ../src/AddObjectDialog.h - ../src/ObjWidget.h - ../src/FindObject.h - ../src/Camera.h - ../src/CameraTcpClient.h - ../src/ParametersToolBox.h - ../src/AboutDialog.h - ../src/TcpServer.h - ../src/RectItem.h - ../src/utilite/UPlot.h - ../src/rtabmap/PdfPlot.h -) - -SET(uis - ../src/ui/mainWindow.ui - ../src/ui/addObjectDialog.ui - ../src/ui/aboutDialog.ui -) - -SET(qrc - ../src/resources.qrc -) - -# generate rules for building source files from the resources -QT4_ADD_RESOURCES(srcs_qrc ${qrc}) - -#Generate .h files from the .ui files -QT4_WRAP_UI(moc_uis ${uis}) - -#This will generate moc_* for Qt -QT4_WRAP_CPP(moc_srcs ${headers_ui}) -### Qt Gui stuff end### - - -SET(SRC_FILES - ./main.cpp - ../src/MainWindow.cpp - ../src/AddObjectDialog.cpp - ../src/KeypointItem.cpp - ../src/RectItem.cpp - ../src/QtOpenCV.cpp - ../src/Camera.cpp - ../src/CameraTcpClient.cpp - ../src/ParametersToolBox.cpp - ../src/Settings.cpp - ../src/ObjWidget.cpp - ../src/FindObject.cpp - ../src/AboutDialog.cpp - ../src/TcpServer.cpp - ../src/Vocabulary.cpp - ../src/utilite/ULogger.cpp - ../src/utilite/UPlot.cpp - ../src/utilite/UDirectory.cpp - ../src/utilite/UFile.cpp - ../src/utilite/UConversion.cpp - ../src/rtabmap/PdfPlot.cpp - ${moc_srcs} - ${moc_uis} - ${srcs_qrc} -) - SET(INCLUDE_DIRS - ${CMAKE_CURRENT_SOURCE_DIR}/../src + ${CMAKE_CURRENT_SOURCE_DIR}/../include ${CMAKE_CURRENT_SOURCE_DIR} ${OpenCV_INCLUDE_DIRS} - ${CMAKE_CURRENT_BINARY_DIR} # for qt ui generated in binary dir ) INCLUDE(${QT_USE_FILE}) @@ -106,30 +40,30 @@ ENDIF(WIN32) # create an executable file IF(APPLE AND BUILD_AS_BUNDLE) - ADD_EXECUTABLE(find_object MACOSX_BUNDLE ${SRC_FILES}) + ADD_EXECUTABLE(find_object_app MACOSX_BUNDLE main.cpp) ELSEIF(MINGW) - ADD_EXECUTABLE(find_object WIN32 ${SRC_FILES}) + ADD_EXECUTABLE(find_object_app WIN32 main.cpp) ELSE() - ADD_EXECUTABLE(find_object ${SRC_FILES}) + ADD_EXECUTABLE(find_object_app main.cpp) ENDIF() # Linking with Qt libraries -TARGET_LINK_LIBRARIES(find_object ${LIBRARIES}) +TARGET_LINK_LIBRARIES(find_object_app find_object ${LIBRARIES}) IF(APPLE AND BUILD_AS_BUNDLE) - SET_TARGET_PROPERTIES(find_object PROPERTIES + SET_TARGET_PROPERTIES(find_object_app PROPERTIES OUTPUT_NAME ${CMAKE_BUNDLE_NAME}) ELSEIF(WIN32) - SET_TARGET_PROPERTIES(find_object PROPERTIES + SET_TARGET_PROPERTIES(find_object_app PROPERTIES OUTPUT_NAME ${PROJECT_NAME}) ELSE() - SET_TARGET_PROPERTIES(find_object PROPERTIES + SET_TARGET_PROPERTIES(find_object_app PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}) ENDIF() #--------------------------- # Installation stuff #--------------------------- -INSTALL(TARGETS find_object +INSTALL(TARGETS find_object_app RUNTIME DESTINATION bin COMPONENT runtime BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) diff --git a/app/main.cpp b/app/main.cpp index 72f8b14f..b4882f35 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -1,12 +1,12 @@ #include #include #include -#include "MainWindow.h" -#include "Settings.h" -#include "FindObject.h" -#include "Camera.h" -#include "TcpServer.h" -#include "utilite/ULogger.h" +#include "find_object/MainWindow.h" +#include "find_object/Settings.h" +#include "find_object/FindObject.h" +#include "find_object/Camera.h" +#include "find_object/TcpServer.h" +#include "find_object/utilite/ULogger.h" bool running = true; diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt index c38f8eb0..f2149496 100644 --- a/example/CMakeLists.txt +++ b/example/CMakeLists.txt @@ -1,32 +1,12 @@ -### Qt Gui stuff ### -SET(headers_ui - ../src/ObjWidget.h - ../src/Camera.h - ../src/CameraTcpClient.h -) -#This will generate moc_* for Qt -QT4_WRAP_CPP(moc_srcs ${headers_ui}) -### Qt Gui stuff end### SET(SRC_FILES main.cpp - ../src/ObjWidget.cpp - ../src/KeypointItem.cpp - ../src/QtOpenCV.cpp - ../src/Settings.cpp - ../src/Camera.cpp - ../src/CameraTcpClient.cpp - ../src/utilite/UDirectory.cpp - ../src/utilite/UFile.cpp - ../src/utilite/ULogger.cpp - ../src/utilite/UConversion.cpp - ${moc_srcs} ) SET(INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} ${OpenCV_INCLUDE_DIRS} - ${CMAKE_CURRENT_SOURCE_DIR}/../src + ${CMAKE_CURRENT_SOURCE_DIR}/../include ) INCLUDE(${QT_USE_FILE}) @@ -42,7 +22,7 @@ INCLUDE_DIRECTORIES(${INCLUDE_DIRS}) # Add binary called "example" that is built from the source file "main.cpp". # The extension is automatically found. ADD_EXECUTABLE(example ${SRC_FILES}) -TARGET_LINK_LIBRARIES(example ${LIBRARIES}) +TARGET_LINK_LIBRARIES(example find_object ${LIBRARIES}) SET_TARGET_PROPERTIES( example PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-example) diff --git a/example/main.cpp b/example/main.cpp index ce33f1c4..36ec3a5c 100644 --- a/example/main.cpp +++ b/example/main.cpp @@ -19,9 +19,9 @@ #include #include // for homography -// From this project (see src folder) -#include "ObjWidget.h" -#include "QtOpenCV.h" +// From this project +#include "find_object/ObjWidget.h" +#include "find_object/QtOpenCV.h" void showUsage() { diff --git a/imagesTcpServer/CMakeLists.txt b/imagesTcpServer/CMakeLists.txt index 16ddc522..15321991 100644 --- a/imagesTcpServer/CMakeLists.txt +++ b/imagesTcpServer/CMakeLists.txt @@ -1,7 +1,5 @@ ### Qt Gui stuff ### SET(headers_ui - ../src/Camera.h - ../src/CameraTcpClient.h ImagesTcpServer.h ) #This will generate moc_* for Qt @@ -9,23 +7,15 @@ QT4_WRAP_CPP(moc_srcs ${headers_ui}) ### Qt Gui stuff end### SET(SRC_FILES - ../src/Camera.cpp - ../src/CameraTcpClient.cpp - ../src/Settings.cpp - ../src/QtOpenCV.cpp - ../src/utilite/UDirectory.cpp - ../src/utilite/UFile.cpp - ../src/utilite/ULogger.cpp - ../src/utilite/UConversion.cpp ImagesTcpServer.cpp main.cpp ${moc_srcs} ) SET(INCLUDE_DIRS + ${CMAKE_CURRENT_SOURCE_DIR}/../include ${CMAKE_CURRENT_SOURCE_DIR} ${OpenCV_INCLUDE_DIRS} - ../src ) INCLUDE(${QT_USE_FILE}) @@ -41,7 +31,7 @@ INCLUDE_DIRECTORIES(${INCLUDE_DIRS}) # Add binary called "example" that is built from the source file "main.cpp". # The extension is automatically found. ADD_EXECUTABLE(imagesTcpServer ${SRC_FILES}) -TARGET_LINK_LIBRARIES(imagesTcpServer ${LIBRARIES}) +TARGET_LINK_LIBRARIES(imagesTcpServer find_object ${LIBRARIES}) SET_TARGET_PROPERTIES( imagesTcpServer PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-imagesTcpServer) diff --git a/imagesTcpServer/ImagesTcpServer.cpp b/imagesTcpServer/ImagesTcpServer.cpp index 70884e4d..f56264ec 100644 --- a/imagesTcpServer/ImagesTcpServer.cpp +++ b/imagesTcpServer/ImagesTcpServer.cpp @@ -5,13 +5,14 @@ * Author: mathieu */ +#include "find_object/Settings.h" +#include "find_object/QtOpenCV.h" + #include "ImagesTcpServer.h" #include #include #include -#include "Settings.h" -#include "QtOpenCV.h" ImagesTcpServer::ImagesTcpServer(float hz, const QString & path, QObject * parent) : QTcpServer(parent) diff --git a/imagesTcpServer/ImagesTcpServer.h b/imagesTcpServer/ImagesTcpServer.h index e0c0a246..f66ce4da 100644 --- a/imagesTcpServer/ImagesTcpServer.h +++ b/imagesTcpServer/ImagesTcpServer.h @@ -8,7 +8,7 @@ #ifndef TCPCLIENT_H_ #define TCPCLIENT_H_ -#include "Camera.h" +#include "find_object/Camera.h" #include class ImagesTcpServer : public QTcpServer diff --git a/src/Camera.h b/include/find_object/Camera.h similarity index 82% rename from src/Camera.h rename to include/find_object/Camera.h index 0174f732..425bb837 100644 --- a/src/Camera.h +++ b/include/find_object/Camera.h @@ -5,13 +5,16 @@ #ifndef CAMERA_H_ #define CAMERA_H_ +#include "find_object/FindObjectExp.h" // DLL export/import defines + #include #include #include #include -#include "CameraTcpClient.h" -class Camera : public QObject { +class CameraTcpClient; + +class FINDOBJECT_EXP Camera : public QObject { Q_OBJECT public: Camera(QObject * parent = 0); @@ -42,7 +45,7 @@ private: QTimer cameraTimer_; QList images_; unsigned int currentImageIndex_; - CameraTcpClient cameraTcpClient_; + CameraTcpClient * cameraTcpClient_; }; #endif /* CAMERA_H_ */ diff --git a/src/FindObject.h b/include/find_object/FindObject.h similarity index 96% rename from src/FindObject.h rename to include/find_object/FindObject.h index 715be113..25f81ab4 100644 --- a/src/FindObject.h +++ b/include/find_object/FindObject.h @@ -8,6 +8,8 @@ #ifndef FINDOBJECT_H_ #define FINDOBJECT_H_ +#include "find_object/FindObjectExp.h" // DLL export/import defines + #include #include #include @@ -24,7 +26,7 @@ class Vocabulary; class KeypointDetector; class DescriptorExtractor; -class FindObject : public QObject +class FINDOBJECT_EXP FindObject : public QObject { Q_OBJECT; diff --git a/include/find_object/FindObjectExp.h b/include/find_object/FindObjectExp.h new file mode 100644 index 00000000..8a40a76f --- /dev/null +++ b/include/find_object/FindObjectExp.h @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2010-2011, Mathieu Labbe and IntRoLab - Universite de Sherbrooke + * + * This file is part of RTAB-Map. + * + * RTAB-Map is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RTAB-Map is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RTAB-Map. If not, see . + */ + +#ifndef FINDOBJECTEXP_H +#define FINDOBJECTEXP_H + +#if defined(_WIN32) + #if defined(find_object_EXPORTS) + #define FINDOBJECT_EXP __declspec( dllexport ) + #else + #define FINDOBJECT_EXP __declspec( dllimport ) + #endif +#else + #define FINDOBJECT_EXP +#endif + +#endif // RTABMAPEXP_H diff --git a/src/MainWindow.h b/include/find_object/MainWindow.h similarity index 95% rename from src/MainWindow.h rename to include/find_object/MainWindow.h index 16ad51ff..9864a75b 100644 --- a/src/MainWindow.h +++ b/include/find_object/MainWindow.h @@ -5,6 +5,8 @@ #ifndef MAINWINDOW_H_ #define MAINWINDOW_H_ +#include "find_object/FindObjectExp.h" // DLL export/import defines + #include #include #include @@ -31,7 +33,7 @@ namespace rtabmap class PdfPlotCurve; } -class MainWindow : public QMainWindow +class FINDOBJECT_EXP MainWindow : public QMainWindow { Q_OBJECT diff --git a/src/ObjWidget.h b/include/find_object/ObjWidget.h similarity index 96% rename from src/ObjWidget.h rename to include/find_object/ObjWidget.h index c77d1674..384052af 100644 --- a/src/ObjWidget.h +++ b/include/find_object/ObjWidget.h @@ -5,6 +5,8 @@ #ifndef OBJWIDGET_H_ #define OBJWIDGET_H_ +#include "find_object/FindObjectExp.h" // DLL export/import defines + #include #include #include @@ -19,7 +21,7 @@ class QGraphicsRectItem; class QGraphicsItem; class QLabel; -class ObjWidget : public QWidget +class FINDOBJECT_EXP ObjWidget : public QWidget { Q_OBJECT diff --git a/include/find_object/QtOpenCV.h b/include/find_object/QtOpenCV.h new file mode 100644 index 00000000..b97c7a60 --- /dev/null +++ b/include/find_object/QtOpenCV.h @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2011, Mathieu Labbe - IntRoLab - Universite de Sherbrooke + */ + +#ifndef QTOPENCV_H +#define QTOPENCV_H + +#include "find_object/FindObjectExp.h" // DLL export/import defines + +#include +#include + +// Convert OpenCV matrix to QImage +QImage FINDOBJECT_EXP cvtCvMat2QImage(const cv::Mat & image, bool isBgr = true); + +// Convert QImage to OpenCV matrix +cv::Mat FINDOBJECT_EXP cvtQImage2CvMat(const QImage & image); + +// Convert IplImage to QImage +QImage FINDOBJECT_EXP cvtIplImage2QImage(const IplImage * image); + +// Convert QImage to IplImage +IplImage * FINDOBJECT_EXP cvtQImage2IplImage(const QImage & image); + +#endif // QTOPENCV_H diff --git a/src/Settings.h b/include/find_object/Settings.h similarity index 99% rename from src/Settings.h rename to include/find_object/Settings.h index f229bbdd..27bca6c8 100644 --- a/src/Settings.h +++ b/include/find_object/Settings.h @@ -5,6 +5,8 @@ #ifndef SETTINGS_H_ #define SETTINGS_H_ +#include "find_object/FindObjectExp.h" // DLL export/import defines + #include #include #include @@ -55,7 +57,7 @@ typedef unsigned int uint; Dummy##PREFIX##_##NAME dummy##PREFIX##_##NAME; // MACRO END -class Settings +class FINDOBJECT_EXP Settings { PARAMETER(Camera, 1deviceId, int, 0, "Device ID (default 0)."); PARAMETER(Camera, 2imageWidth, int, 640, "Image width (0 means default width from camera)."); diff --git a/src/TcpServer.h b/include/find_object/TcpServer.h similarity index 80% rename from src/TcpServer.h rename to include/find_object/TcpServer.h index 178628fc..65be488b 100644 --- a/src/TcpServer.h +++ b/include/find_object/TcpServer.h @@ -8,11 +8,13 @@ #ifndef TCPSERVER_H_ #define TCPSERVER_H_ +#include "find_object/FindObjectExp.h" // DLL export/import defines + #include class QNetworkSession; -class TcpServer : public QTcpServer +class FINDOBJECT_EXP TcpServer : public QTcpServer { Q_OBJECT diff --git a/src/utilite/UDestroyer.h b/include/find_object/utilite/UDestroyer.h similarity index 100% rename from src/utilite/UDestroyer.h rename to include/find_object/utilite/UDestroyer.h diff --git a/src/utilite/ULogger.h b/include/find_object/utilite/ULogger.h similarity index 95% rename from src/utilite/ULogger.h rename to include/find_object/utilite/ULogger.h index ff362b43..93943d96 100644 --- a/src/utilite/ULogger.h +++ b/include/find_object/utilite/ULogger.h @@ -20,10 +20,10 @@ #ifndef ULOGGER_H #define ULOGGER_H -//#include "utilite/UtiLiteExp.h" // DLL export/import defines +#include "find_object/FindObjectExp.h" // DLL export/import defines -#include "utilite/UMutex.h" -#include "utilite/UDestroyer.h" +#include "find_object/utilite/UMutex.h" +#include "find_object/utilite/UDestroyer.h" #include #include @@ -190,7 +190,7 @@ * @see UDEBUG(), UINFO(), UWARN(), UERROR(), UFATAL() * */ -class ULogger +class FINDOBJECT_EXP ULogger { public: diff --git a/src/utilite/UMutex.h b/include/find_object/utilite/UMutex.h similarity index 93% rename from src/utilite/UMutex.h rename to include/find_object/utilite/UMutex.h index bc4a088b..bb1fceaf 100644 --- a/src/utilite/UMutex.h +++ b/include/find_object/utilite/UMutex.h @@ -23,7 +23,7 @@ #include #ifdef WIN32 - #include "utilite/UWin32.h" + #include "find_object/utilite/UWin32.h" #else #include #endif diff --git a/src/utilite/UWin32.h b/include/find_object/utilite/UWin32.h similarity index 96% rename from src/utilite/UWin32.h rename to include/find_object/utilite/UWin32.h index 19bb1048..49d02b69 100644 --- a/src/utilite/UWin32.h +++ b/include/find_object/utilite/UWin32.h @@ -9,8 +9,6 @@ #ifndef _U_Win32_ #define _U_Win32_ -#include "utilite/UtiLiteExp.h" - #if !defined(_WINDOWS_) // WIN32 Excludes #ifdef WIN32_LEAN_AND_MEAN diff --git a/src/AddObjectDialog.cpp b/src/AddObjectDialog.cpp index c86388f7..f9d2af14 100644 --- a/src/AddObjectDialog.cpp +++ b/src/AddObjectDialog.cpp @@ -2,15 +2,16 @@ * Copyright (C) 2011, Mathieu Labbe - IntRoLab - Universite de Sherbrooke */ +#include "find_object/Camera.h" +#include "find_object/Settings.h" +#include "find_object/utilite/ULogger.h" +#include "find_object/ObjWidget.h" +#include "find_object/QtOpenCV.h" + #include "AddObjectDialog.h" #include "ui_addObjectDialog.h" -#include "ObjWidget.h" #include "KeypointItem.h" -#include "Camera.h" -#include "QtOpenCV.h" -#include "Settings.h" #include "ObjSignature.h" -#include "utilite/ULogger.h" #include diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..b2ddb76d --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,95 @@ + + +### Qt Gui stuff ### +SET(headers_ui + ../include/${PROJECT_PREFIX}/MainWindow.h + ../include/${PROJECT_PREFIX}/FindObject.h + ../include/${PROJECT_PREFIX}/Camera.h + ../include/${PROJECT_PREFIX}/TcpServer.h + ../include/${PROJECT_PREFIX}/ObjWidget.h + ./AddObjectDialog.h + ./CameraTcpClient.h + ./ParametersToolBox.h + ./AboutDialog.h + ./RectItem.h + ./rtabmap/PdfPlot.h + ./utilite/UPlot.h +) + +SET(uis + ./ui/mainWindow.ui + ./ui/addObjectDialog.ui + ./ui/aboutDialog.ui +) + +SET(qrc + ./resources.qrc +) + +# generate rules for building source files from the resources +QT4_ADD_RESOURCES(srcs_qrc ${qrc}) + +#Generate .h files from the .ui files +QT4_WRAP_UI(moc_uis ${uis}) + +#This will generate moc_* for Qt +QT4_WRAP_CPP(moc_srcs ${headers_ui}) +### Qt Gui stuff end### + + + + +SET(SRC_FILES + ./MainWindow.cpp + ./AddObjectDialog.cpp + ./KeypointItem.cpp + ./RectItem.cpp + ./QtOpenCV.cpp + ./Camera.cpp + ./CameraTcpClient.cpp + ./ParametersToolBox.cpp + ./Settings.cpp + ./ObjWidget.cpp + ./FindObject.cpp + ./AboutDialog.cpp + ./TcpServer.cpp + ./Vocabulary.cpp + ./utilite/ULogger.cpp + ./utilite/UPlot.cpp + ./utilite/UDirectory.cpp + ./utilite/UFile.cpp + ./utilite/UConversion.cpp + ./rtabmap/PdfPlot.cpp + ${moc_srcs} + ${moc_uis} + ${srcs_qrc} +) + +SET(INCLUDE_DIRS + ${CMAKE_CURRENT_SOURCE_DIR}/../include + ${CMAKE_CURRENT_SOURCE_DIR} + ${OpenCV_INCLUDE_DIRS} + ${CMAKE_CURRENT_BINARY_DIR} # for qt ui generated in binary dir +) + +INCLUDE(${QT_USE_FILE}) + +SET(LIBRARIES + ${QT_LIBRARIES} + ${OpenCV_LIBS} +) + +#include files +INCLUDE_DIRECTORIES(${INCLUDE_DIRS}) + +# create a library from the source files +ADD_LIBRARY(find_object ${SRC_FILES}) +# Linking with Qt libraries +TARGET_LINK_LIBRARIES(find_object ${LIBRARIES}) + +INSTALL(TARGETS find_object + RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT runtime + LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT devel + ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" COMPONENT devel) + +install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../include/ DESTINATION "${INSTALL_INCLUDE_DIR}" COMPONENT devel FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE) diff --git a/src/Camera.cpp b/src/Camera.cpp index 9087e77d..c1759a7e 100644 --- a/src/Camera.cpp +++ b/src/Camera.cpp @@ -2,18 +2,21 @@ * Copyright (C) 2011, Mathieu Labbe - IntRoLab - Universite de Sherbrooke */ -#include "Camera.h" +#include "find_object/Camera.h" +#include "find_object/Settings.h" +#include "find_object/utilite/ULogger.h" +#include "find_object/QtOpenCV.h" + #include #include -#include "Settings.h" #include #include "utilite/UDirectory.h" -#include "utilite/ULogger.h" -#include "QtOpenCV.h" +#include "CameraTcpClient.h" Camera::Camera(QObject * parent) : QObject(parent), - currentImageIndex_(0) + currentImageIndex_(0), + cameraTcpClient_(new CameraTcpClient(this)) { qRegisterMetaType("cv::Mat"); connect(&cameraTimer_, SIGNAL(timeout()), this, SLOT(takeImage())); @@ -30,7 +33,7 @@ void Camera::stop() capture_.release(); images_.clear(); currentImageIndex_ = 0; - cameraTcpClient_.close(); + cameraTcpClient_->close(); } void Camera::pause() @@ -92,24 +95,24 @@ void Camera::takeImage() } else { - img = cameraTcpClient_.getImage(); - if(cameraTcpClient_.imagesBuffered() > 0 && Settings::getCamera_9queueSize() == 0) + img = cameraTcpClient_->getImage(); + if(cameraTcpClient_->imagesBuffered() > 0 && Settings::getCamera_9queueSize() == 0) { - UWARN("%d images buffered so far...", cameraTcpClient_.imagesBuffered()); + UWARN("%d images buffered so far...", cameraTcpClient_->imagesBuffered()); } - while(img.empty() && cameraTcpClient_.waitForReadyRead()) + while(img.empty() && cameraTcpClient_->waitForReadyRead()) { - img = cameraTcpClient_.getImage(); + img = cameraTcpClient_->getImage(); } if(img.empty()) { - if(!cameraTcpClient_.waitForConnected()) + if(!cameraTcpClient_->waitForConnected()) { UWARN("Connection is lost, trying to reconnect to server (%s:%d)... (at the rate of the camera: %d ms)", Settings::getCamera_7IP().toStdString().c_str(), Settings::getCamera_8port(), cameraTimer_.interval()); - cameraTcpClient_.connectToHost(Settings::getCamera_7IP(), Settings::getCamera_8port()); + cameraTcpClient_->connectToHost(Settings::getCamera_7IP(), Settings::getCamera_8port()); } } } @@ -143,17 +146,17 @@ void Camera::takeImage() bool Camera::start() { - if(!capture_.isOpened() && images_.empty() && !cameraTcpClient_.isOpen()) + if(!capture_.isOpened() && images_.empty() && !cameraTcpClient_->isOpen()) { if(Settings::getCamera_6useTcpCamera()) { - cameraTcpClient_.connectToHost(Settings::getCamera_7IP(), Settings::getCamera_8port()); - if(!cameraTcpClient_.waitForConnected()) + cameraTcpClient_->connectToHost(Settings::getCamera_7IP(), Settings::getCamera_8port()); + if(!cameraTcpClient_->waitForConnected()) { UWARN("Camera: Cannot connect to server \"%s:%d\"", Settings::getCamera_7IP().toStdString().c_str(), Settings::getCamera_8port()); - cameraTcpClient_.close(); + cameraTcpClient_->close(); } } else @@ -212,7 +215,7 @@ bool Camera::start() } } } - if(!capture_.isOpened() && images_.empty() && !cameraTcpClient_.isOpen()) + if(!capture_.isOpened() && images_.empty() && !cameraTcpClient_->isOpen()) { UERROR("Camera: Failed to open a capture object!"); return false; diff --git a/src/CameraTcpClient.cpp b/src/CameraTcpClient.cpp index 8aa7e033..0f03a51f 100644 --- a/src/CameraTcpClient.cpp +++ b/src/CameraTcpClient.cpp @@ -5,9 +5,10 @@ * Author: mathieu */ +#include "find_object/Settings.h" +#include "find_object/utilite/ULogger.h" + #include "CameraTcpClient.h" -#include "Settings.h" -#include "utilite/ULogger.h" CameraTcpClient::CameraTcpClient(QObject *parent) : QTcpSocket(parent), diff --git a/src/FindObject.cpp b/src/FindObject.cpp index f6868e97..d8f97210 100644 --- a/src/FindObject.cpp +++ b/src/FindObject.cpp @@ -5,11 +5,12 @@ * Author: mathieu */ -#include "FindObject.h" +#include "find_object/FindObject.h" +#include "find_object/Settings.h" +#include "find_object/utilite/ULogger.h" + #include "ObjSignature.h" -#include "Settings.h" #include "utilite/UDirectory.h" -#include "utilite/ULogger.h" #include "Vocabulary.h" #include diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 115bb6d4..f3af9085 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -2,21 +2,23 @@ * Copyright (C) 2011, Mathieu Labbe - IntRoLab - Universite de Sherbrooke */ -#include "MainWindow.h" +#include "find_object/MainWindow.h" +#include "find_object/Camera.h" +#include "find_object/Settings.h" +#include "find_object/TcpServer.h" +#include "find_object/FindObject.h" +#include "find_object/utilite/ULogger.h" +#include "find_object/ObjWidget.h" +#include "find_object/QtOpenCV.h" + #include "AddObjectDialog.h" #include "ui_mainWindow.h" -#include "QtOpenCV.h" #include "KeypointItem.h" #include "RectItem.h" -#include "ObjWidget.h" -#include "Camera.h" -#include "Settings.h" #include "ParametersToolBox.h" #include "AboutDialog.h" -#include "TcpServer.h" #include "rtabmap/PdfPlot.h" #include "Vocabulary.h" -#include "FindObject.h" #include "ObjSignature.h" #include @@ -44,7 +46,6 @@ #include #include "utilite/UDirectory.h" -#include "utilite/ULogger.h" // Camera ownership transferred MainWindow::MainWindow(FindObject * findObject, Camera * camera, QWidget * parent) : diff --git a/src/ObjWidget.cpp b/src/ObjWidget.cpp index 1fbdadf9..f7f7f886 100644 --- a/src/ObjWidget.cpp +++ b/src/ObjWidget.cpp @@ -2,11 +2,12 @@ * Copyright (C) 2011, Mathieu Labbe - IntRoLab - Universite de Sherbrooke */ -#include "ObjWidget.h" +#include "find_object/Settings.h" +#include "find_object/utilite/ULogger.h" +#include "find_object/ObjWidget.h" +#include "find_object/QtOpenCV.h" + #include "KeypointItem.h" -#include "QtOpenCV.h" -#include "Settings.h" -#include "utilite/ULogger.h" #include diff --git a/src/ParametersToolBox.cpp b/src/ParametersToolBox.cpp index a44df3ae..9d0bf747 100644 --- a/src/ParametersToolBox.cpp +++ b/src/ParametersToolBox.cpp @@ -2,8 +2,9 @@ * Copyright (C) 2011, Mathieu Labbe - IntRoLab - Universite de Sherbrooke */ +#include "find_object/Settings.h" + #include "ParametersToolBox.h" -#include "Settings.h" #include #include #include diff --git a/src/QtOpenCV.cpp b/src/QtOpenCV.cpp index 1f275b20..f0a041c8 100644 --- a/src/QtOpenCV.cpp +++ b/src/QtOpenCV.cpp @@ -2,7 +2,7 @@ * Copyright (C) 2011, Mathieu Labbe - IntRoLab - Universite de Sherbrooke */ -#include "QtOpenCV.h" +#include "find_object/QtOpenCV.h" #include #include diff --git a/src/QtOpenCV.h b/src/QtOpenCV.h deleted file mode 100644 index 4dfee64b..00000000 --- a/src/QtOpenCV.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (C) 2011, Mathieu Labbe - IntRoLab - Universite de Sherbrooke - */ - -#ifndef QTOPENCV_H -#define QTOPENCV_H - -#include -#include - -// Convert OpenCV matrix to QImage -QImage cvtCvMat2QImage(const cv::Mat & image, bool isBgr = true); - -// Convert QImage to OpenCV matrix -cv::Mat cvtQImage2CvMat(const QImage & image); - -// Convert IplImage to QImage -QImage cvtIplImage2QImage(const IplImage * image); - -// Convert QImage to IplImage -IplImage * cvtQImage2IplImage(const QImage & image); - -#endif // QTOPENCV_H diff --git a/src/Settings.cpp b/src/Settings.cpp index 1ce2b61c..43a95a44 100644 --- a/src/Settings.cpp +++ b/src/Settings.cpp @@ -2,9 +2,10 @@ * Copyright (C) 2011, Mathieu Labbe - IntRoLab - Universite de Sherbrooke */ -#include "Settings.h" -#include "Camera.h" -#include "utilite/ULogger.h" +#include "find_object/Camera.h" +#include "find_object/Settings.h" +#include "find_object/utilite/ULogger.h" + #include #include #include diff --git a/src/TcpServer.cpp b/src/TcpServer.cpp index dcb8fb03..4a960e8d 100644 --- a/src/TcpServer.cpp +++ b/src/TcpServer.cpp @@ -5,8 +5,8 @@ * Author: mathieu */ -#include "TcpServer.h" -#include "utilite/ULogger.h" +#include "find_object/TcpServer.h" +#include "find_object/utilite/ULogger.h" #include #include diff --git a/src/Vocabulary.cpp b/src/Vocabulary.cpp index 4baf3a79..b6032c60 100644 --- a/src/Vocabulary.cpp +++ b/src/Vocabulary.cpp @@ -5,8 +5,9 @@ * Author: mathieu */ +#include "find_object/Settings.h" + #include "Vocabulary.h" -#include "Settings.h" #include #include diff --git a/src/ui/addObjectDialog.ui b/src/ui/addObjectDialog.ui index cdf71829..923e3b02 100644 --- a/src/ui/addObjectDialog.ui +++ b/src/ui/addObjectDialog.ui @@ -100,7 +100,7 @@ ObjWidget QWidget -
ObjWidget.h
+
find_object/ObjWidget.h
1
diff --git a/src/ui/mainWindow.ui b/src/ui/mainWindow.ui index 2d51cdbf..fe397987 100644 --- a/src/ui/mainWindow.ui +++ b/src/ui/mainWindow.ui @@ -775,7 +775,7 @@ ObjWidget QWidget -
ObjWidget.h
+
find_object/ObjWidget.h
1
diff --git a/src/utilite/ULogger.cpp b/src/utilite/ULogger.cpp index 009377c9..06fb2981 100644 --- a/src/utilite/ULogger.cpp +++ b/src/utilite/ULogger.cpp @@ -17,7 +17,8 @@ * along with this program. If not, see . */ -#include "utilite/ULogger.h" +#include "find_object/utilite/ULogger.h" + #include "utilite/UConversion.h" #include "utilite/UFile.h" #include "utilite/UStl.h"