diff --git a/CMakeLists.txt b/CMakeLists.txt index 43006ce..75b9cd4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,9 +9,15 @@ set(CPACK_PACKAGE_NAME "OpenBR") set(CPACK_PACKAGE_VENDOR "OpenBiometrics") set(CPACK_PACKAGE_DESCRIPTION "Open Source Biometric Recognition") set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME}) -set(CPACK_PACKAGE_VERSION_MAJOR 0) -set(CPACK_PACKAGE_VERSION_MINOR 6) -set(CPACK_PACKAGE_VERSION_PATCH 0) +if(NOT DEFINED CPACK_PACKAGE_VERSION_MAJOR) + set(CPACK_PACKAGE_VERSION_MAJOR 0) +endif() +if(NOT DEFINED CPACK_PACKAGE_VERSION_MINOR) + set(CPACK_PACKAGE_VERSION_MINOR 6) +endif() +if(NOT DEFINED CPACK_PACKAGE_VERSION_PATCH) + set(CPACK_PACKAGE_VERSION_PATCH 0) +endif() set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt") set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") @@ -67,20 +73,10 @@ if(${BR_EMBEDDED}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBR_EMBEDDED") endif() -option(BR_DISTRIBUTED "Target distributed memory models") -if(${BR_DISTRIBUTED}) - find_package(MPI REQUIRED) - set(CMAKE_CXX_COMPILE_FLAGS ${CMAKE_CXX_COMPILE_FLAGS} ${MPI_COMPILE_FLAGS}) - set(CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS} ${MPI_LINK_FLAGS}) - include_directories(MPI_INCLUDE_PATH) - set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -DBR_DISTRIBUTED) - set(BR_THIRDPARTY_LIBS ${BR_THIRDPARTY_LIBS} ${MPI_LIBRARY}) -endif() - # Find Qt set(QT_DEPENDENCIES Concurrent Core) option(BR_EMBEDDED "Limit software dependencies") -if(NOT ${BR_EMBEDDED}) +if(NOT BR_EMBEDDED) set(QT_DEPENDENCIES ${QT_DEPENDENCIES} Gui Network Sql Widgets Xml) endif() foreach(QT_DEPENDENCY ${QT_DEPENDENCIES}) @@ -90,8 +86,8 @@ set(BR_THIRDPARTY_LIBS ${BR_THIRDPARTY_LIBS} ${Qt5Core_QTMAIN_LIBRARIES}) # Find OpenCV find_package(OpenCV 2.4.5 REQUIRED) -set(OPENCV_DEPENDENCIES opencv_calib3d opencv_core opencv_features2d opencv_flann opencv_gpu opencv_highgui opencv_imgproc opencv_ml opencv_nonfree opencv_objdetect opencv_photo opencv_video opencv_videostab opencv_superres opencv_stitching opencv_ocl opencv_legacy opencv_contrib) -set(BR_THIRDPARTY_LIBS ${BR_THIRDPARTY_LIBS} ${OpenCV_LIBS}) +set(OPENCV_DEPENDENCIES opencv_core opencv_highgui opencv_imgproc opencv_ml opencv_objdetect) +set(BR_THIRDPARTY_LIBS ${BR_THIRDPARTY_LIBS} ${OPENCV_DEPENDENCIES}) # Find Alphanum find_package(Alphanum REQUIRED) @@ -142,7 +138,6 @@ endif() # Look for extensions to OpenBR set(BR_THIRDPARTY_PLUGINS_DIR CACHE PATH "") set(BR_THIRDPARTY_APPS_DIR CACHE PATH "") -set(BR_THIRDPARTY_DIR CACHE PATH "") mark_as_advanced(BR_THIRDPARTY_PLUGINS_DIR) mark_as_advanced(BR_THIRDPARTY_APPS_DIR) @@ -156,9 +151,6 @@ if(BR_THIRDPARTY_DIR) if(EXISTS "${BR_THIRDPARTY_DIR}/app") set(BR_THIRDPARTY_APPS_DIR ${BR_THIRDPARTY_APPS_DIR} "${BR_THIRDPARTY_DIR}/app") endif() - if (EXISTS "${BR_THIRDPARTY_DIR}/share") - install(DIRECTORY ${BR_THIRDPARTY_DIR}/share DESTINATION .) - endif() else() set(BR_THIRDPARTY_DIR "" CACHE PATH "Path to proprietary software") mark_as_advanced(BR_THIRDPARTY_DIR) @@ -177,9 +169,12 @@ foreach(DIR ${BR_THIRDPARTY_APPS_DIR}) endforeach() # Install -install(FILES LICENSE.txt README.md DESTINATION share/openbr) -install(DIRECTORY share DESTINATION .) -install(DIRECTORY ${BR_THIRDPARTY_SHARE} DESTINATION share) +option(BR_INSTALL_SHARE "Install share/openbr files." ON) +if(${BR_INSTALL_SHARE}) + install(FILES LICENSE.txt README.md DESTINATION share/openbr) + install(DIRECTORY share DESTINATION .) + install(DIRECTORY ${BR_THIRDPARTY_SHARE} DESTINATION share) +endif() # install brpy option(BR_INSTALL_BRPY "Install brpy, the Python wrapper to the C API (requires Python)") @@ -190,29 +185,29 @@ if(${BR_INSTALL_BRPY}) endif() # Package -if (NOT BR_PACKAGE_THIRDPARTY) -set(CPACK_PACKAGE_EXECUTABLES "OpenBR" "OpenBR") -set(CPACK_CREATE_DESKTOP_LINKS "OpenBR") -if(CMAKE_HOST_WIN32) - set(CPACK_NSIS_MODIFY_PATH ON) - set(CPACK_NSIS_MUI_ICON ${NATIVE_ICON}) - set(CPACK_NSIS_MUI_UNIICON ${NATIVE_ICON}) - set(CPACK_NSIS_MENU_LINKS "doc/html/index.html" "Documentation") - if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") - set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") +if(NOT BR_PACKAGE_THIRDPARTY) + set(CPACK_PACKAGE_EXECUTABLES "OpenBR" "OpenBR") + set(CPACK_CREATE_DESKTOP_LINKS "OpenBR") + if(CMAKE_HOST_WIN32) + set(CPACK_NSIS_MODIFY_PATH ON) + set(CPACK_NSIS_MUI_ICON ${NATIVE_ICON}) + set(CPACK_NSIS_MUI_UNIICON ${NATIVE_ICON}) + set(CPACK_NSIS_MENU_LINKS "doc/html/index.html" "Documentation") + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") + endif() + set(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\br-gui.exe") + elseif(CMAKE_HOST_APPLE) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/README.md" "README.txt" COPYONLY) + set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") + set(CPACK_BUNDLE_NAME ${CPACK_PACKAGE_NAME}) + set(CPACK_BUNDLE_ICON ${NATIVE_ICON}) + set(CPACK_BUNDLE_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist) + set(CPACK_BUNDLE_STARTUP_COMMAND ${BR_SHARE_DIR}/bundle.sh) + configure_file(${BR_SHARE_DIR}/Info.plist.in Info.plist) + else() + set(CPACK_DEBIAN_PACKAGE_MAINTAINER "josh.klontz@gmail.com") endif() - set(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\br-gui.exe") -elseif(CMAKE_HOST_APPLE) - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/README.md" "README.txt" COPYONLY) - set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}/README.txt") - set(CPACK_BUNDLE_NAME ${CPACK_PACKAGE_NAME}) - set(CPACK_BUNDLE_ICON ${NATIVE_ICON}) - set(CPACK_BUNDLE_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist) - set(CPACK_BUNDLE_STARTUP_COMMAND ${BR_SHARE_DIR}/bundle.sh) - configure_file(${BR_SHARE_DIR}/Info.plist.in Info.plist) -else() - set(CPACK_DEBIAN_PACKAGE_MAINTAINER "josh.klontz@gmail.com") -endif() -include(CPack) + include(CPack) endif() diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 8230427..751cb5f 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -1,12 +1,12 @@ # Build the command line interface add_subdirectory(br) -if (NOT BR_PACKAGE_THIRDPARTY) -# Build examples/tests -add_subdirectory(examples) +if(NOT BR_PACKAGE_THIRDPARTY) + if(NOT BR_EMBEDDED) + # Build examples/tests + add_subdirectory(examples) -# Build additional OpenBR utilities -if(NOT ${BR_EMBEDDED}) - add_subdirectory(br-gui) -endif() + # Build additional OpenBR utilities + add_subdirectory(br-gui) + endif() endif() diff --git a/openbr/CMakeLists.txt b/openbr/CMakeLists.txt index a4c6a2c..a585c90 100644 --- a/openbr/CMakeLists.txt +++ b/openbr/CMakeLists.txt @@ -2,19 +2,26 @@ configure_file(${BR_SHARE_DIR}/version.h.in version.h) include_directories(${CMAKE_CURRENT_BINARY_DIR}) -# Janus API -include_directories(janus/include) -install(DIRECTORY janus/include DESTINATION .) -set(BR_JANUS janus/src/opencv_io/opencv_io.cpp) -add_definitions(-DJANUS_LIBRARY) - # Collect source files -aux_source_directory(. SRC) +set(SRC openbr.cpp + openbr_plugin.cpp + universal_template.cpp) aux_source_directory(core BR_CORE) include(plugins/plugins.cmake) +# Janus API +option(BR_WITH_JANUS "Build IARPA Janus related applications." ON) +if(BR_WITH_JANUS) + include_directories(janus/include) + install(DIRECTORY janus/include DESTINATION .) + set(BR_JANUS janus.cpp + janus_io.cpp + janus/src/opencv_io/opencv_io.cpp) + add_definitions(-DJANUS_LIBRARY) +endif() + # Optional GUI module -if(NOT ${BR_EMBEDDED}) +if(NOT BR_EMBEDDED) aux_source_directory(gui BR_GUI) qt5_add_resources(BR_ICONS ../share/openbr/icons.qrc) file(GLOB HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/gui/*.h) @@ -32,14 +39,13 @@ target_link_libraries(openbr ${BR_THIRDPARTY_LIBS}) add_cppcheck(openbr) # Janus implementation -set(BR_WITH_JANUS ON CACHE BOOL "Build IARPA Janus related applications.") -if (BR_WITH_JANUS) -set(JANUS_BUILD_PP5_WRAPPER ${BR_WITH_PP5} CACHE BOOL "Build Janus implementation using PittPatt 5") -set(JANUS_BUILD_DOCS ${BR_BUILD_DOCUMENTATION} CACHE BOOL "Build Janus HTML Doxygen documentation") -mark_as_advanced(JANUS_BUILD_PP5_WRAPPER) -mark_as_advanced(JANUS_BUILD_DOCS) -set(JANUS_IMPLEMENTATION openbr) -add_subdirectory(janus) +if(BR_WITH_JANUS) + set(JANUS_BUILD_PP5_WRAPPER ${BR_WITH_PP5} CACHE BOOL "Build Janus implementation using PittPatt 5") + set(JANUS_BUILD_DOCS ${BR_BUILD_DOCUMENTATION} CACHE BOOL "Build Janus HTML Doxygen documentation") + mark_as_advanced(JANUS_BUILD_PP5_WRAPPER) + mark_as_advanced(JANUS_BUILD_DOCS) + set(JANUS_IMPLEMENTATION openbr) + add_subdirectory(janus) endif() # Install @@ -52,6 +58,9 @@ install(FILES ${HEADERS} DESTINATION include/openbr) include(InstallDependencies) install_compiler_libraries() install_qt_libraries(QT_DEPENDENCIES) -install_qt_imageformats() +if(NOT BR_EMBEDDED) + install_qt_imageformats() +endif() install_qt_misc() install_opencv_libraries(OPENCV_DEPENDENCIES) +install_ffmpeg() diff --git a/openbr/openbr.cpp b/openbr/openbr.cpp index 6d01541..bdce4da 100644 --- a/openbr/openbr.cpp +++ b/openbr/openbr.cpp @@ -305,11 +305,16 @@ const char *br_version() void br_slave_process(const char *baseName) { +#ifndef BR_EMBEDDED WorkerProcess *worker = new WorkerProcess; worker->transform = Globals->algorithm; worker->baseName = baseName; worker->mainLoop(); delete worker; +#else + (void) baseName; + qFatal("br_slave_process not supported in embedded builds!"); +#endif } br_template br_load_img(const char *data, int len) diff --git a/openbr/openbr_plugin.cpp b/openbr/openbr_plugin.cpp index 3979b36..5363863 100644 --- a/openbr/openbr_plugin.cpp +++ b/openbr/openbr_plugin.cpp @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include @@ -47,8 +46,6 @@ using namespace br; using namespace cv; -Q_DECLARE_METATYPE(QLocalSocket::LocalSocketState) - static const QMetaObject *getInterface(const QObject *obj) { const QMetaObject *baseClass = obj->metaObject(); @@ -1277,8 +1274,6 @@ void br::Context::initialize(int &argc, char *argv[], QString sdkPath, bool useG qRegisterMetaType< QList >(); qRegisterMetaType< QList >(); qRegisterMetaType< QList >(); - qRegisterMetaType< QAbstractSocket::SocketState> (); - qRegisterMetaType< QLocalSocket::LocalSocketState> (); Globals = new Context(); Globals->init(File()); diff --git a/openbr/plugins/cmake/eigen3.cmake b/openbr/plugins/cmake/eigen3.cmake index 73646fa..d2dd380 100644 --- a/openbr/plugins/cmake/eigen3.cmake +++ b/openbr/plugins/cmake/eigen3.cmake @@ -2,7 +2,9 @@ set(BR_WITH_EIGEN3 ON CACHE BOOL "Build Eigen3 plugins") if(${BR_WITH_EIGEN3}) find_package(Eigen3 REQUIRED) - install(FILES ${EIGEN3_LICENSE} RENAME Eigen3 DESTINATION share/openbr/licenses) + if(${BR_INSTALL_SHARE}) + install(FILES ${EIGEN3_LICENSE} RENAME Eigen3 DESTINATION share/openbr/licenses) + endif() else() set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/classification/lda.cpp) set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/distance/L1.cpp) diff --git a/openbr/plugins/cmake/network.cmake b/openbr/plugins/cmake/network.cmake index bab3dd2..91f7705 100644 --- a/openbr/plugins/cmake/network.cmake +++ b/openbr/plugins/cmake/network.cmake @@ -1,12 +1,17 @@ -set(BR_WITH_QTNETWORK ON CACHE BOOL "Build with QtNetwork") +option(BR_WITH_QTNETWORK "Build with QtNetwork" ON) if(${BR_WITH_QTNETWORK}) find_package(Qt5Network) find_package(HttpParser) set(QT_DEPENDENCIES ${QT_DEPENDENCIES} Network) set(BR_THIRDPARTY_SRC ${BR_THIRDPARTY_SRC} ${HTTPPARSER_SRC}) - install(FILES ${HTTPPARSER_LICENSE} RENAME http-parser DESTINATION share/openbr/licenses) + if(${BR_INSTALL_SHARE}) + install(FILES ${HTTPPARSER_LICENSE} RENAME http-parser DESTINATION share/openbr/licenses) + endif() else() - set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/format/url.cpp) - set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/format/post.cpp) - set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/gallery/post.cpp) + set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/core/processwrapper.cpp + plugins/io/download.cpp + plugins/format/url.cpp + plugins/format/post.cpp + plugins/gallery/google.cpp + plugins/gallery/post.cpp) endif() diff --git a/openbr/plugins/cmake/opencv.cmake b/openbr/plugins/cmake/opencv.cmake new file mode 100644 index 0000000..e6a0d08 --- /dev/null +++ b/openbr/plugins/cmake/opencv.cmake @@ -0,0 +1,53 @@ +option(BR_WITH_OPENCV_CONTRIB "Build with OpenCV contrib plugins." ON) +if(${BR_WITH_OPENCV_CONTRIB}) + set(BR_THIRDPARTY_LIBS ${BR_THIRDPARTY_LIBS} opencv_contrib) + set(OPENCV_DEPENDENCIES ${OPENCV_DEPENDENCIES} opencv_contrib) +else() + set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/imgproc/heatmap.cpp + plugins/imgproc/shapeaxisratio.cpp) +endif() + +option(BR_WITH_OPENCV_FEATURES2D "Build with OpenCV features2d plugins." ON) +if(${BR_WITH_OPENCV_FEATURES2D}) + set(BR_THIRDPARTY_LIBS ${BR_THIRDPARTY_LIBS} opencv_features2d) + set(OPENCV_DEPENDENCIES ${OPENCV_DEPENDENCIES} opencv_features2d) +else() + set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/distance/keypointmatcher.cpp + plugins/imgproc/keypointdescriptor.cpp + plugins/metadata/keypointdetector.cpp) +endif() + +option(BR_WITH_OPENCV_FLANN "Build with OpenCV flann plugins." ON) +if(${BR_WITH_OPENCV_FLANN}) + set(BR_THIRDPARTY_LIBS ${BR_THIRDPARTY_LIBS} opencv_flann) + set(OPENCV_DEPENDENCIES ${OPENCV_DEPENDENCIES} opencv_flann) +else() + set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/cluster/kmeans.cpp + plugins/cluster/randomcentroids.cpp) +endif() + +option(BR_WITH_OPENCV_NONFREE "Build with OpenCV nonfree plugins." ON) +if(${BR_WITH_OPENCV_NONFREE}) + set(BR_THIRDPARTY_LIBS ${BR_THIRDPARTY_LIBS} opencv_nonfree) + set(OPENCV_DEPENDENCIES ${OPENCV_DEPENDENCIES} opencv_nonfree) +else() + set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/imgproc/custom_sift.cpp + plugins/imgproc/sift.cpp) +endif() + +option(BR_WITH_OPENCV_PHOTO "Build with OpenCV photo plugins." ON) +if(${BR_WITH_OPENCV_PHOTO}) + set(BR_THIRDPARTY_LIBS ${BR_THIRDPARTY_LIBS} opencv_photo) + set(OPENCV_DEPENDENCIES ${OPENCV_DEPENDENCIES} opencv_photo) +else() + set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/imgproc/denoising.cpp + plugins/imgproc/inpaint.cpp) +endif() + +option(BR_WITH_OPENCV_VIDEO "Build with OpenCV video plugins." ON) +if(${BR_WITH_OPENCV_VIDEO}) + set(BR_THIRDPARTY_LIBS ${BR_THIRDPARTY_LIBS} opencv_video) + set(OPENCV_DEPENDENCIES ${OPENCV_DEPENDENCIES} opencv_video) +else() + set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/imgproc/opticalflow.cpp) +endif() diff --git a/openbr/plugins/cmake/stasm4.cmake b/openbr/plugins/cmake/stasm4.cmake index 0ab4181..053b8ff 100644 --- a/openbr/plugins/cmake/stasm4.cmake +++ b/openbr/plugins/cmake/stasm4.cmake @@ -1,4 +1,4 @@ -set(BR_WITH_STASM4 ON CACHE BOOL "Build with Stasm") +option(BR_WITH_STASM4 "Build with Stasm" ON) if(${BR_WITH_STASM4}) find_package(Stasm4 REQUIRED) diff --git a/openbr/plugins/cmake/vbb.cmake b/openbr/plugins/cmake/vbb.cmake index 9466141..92b2711 100644 --- a/openbr/plugins/cmake/vbb.cmake +++ b/openbr/plugins/cmake/vbb.cmake @@ -1,3 +1,3 @@ -if(NOT ${BR_WITH_CVMATIO}) +if(NOT BR_WITH_CVMATIO) set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/gallery/vbb.cpp) endif() diff --git a/openbr/plugins/core/processwrapper.cpp b/openbr/plugins/core/processwrapper.cpp index 5594fc8..59e5304 100644 --- a/openbr/plugins/core/processwrapper.cpp +++ b/openbr/plugins/core/processwrapper.cpp @@ -26,6 +26,8 @@ #include #include +Q_DECLARE_METATYPE(QLocalSocket::LocalSocketState) + using namespace cv; namespace br @@ -39,6 +41,9 @@ public: QThread *basis; CommunicationManager() { + qRegisterMetaType< QAbstractSocket::SocketState> (); + qRegisterMetaType< QLocalSocket::LocalSocketState> (); + timeout_ms = 30000; basis = new QThread; diff --git a/openbr/plugins/imgproc/custom_sift.cpp b/openbr/plugins/imgproc/custom_sift.cpp index 128f2cd..429fa86 100644 --- a/openbr/plugins/imgproc/custom_sift.cpp +++ b/openbr/plugins/imgproc/custom_sift.cpp @@ -105,7 +105,7 @@ #include #include #include -#include +#include using namespace cv; diff --git a/share/openbr/cmake/InstallDependencies.cmake b/share/openbr/cmake/InstallDependencies.cmake index 05d74c3..29eedd3 100644 --- a/share/openbr/cmake/InstallDependencies.cmake +++ b/share/openbr/cmake/InstallDependencies.cmake @@ -116,3 +116,38 @@ function(install_r_runtime) install(DIRECTORY ${R_DIR}/ DESTINATION R) endif() endfunction() + +# FFMPEG +function(install_ffmpeg_help LIB) + if(LIB) + string(REGEX REPLACE "\\.[^.]*$" "" STRIPEXT ${LIB}) + file(GLOB LIBS "${STRIPEXT}.*[^a]") + install(FILES ${LIBS} DESTINATION lib) + endif() +endfunction() + +function(install_ffmpeg) + if(${BR_INSTALL_DEPENDENCIES}) + if(WIN32) + list(GET OpenCV_LIB_DIR 0 cv_lib_stripped) + if(${CMAKE_SIZEOF_VOID_P} MATCHES 8) + set(FFMPEGSUFFIX "_64") + else() + set(FFMPEGSUFFIX "") + endif() + install(FILES ${cv_lib_stripped}/../bin/${BR_INSTALL_DEPENDENCIES_PREFIX}opencv_ffmpeg${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}${FFMPEGSUFFIX}.dll DESTINATION bin) + else() + # find_library(AVCODEC avcodec) + # install_ffmpeg_help(${AVCODEC}) + + # find_library(AVUTIL avutil) + # install_ffmpeg_help(${AVUTIL}) + + # find_library(AVFORMAT avformat) + # install_ffmpeg_help(${AVFORMAT}) + + # find_library(SWSCALE swscale) + # install_ffmpeg_help(${SWSCALE}) + endif() + endif() +endfunction() diff --git a/share/openbr/plotting/plot_utils.R b/share/openbr/plotting/plot_utils.R index 73b1e44..40e684e 100644 --- a/share/openbr/plotting/plot_utils.R +++ b/share/openbr/plotting/plot_utils.R @@ -91,8 +91,8 @@ plotLine <- function(lineData=NULL, options=NULL, flipY=FALSE, geometry="line") else p <- p + scale_y_continuous(labels=if("yLabels" %in% names(options)) eval(parse(text=options$yLabels)) else percent, breaks=if("yBreaks" %in% names(options)) eval(parse(text=options$yBreaks)) else pretty_breaks(n=10)) - if ("xLimits" %in% names(options)) p <- p + xlim(eval(parse(text=options$xLimits))) - if ("yLimits" %in% names(options)) p <- p + ylim(eval(parse(text=options$yLimits))) + if ("xLimits" %in% names(options)) p <- p + coord_cartesian(xlim=eval(parse(text=options$xLimits))) + if ("yLimits" %in% names(options)) p <- p + coord_cartesian(ylim=eval(parse(text=options$yLimits))) p <- p + theme(legend.title = element_text(size = textSize), legend.text = element_text(size = textSize), plot.title = element_text(size = textSize), axis.text = element_text(size = textSize), axis.title.x = element_text(size = textSize), axis.title.y = element_text(size = textSize), legend.position=if("legendPosition" %in% names(options)) eval(parse(text=options$legendPosition)) else "bottom", legend.background = element_rect(fill = 'white'), panel.grid.major = element_line(colour = "gray"), panel.grid.minor = element_line(colour = "gray", linetype = "dashed")) p <- p + guides(col=guide_legend(ncol=ncol)) return(p) @@ -240,8 +240,8 @@ summarySE <- function(data=NULL, measurevar, groupvars=NULL, na.rm=FALSE, conf.i ciMult <- qt(conf.interval/2 + .5, datac$N-1) datac$ci <- datac$se * ciMult - datac$upper <- if(datac[, measurevar] + datac$ci < 1) (datac[, measurevar] + datac$ci) else 1 - datac$lower <- if(datac[, measurevar] - datac$ci > 0) (datac[, measurevar] - datac$ci) else 0 + datac$upper <- ifelse(datac[,measurevar] + datac$ci < 1, datac[,measurevar] + datac$ci, 1) + datac$lower <- ifelse(datac[,measurevar] - datac$ci > 0, datac[,measurevar] - datac$ci, 0) return(datac) }