added OpenGL support to Gtk realization of highgui

pull/13383/head
Vladislav Vinogradov 14 years ago
parent fb2fad52a2
commit 2a4fb155e1
  1. 138
      CMakeLists.txt
  2. 9
      modules/highgui/src/precomp.hpp
  3. 106
      modules/highgui/src/window.cpp
  4. 1222
      modules/highgui/src/window_gtk.cpp
  5. 38
      samples/cpp/point_cloud.cpp
  6. 4
      samples/gpu/highgui_gpu.cpp

@ -37,9 +37,9 @@ endif(NOT CMAKE_TOOLCHAIN_FILE)
# Top level OpenCV project # Top level OpenCV project
# -------------------------------------------------------------- # --------------------------------------------------------------
if(NOT IOS) if(NOT IOS)
cmake_minimum_required(VERSION 2.6.3) cmake_minimum_required(VERSION 2.6.3)
else() else()
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 2.8)
endif() endif()
project(OpenCV) project(OpenCV)
@ -77,9 +77,9 @@ endif()
# Default: dynamic libraries # Default: dynamic libraries
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
if(NOT IOS) if(NOT IOS)
set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)") set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)")
else() else()
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)") set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)")
endif() endif()
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# Include debug info into debug libs? # Include debug info into debug libs?
@ -164,7 +164,7 @@ endif()
if(WIN32 AND NOT BUILD_SHARED_LIBS) if(WIN32 AND NOT BUILD_SHARED_LIBS)
option (BUILD_WITH_STATIC_CRT "Enables use of staticaly linked CRT" ON) option (BUILD_WITH_STATIC_CRT "Enables use of staticaly linked CRT" ON)
endif() endif()
if(MSVC) if(MSVC)
if(BUILD_WITH_STATIC_CRT) if(BUILD_WITH_STATIC_CRT)
foreach(flag_var foreach(flag_var
@ -179,7 +179,7 @@ if(MSVC)
string(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${${flag_var}}") string(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${${flag_var}}")
endif() endif()
endforeach(flag_var) endforeach(flag_var)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcrtd.lib") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcrtd.lib")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libcmt.lib") set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libcmt.lib")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /NODEFAULTLIB:libcmtd.lib") set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /NODEFAULTLIB:libcmtd.lib")
@ -266,11 +266,11 @@ if(CMAKE_COMPILER_IS_GNUCXX)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version
OUTPUT_VARIABLE CMAKE_OPENCV_GCC_VERSION_FULL OUTPUT_VARIABLE CMAKE_OPENCV_GCC_VERSION_FULL
OUTPUT_STRIP_TRAILING_WHITESPACE) OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -v execute_process(COMMAND ${CMAKE_CXX_COMPILER} -v
ERROR_VARIABLE CMAKE_OPENCV_GCC_INFO_FULL ERROR_VARIABLE CMAKE_OPENCV_GCC_INFO_FULL
OUTPUT_STRIP_TRAILING_WHITESPACE) OUTPUT_STRIP_TRAILING_WHITESPACE)
# Typical output in CMAKE_OPENCV_GCC_VERSION_FULL: "c+//0 (whatever) 4.2.3 (...)" # Typical output in CMAKE_OPENCV_GCC_VERSION_FULL: "c+//0 (whatever) 4.2.3 (...)"
# Look for the version number # Look for the version number
string(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" CMAKE_GCC_REGEX_VERSION "${CMAKE_OPENCV_GCC_VERSION_FULL}") string(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" CMAKE_GCC_REGEX_VERSION "${CMAKE_OPENCV_GCC_VERSION_FULL}")
@ -335,9 +335,9 @@ endif()
# Build tests: # Build tests:
# =================================================== # ===================================================
if(NOT IOS) if(NOT IOS)
set(BUILD_TESTS ON CACHE BOOL "Build tests") set(BUILD_TESTS ON CACHE BOOL "Build tests")
else() else()
set(BUILD_TESTS OFF CACHE BOOL "Build tests") set(BUILD_TESTS OFF CACHE BOOL "Build tests")
endif() endif()
set(BUILD_PERF_TESTS ON CACHE BOOL "Build performance tests") set(BUILD_PERF_TESTS ON CACHE BOOL "Build performance tests")
@ -442,7 +442,7 @@ if(APPLE)
endif() endif()
if(IOS) if(IOS)
set(WITH_AVFOUNDATION ON CACHE BOOL "Use AVFoundation for Video I/O") set(WITH_AVFOUNDATION ON CACHE BOOL "Use AVFoundation for Video I/O")
endif() endif()
set(WITH_TBB OFF CACHE BOOL "Include Intel TBB support") set(WITH_TBB OFF CACHE BOOL "Include Intel TBB support")
@ -507,6 +507,17 @@ if(UNIX)
if(WITH_GTK) if(WITH_GTK)
CHECK_MODULE(gtk+-2.0 HAVE_GTK) CHECK_MODULE(gtk+-2.0 HAVE_GTK)
CHECK_MODULE(gthread-2.0 HAVE_GTHREAD) CHECK_MODULE(gthread-2.0 HAVE_GTHREAD)
if(WITH_OPENGL)
CHECK_MODULE(gtkglext-1.0 HAVE_GTKGLEXT)
if(HAVE_GTKGLEXT)
find_package(OpenGL QUIET)
if(OPENGL_FOUND)
set(HAVE_OPENGL 1)
set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${OPENGL_LIBRARIES})
include_directories(${OPENGL_INCLUDE_DIR})
endif()
endif()
endif()
else() else()
set(HAVE_GTK FALSE) set(HAVE_GTK FALSE)
set(HAVE_GTHREAD FALSE) set(HAVE_GTHREAD FALSE)
@ -575,7 +586,7 @@ if(UNIX)
set(HAVE_DC1394 FALSE) set(HAVE_DC1394 FALSE)
endif() endif()
if(NOT APPLE) if(NOT APPLE)
CHECK_INCLUDE_FILE(alloca.h HAVE_ALLOCA_H) CHECK_INCLUDE_FILE(alloca.h HAVE_ALLOCA_H)
CHECK_FUNCTION_EXISTS(alloca HAVE_ALLOCA) CHECK_FUNCTION_EXISTS(alloca HAVE_ALLOCA)
CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H) CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
@ -608,8 +619,8 @@ if(UNIX)
endif() endif()
endif() endif()
if (UNIX OR WIN32) if (UNIX OR WIN32)
if(NOT OPENCV_BUILD_3RDPARTY_LIBS) if(NOT OPENCV_BUILD_3RDPARTY_LIBS)
message(STATUS "NOT OPENCV_BUILD_3RDPARTY_LIBS **************************************************") message(STATUS "NOT OPENCV_BUILD_3RDPARTY_LIBS **************************************************")
include(FindZLIB) include(FindZLIB)
if(WITH_PNG) if(WITH_PNG)
include(FindPNG) include(FindPNG)
@ -631,9 +642,9 @@ if (UNIX OR WIN32)
set(JASPER_FOUND FALSE) set(JASPER_FOUND FALSE)
endif() endif()
if(WITH_JPEG) if(WITH_JPEG)
include(FindJPEG) include(FindJPEG)
else() else()
set(JPEG_FOUND FALSE) set(JPEG_FOUND FALSE)
endif() endif()
endif() endif()
endif() endif()
@ -758,7 +769,7 @@ if (BUILD_JAVA_SUPPORT)
if(ANDROID) if(ANDROID)
file(TO_CMAKE_PATH "$ENV{ANDROID_SDK}" ANDROID_SDK_ENV_PATH) file(TO_CMAKE_PATH "$ENV{ANDROID_SDK}" ANDROID_SDK_ENV_PATH)
#find android SDK #find android SDK
find_host_program(ANDROID_EXECUTABLE find_host_program(ANDROID_EXECUTABLE
NAMES android.bat android NAMES android.bat android
@ -912,13 +923,13 @@ if (WITH_TBB)
include_directories(${TBB_INCLUDE_DIRS}) include_directories(${TBB_INCLUDE_DIRS})
endif() endif()
link_directories(${TBB_LIBRARY_DIRS}) link_directories(${TBB_LIBRARY_DIRS})
set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${TBB_LIBRARIES}) set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${TBB_LIBRARIES})
endif() endif()
endif() endif()
if (NOT HAVE_TBB) if (NOT HAVE_TBB)
set(TBB_DEFAULT_INCLUDE_DIRS "/opt/intel/tbb" "/usr/local/include" "/usr/include" "C:/Program Files/Intel/TBB" "C:/Program Files (x86)/Intel/TBB" "C:/Program Files (x86)/TBB" "${CMAKE_INSTALL_PREFIX}/include") set(TBB_DEFAULT_INCLUDE_DIRS "/opt/intel/tbb" "/usr/local/include" "/usr/include" "C:/Program Files/Intel/TBB" "C:/Program Files (x86)/Intel/TBB" "C:/Program Files (x86)/TBB" "${CMAKE_INSTALL_PREFIX}/include")
find_path(TBB_INCLUDE_DIR "tbb/tbb.h" PATHS ${TBB_DEFAULT_INCLUDE_DIRS} DOC "The path to TBB headers") find_path(TBB_INCLUDE_DIR "tbb/tbb.h" PATHS ${TBB_DEFAULT_INCLUDE_DIRS} DOC "The path to TBB headers")
if (TBB_INCLUDE_DIR) if (TBB_INCLUDE_DIR)
if (UNIX) if (UNIX)
@ -938,8 +949,8 @@ if (WITH_TBB)
link_directories("${TBB_LIB_DIR}") link_directories("${TBB_LIB_DIR}")
set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb) set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb)
else() else()
get_filename_component(_TBB_LIB_PATH "${TBB_INCLUDE_DIR}/../lib" ABSOLUTE) get_filename_component(_TBB_LIB_PATH "${TBB_INCLUDE_DIR}/../lib" ABSOLUTE)
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64*|x86_64* OR MSVC64) if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64*|x86_64* OR MSVC64)
set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/intel64") set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/intel64")
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86*|i386*|i686*) elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86*|i386*|i686*)
@ -949,7 +960,7 @@ if (WITH_TBB)
if (MSVC80) if (MSVC80)
set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc8") set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc8")
elseif(MSVC90) elseif(MSVC90)
set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc9") set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc9")
elseif(MSVC10) elseif(MSVC10)
set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc10") set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc10")
endif() endif()
@ -975,7 +986,7 @@ if (NOT HAVE_TBB AND WITH_THREADING_FRAMEWORK)
if(THREADING_FRAMEWORK_HEADER AND THREADING_FRAMEWORK_SOURCE) if(THREADING_FRAMEWORK_HEADER AND THREADING_FRAMEWORK_SOURCE)
set(HAVE_THREADING_FRAMEWORK 1) set(HAVE_THREADING_FRAMEWORK 1)
endif() endif()
if (TEGRA_DIR) if (TEGRA_DIR)
set(HAVE_THREADING_FRAMEWORK 1) set(HAVE_THREADING_FRAMEWORK 1)
endif() endif()
endif() endif()
@ -999,7 +1010,7 @@ endif()
if(WITH_CUDA) if(WITH_CUDA)
find_package(CUDA 4.0) find_package(CUDA 4.0)
if(CUDA_FOUND) if(CUDA_FOUND)
set(HAVE_CUDA 1) set(HAVE_CUDA 1)
@ -1015,25 +1026,25 @@ if(WITH_CUDA)
set(CUDA_ARCH_BIN "1.1 1.2 1.3 2.0 2.1(2.0)" CACHE STRING "Specify 'real' GPU architectures to build binaries for, BIN(PTX) format is supported") set(CUDA_ARCH_BIN "1.1 1.2 1.3 2.0 2.1(2.0)" CACHE STRING "Specify 'real' GPU architectures to build binaries for, BIN(PTX) format is supported")
set(CUDA_ARCH_PTX "2.0" CACHE STRING "Specify 'virtual' PTX architectures to build PTX intermediate code for") set(CUDA_ARCH_PTX "2.0" CACHE STRING "Specify 'virtual' PTX architectures to build PTX intermediate code for")
string(REGEX REPLACE "\\." "" ARCH_BIN_NO_POINTS "${CUDA_ARCH_BIN}") string(REGEX REPLACE "\\." "" ARCH_BIN_NO_POINTS "${CUDA_ARCH_BIN}")
string(REGEX REPLACE "\\." "" ARCH_PTX_NO_POINTS "${CUDA_ARCH_PTX}") string(REGEX REPLACE "\\." "" ARCH_PTX_NO_POINTS "${CUDA_ARCH_PTX}")
# Ckeck if user specified 1.0 compute capability: we don't support it # Ckeck if user specified 1.0 compute capability: we don't support it
string(REGEX MATCH "1.0" HAS_ARCH_10 "${CUDA_ARCH_BIN} ${CUDA_ARCH_PTX}") string(REGEX MATCH "1.0" HAS_ARCH_10 "${CUDA_ARCH_BIN} ${CUDA_ARCH_PTX}")
set(CUDA_ARCH_BIN_OR_PTX_10 0) set(CUDA_ARCH_BIN_OR_PTX_10 0)
if(NOT ${HAS_ARCH_10} STREQUAL "") if(NOT ${HAS_ARCH_10} STREQUAL "")
set(CUDA_ARCH_BIN_OR_PTX_10 1) set(CUDA_ARCH_BIN_OR_PTX_10 1)
endif() endif()
# NVCC flags to be set # NVCC flags to be set
set(NVCC_FLAGS_EXTRA "") set(NVCC_FLAGS_EXTRA "")
# These vars will be passed into the templates # These vars will be passed into the templates
set(OPENCV_CUDA_ARCH_BIN "") set(OPENCV_CUDA_ARCH_BIN "")
set(OPENCV_CUDA_ARCH_PTX "") set(OPENCV_CUDA_ARCH_PTX "")
set(OPENCV_CUDA_ARCH_FEATURES "") set(OPENCV_CUDA_ARCH_FEATURES "")
# Tell NVCC to add binaries for the specified GPUs # Tell NVCC to add binaries for the specified GPUs
string(REGEX MATCHALL "[0-9()]+" ARCH_LIST "${ARCH_BIN_NO_POINTS}") string(REGEX MATCHALL "[0-9()]+" ARCH_LIST "${ARCH_BIN_NO_POINTS}")
foreach(ARCH IN LISTS ARCH_LIST) foreach(ARCH IN LISTS ARCH_LIST)
@ -1043,13 +1054,13 @@ if(WITH_CUDA)
set(OPENCV_CUDA_ARCH_BIN "${OPENCV_CUDA_ARCH_BIN} ${CMAKE_MATCH_1}") set(OPENCV_CUDA_ARCH_BIN "${OPENCV_CUDA_ARCH_BIN} ${CMAKE_MATCH_1}")
set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${CMAKE_MATCH_2}") set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${CMAKE_MATCH_2}")
else() else()
# User didn't explicitly specify PTX for the concrete BIN, we assume PTX=BIN # User didn't explicitly specify PTX for the concrete BIN, we assume PTX=BIN
set(NVCC_FLAGS_EXTRA ${NVCC_FLAGS_EXTRA} -gencode arch=compute_${ARCH},code=sm_${ARCH}) set(NVCC_FLAGS_EXTRA ${NVCC_FLAGS_EXTRA} -gencode arch=compute_${ARCH},code=sm_${ARCH})
set(OPENCV_CUDA_ARCH_BIN "${OPENCV_CUDA_ARCH_BIN} ${ARCH}") set(OPENCV_CUDA_ARCH_BIN "${OPENCV_CUDA_ARCH_BIN} ${ARCH}")
set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${ARCH}") set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${ARCH}")
endif() endif()
endforeach() endforeach()
# Tell NVCC to add PTX intermediate code for the specified architectures # Tell NVCC to add PTX intermediate code for the specified architectures
string(REGEX MATCHALL "[0-9]+" ARCH_LIST "${ARCH_PTX_NO_POINTS}") string(REGEX MATCHALL "[0-9]+" ARCH_LIST "${ARCH_PTX_NO_POINTS}")
foreach(ARCH IN LISTS ARCH_LIST) foreach(ARCH IN LISTS ARCH_LIST)
@ -1057,16 +1068,16 @@ if(WITH_CUDA)
set(OPENCV_CUDA_ARCH_PTX "${OPENCV_CUDA_ARCH_PTX} ${ARCH}") set(OPENCV_CUDA_ARCH_PTX "${OPENCV_CUDA_ARCH_PTX} ${ARCH}")
set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${ARCH}") set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${ARCH}")
endforeach() endforeach()
# These vars will be processed in other scripts # These vars will be processed in other scripts
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} ${NVCC_FLAGS_EXTRA}) set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} ${NVCC_FLAGS_EXTRA})
set(OpenCV_CUDA_CC "${NVCC_FLAGS_EXTRA}") set(OpenCV_CUDA_CC "${NVCC_FLAGS_EXTRA}")
message(STATUS "CUDA NVCC target flags: ${CUDA_NVCC_FLAGS}") message(STATUS "CUDA NVCC target flags: ${CUDA_NVCC_FLAGS}")
else() else()
unset(CUDA_ARCH_BIN CACHE) unset(CUDA_ARCH_BIN CACHE)
unset(CUDA_ARCH_PTX CACHE) unset(CUDA_ARCH_PTX CACHE)
endif() endif()
endif() endif()
@ -1080,7 +1091,7 @@ endif()
############################### XIMEA ################################ ############################### XIMEA ################################
set(HAVE_XIMEA FALSE) set(HAVE_XIMEA FALSE)
if(WITH_XIMEA) if(WITH_XIMEA)
include(OpenCVFindXimea.cmake) include(OpenCVFindXimea.cmake)
endif() endif()
@ -1112,7 +1123,7 @@ if(WIN32)
if(WITH_VIDEOINPUT) if(WITH_VIDEOINPUT)
set(HAVE_VIDEOINPUT 1) set(HAVE_VIDEOINPUT 1)
endif() endif()
if (MSVC) if (MSVC)
set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} vfw32) set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} vfw32)
endif() endif()
@ -1122,13 +1133,13 @@ if(WIN32)
set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} msvfw32 avifil32 avicap32 winmm) set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} msvfw32 avifil32 avicap32 winmm)
else() else()
set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} vfw32 winmm) set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} vfw32 winmm)
endif() endif()
endif() endif()
if (WITH_OPENGL AND NOT HAVE_QT_OPENGL) if(WITH_OPENGL AND NOT HAVE_QT_OPENGL)
find_package(OpenGL QUIET) find_package(OpenGL QUIET)
if (OPENGL_FOUND) if(OPENGL_FOUND)
set(HAVE_OPENGL 1) set(HAVE_OPENGL 1)
set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${OPENGL_LIBRARIES}) set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${OPENGL_LIBRARIES})
include_directories(${OPENGL_INCLUDE_DIR}) include_directories(${OPENGL_INCLUDE_DIR})
@ -1140,7 +1151,7 @@ endif()
if(ANDROID AND ANDROID_NATIVE_API_LEVEL GREATER 7) if(ANDROID AND ANDROID_NATIVE_API_LEVEL GREATER 7)
option(WITH_ANDROID_CAMERA "Build with native Android camera support" TRUE) option(WITH_ANDROID_CAMERA "Build with native Android camera support" TRUE)
SET (ANDROID_SOURCE_TREE "ANDROID_SOURCE_TREE-NOTFOUND" CACHE PATH SET (ANDROID_SOURCE_TREE "ANDROID_SOURCE_TREE-NOTFOUND" CACHE PATH
"Path to Android source tree. "Path to Android source tree.
Set this variable to path to your Android sources to compile Set this variable to path to your Android sources to compile
libnative_camera_rx.x.x.so for your Android") libnative_camera_rx.x.x.so for your Android")
@ -1264,14 +1275,14 @@ if(CMAKE_COMPILER_IS_GNUCXX)
if(ENABLE_SSE3) if(ENABLE_SSE3)
set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse3") set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse3")
endif() endif()
if(${CMAKE_OPENCV_GCC_VERSION_NUM} GREATER 402) if(${CMAKE_OPENCV_GCC_VERSION_NUM} GREATER 402)
set(HAVE_GCC43_OR_NEWER 1) set(HAVE_GCC43_OR_NEWER 1)
endif() endif()
if(${CMAKE_OPENCV_GCC_VERSION_NUM} GREATER 401) if(${CMAKE_OPENCV_GCC_VERSION_NUM} GREATER 401)
set(HAVE_GCC42_OR_NEWER 1) set(HAVE_GCC42_OR_NEWER 1)
endif() endif()
if(HAVE_GCC42_OR_NEWER OR APPLE) if(HAVE_GCC42_OR_NEWER OR APPLE)
if(ENABLE_SSSE3) if(ENABLE_SSSE3)
set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mssse3") set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mssse3")
@ -1456,8 +1467,8 @@ if(WIN32)
exec_program(mkdir ARGS "-p \"${CMAKE_BINARY_DIR}/win-install/\"" OUTPUT_VARIABLE RET_VAL) exec_program(mkdir ARGS "-p \"${CMAKE_BINARY_DIR}/win-install/\"" OUTPUT_VARIABLE RET_VAL)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" IMMEDIATE @ONLY) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" IMMEDIATE @ONLY)
# Install the OpenCVConfig.cmake file which has the right paths pointing to the install directory # Install the OpenCVConfig.cmake file which has the right paths pointing to the install directory
install(FILES "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" DESTINATION "${CMAKE_INSTALL_PREFIX}/") install(FILES "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" DESTINATION "${CMAKE_INSTALL_PREFIX}/")
endif() endif()
# -------------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------------
@ -1600,13 +1611,13 @@ endif()
#----------------------------------- #-----------------------------------
if(BUILD_PERF_TESTS AND PYTHON_EXECUTABLE) if(BUILD_PERF_TESTS AND PYTHON_EXECUTABLE)
if(CMAKE_VERSION VERSION_GREATER "2.8.2") if(CMAKE_VERSION VERSION_GREATER "2.8.2")
add_custom_target(perf add_custom_target(perf
${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/modules/ts/misc/run.py" --configuration $<CONFIGURATION> "${CMAKE_BINARY_DIR}" ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/modules/ts/misc/run.py" --configuration $<CONFIGURATION> "${CMAKE_BINARY_DIR}"
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/modules/ts/misc/run.py" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/modules/ts/misc/run.py"
) )
else() else()
add_custom_target(perf add_custom_target(perf
${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/modules/ts/misc/run.py" "${CMAKE_BINARY_DIR}" ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/modules/ts/misc/run.py" "${CMAKE_BINARY_DIR}"
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/modules/ts/misc/run.py" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/modules/ts/misc/run.py"
@ -1634,7 +1645,7 @@ macro(status text)
SET(status_cond) SET(status_cond)
SET(status_then) SET(status_then)
SET(status_else) SET(status_else)
SET(status_current_name "cond") SET(status_current_name "cond")
foreach(arg ${ARGN}) foreach(arg ${ARGN})
if(arg STREQUAL "THEN") if(arg STREQUAL "THEN")
@ -1725,7 +1736,8 @@ else()
endif() endif()
else() else()
status(" GTK+ 2.x:" HAVE_GTK THEN YES ELSE NO) status(" GTK+ 2.x:" HAVE_GTK THEN YES ELSE NO)
status(" GThread:" HAVE_GTHREAD THEN YES ELSE NO) status(" GThread :" HAVE_GTHREAD THEN YES ELSE NO)
status(" GtkGlExt:" HAVE_GTKGLEXT THEN YES ELSE NO)
endif() endif()
endif() endif()
endif() endif()
@ -1773,11 +1785,11 @@ if(UNIX AND NOT APPLE)
endif() endif()
endif() endif()
elseif(APPLE) elseif(APPLE)
if(NOT IOS) if(NOT IOS)
status(" Video I/O:" WITH_QUICKTIME THEN QuickTime ELSE QTKit) status(" Video I/O:" WITH_QUICKTIME THEN QuickTime ELSE QTKit)
else() else()
status(" Video I/O: AVFoundation") status(" Video I/O: AVFoundation")
endif() endif()
elseif(WIN32) elseif(WIN32)
status(" Video I/O:" HAVE_VIDEOINPUT THEN DirectShow ELSE NO) status(" Video I/O:" HAVE_VIDEOINPUT THEN DirectShow ELSE NO)
endif() endif()

@ -98,7 +98,7 @@ struct CvCapture
virtual bool setProperty(int, double) { return 0; } virtual bool setProperty(int, double) { return 0; }
virtual bool grabFrame() { return true; } virtual bool grabFrame() { return true; }
virtual IplImage* retrieveFrame(int) { return 0; } virtual IplImage* retrieveFrame(int) { return 0; }
virtual int getCaptureDomain() { return CV_CAP_ANY; } // Return the type of the capture object: CV_CAP_VFW, etc... virtual int getCaptureDomain() { return CV_CAP_ANY; } // Return the type of the capture object: CV_CAP_VFW, etc...
}; };
/*************************** CvVideoWriter structure ****************************/ /*************************** CvVideoWriter structure ****************************/
@ -176,7 +176,7 @@ CvCapture * cvCreateCameraCapture_PvAPI (const int index);
CvVideoWriter* cvCreateVideoWriter_GStreamer( const char* filename, int fourcc, CvVideoWriter* cvCreateVideoWriter_GStreamer( const char* filename, int fourcc,
double fps, CvSize frameSize, int is_color ); double fps, CvSize frameSize, int is_color );
//Yannick Verdie 2010 //Yannick Verdie 2010
void cvSetModeWindow_W32(const char* name, double prop_value); void cvSetModeWindow_W32(const char* name, double prop_value);
void cvSetModeWindow_GTK(const char* name, double prop_value); void cvSetModeWindow_GTK(const char* name, double prop_value);
void cvSetModeWindow_CARBON(const char* name, double prop_value); void cvSetModeWindow_CARBON(const char* name, double prop_value);
@ -186,8 +186,13 @@ double cvGetModeWindow_GTK(const char* name);
double cvGetModeWindow_CARBON(const char* name); double cvGetModeWindow_CARBON(const char* name);
double cvGetPropWindowAutoSize_W32(const char* name); double cvGetPropWindowAutoSize_W32(const char* name);
double cvGetPropWindowAutoSize_GTK(const char* name);
double cvGetRatioWindow_W32(const char* name); double cvGetRatioWindow_W32(const char* name);
double cvGetRatioWindow_GTK(const char* name);
double cvGetOpenGlProp_W32(const char* name); double cvGetOpenGlProp_W32(const char* name);
double cvGetOpenGlProp_GTK(const char* name);
//for QT //for QT
#if defined (HAVE_QT) #if defined (HAVE_QT)

@ -49,13 +49,13 @@ CV_IMPL void cvSetWindowProperty(const char* name, int prop_id, double prop_valu
{ {
//change between fullscreen or not. //change between fullscreen or not.
case CV_WND_PROP_FULLSCREEN: case CV_WND_PROP_FULLSCREEN:
if (!name || (prop_value!=CV_WINDOW_NORMAL && prop_value!=CV_WINDOW_FULLSCREEN))//bad argument if (!name || (prop_value!=CV_WINDOW_NORMAL && prop_value!=CV_WINDOW_FULLSCREEN))//bad argument
break; break;
#if defined (HAVE_QT) #if defined (HAVE_QT)
cvSetModeWindow_QT(name,prop_value); cvSetModeWindow_QT(name,prop_value);
#elif defined WIN32 || defined _WIN32 #elif defined WIN32 || defined _WIN32
cvSetModeWindow_W32(name,prop_value); cvSetModeWindow_W32(name,prop_value);
#elif defined (HAVE_GTK) #elif defined (HAVE_GTK)
cvSetModeWindow_GTK(name,prop_value); cvSetModeWindow_GTK(name,prop_value);
@ -63,19 +63,19 @@ CV_IMPL void cvSetWindowProperty(const char* name, int prop_id, double prop_valu
cvSetModeWindow_CARBON(name,prop_value); cvSetModeWindow_CARBON(name,prop_value);
#endif #endif
break; break;
case CV_WND_PROP_AUTOSIZE: case CV_WND_PROP_AUTOSIZE:
#if defined (HAVE_QT) #if defined (HAVE_QT)
cvSetPropWindow_QT(name,prop_value); cvSetPropWindow_QT(name,prop_value);
#endif #endif
break; break;
case CV_WND_PROP_ASPECTRATIO: case CV_WND_PROP_ASPECTRATIO:
#if defined (HAVE_QT) #if defined (HAVE_QT)
cvSetRatioWindow_QT(name,prop_value); cvSetRatioWindow_QT(name,prop_value);
#endif #endif
break; break;
default:; default:;
} }
} }
@ -83,16 +83,16 @@ CV_IMPL void cvSetWindowProperty(const char* name, int prop_id, double prop_valu
/* return -1 if error */ /* return -1 if error */
CV_IMPL double cvGetWindowProperty(const char* name, int prop_id) CV_IMPL double cvGetWindowProperty(const char* name, int prop_id)
{ {
if (!name) if (!name)
return -1; return -1;
switch(prop_id) switch(prop_id)
{ {
case CV_WND_PROP_FULLSCREEN: case CV_WND_PROP_FULLSCREEN:
#if defined (HAVE_QT) #if defined (HAVE_QT)
return cvGetModeWindow_QT(name); return cvGetModeWindow_QT(name);
#elif defined WIN32 || defined _WIN32 #elif defined WIN32 || defined _WIN32
return cvGetModeWindow_W32(name); return cvGetModeWindow_W32(name);
#elif defined (HAVE_GTK) #elif defined (HAVE_GTK)
return cvGetModeWindow_GTK(name); return cvGetModeWindow_GTK(name);
@ -102,39 +102,45 @@ CV_IMPL double cvGetWindowProperty(const char* name, int prop_id)
return -1; return -1;
#endif #endif
break; break;
case CV_WND_PROP_AUTOSIZE: case CV_WND_PROP_AUTOSIZE:
#if defined (HAVE_QT) #if defined (HAVE_QT)
return cvGetPropWindow_QT(name); return cvGetPropWindow_QT(name);
#elif defined WIN32 || defined _WIN32 #elif defined WIN32 || defined _WIN32
return cvGetPropWindowAutoSize_W32(name); return cvGetPropWindowAutoSize_W32(name);
#elif defined (HAVE_GTK)
return cvGetPropWindowAutoSize_GTK(name);
#else #else
return -1; return -1;
#endif #endif
break; break;
case CV_WND_PROP_ASPECTRATIO: case CV_WND_PROP_ASPECTRATIO:
#if defined (HAVE_QT) #if defined (HAVE_QT)
return cvGetRatioWindow_QT(name); return cvGetRatioWindow_QT(name);
#elif defined WIN32 || defined _WIN32 #elif defined WIN32 || defined _WIN32
return cvGetRatioWindow_W32(name); return cvGetRatioWindow_W32(name);
#elif defined (HAVE_GTK)
return cvGetRatioWindow_GTK(name);
#else #else
return -1; return -1;
#endif #endif
break; break;
case CV_WND_PROP_OPENGL: case CV_WND_PROP_OPENGL:
#if defined (HAVE_QT) #if defined (HAVE_QT)
#elif defined WIN32 || defined _WIN32 #elif defined WIN32 || defined _WIN32
return cvGetOpenGlProp_W32(name); return cvGetOpenGlProp_W32(name);
#elif defined (HAVE_GTK)
return cvGetOpenGlProp_GTK(name);
#else #else
return -1; return -1;
#endif #endif
break; break;
default: default:
return -1; return -1;
} }
@ -198,12 +204,12 @@ int cv::getTrackbarPos( const string& trackbarName, const string& winName )
{ {
return cvGetTrackbarPos(trackbarName.c_str(), winName.c_str()); return cvGetTrackbarPos(trackbarName.c_str(), winName.c_str());
} }
void cv::setMouseCallback( const string& windowName, MouseCallback onMouse, void* param) void cv::setMouseCallback( const string& windowName, MouseCallback onMouse, void* param)
{ {
cvSetMouseCallback(windowName.c_str(), onMouse, param); cvSetMouseCallback(windowName.c_str(), onMouse, param);
} }
int cv::startWindowThread() int cv::startWindowThread()
{ {
return cvStartWindowThread(); return cvStartWindowThread();
@ -363,13 +369,13 @@ namespace
addGlObj(glObj); addGlObj(glObj);
icvSetOpenGlCleanCallback(winname.c_str(), glCleanCallback, glObj); icvSetOpenGlCleanCallback(winname.c_str(), glCleanCallback, glObj);
} }
setOpenGlDrawCallback(winname, glDrawTextureCallback, glObj); setOpenGlDrawCallback(winname, glDrawTextureCallback, glObj);
updateWindow(winname); updateWindow(winname);
} }
} }
#endif // HAVE_OPENGL #endif // HAVE_OPENGL
@ -397,7 +403,7 @@ void cv::imshow( const string& winname, InputArray _img )
void cv::imshow(const string& winname, const gpu::GlBuffer& buf) void cv::imshow(const string& winname, const gpu::GlBuffer& buf)
{ {
#ifndef HAVE_OPENGL #ifndef HAVE_OPENGL
CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support"); CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support");
#else #else
imshowImpl(winname, buf); imshowImpl(winname, buf);
#endif #endif
@ -406,7 +412,7 @@ void cv::imshow(const string& winname, const gpu::GlBuffer& buf)
void cv::imshow(const string& winname, const gpu::GpuMat& d_mat) void cv::imshow(const string& winname, const gpu::GpuMat& d_mat)
{ {
#ifndef HAVE_OPENGL #ifndef HAVE_OPENGL
CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support"); CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support");
#else #else
setOpenGlContext(winname); setOpenGlContext(winname);
gpu::GlBuffer buf(d_mat, gpu::GlBuffer::TEXTURE_BUFFER); gpu::GlBuffer buf(d_mat, gpu::GlBuffer::TEXTURE_BUFFER);
@ -417,7 +423,7 @@ void cv::imshow(const string& winname, const gpu::GpuMat& d_mat)
void cv::imshow(const string& winname, const gpu::GlTexture& tex) void cv::imshow(const string& winname, const gpu::GlTexture& tex)
{ {
#ifndef HAVE_OPENGL #ifndef HAVE_OPENGL
CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support"); CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support");
#else #else
namedWindow(winname, WINDOW_OPENGL | WINDOW_AUTOSIZE); namedWindow(winname, WINDOW_OPENGL | WINDOW_AUTOSIZE);
@ -462,9 +468,9 @@ void cv::imshow(const string& winname, const gpu::GlTexture& tex)
} }
void cv::pointCloudShow(const string& winname, const gpu::GlCamera& camera, const gpu::GlArrays& arr) void cv::pointCloudShow(const string& winname, const gpu::GlCamera& camera, const gpu::GlArrays& arr)
{ {
#ifndef HAVE_OPENGL #ifndef HAVE_OPENGL
CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support"); CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support");
#else #else
namedWindow(winname, WINDOW_OPENGL); namedWindow(winname, WINDOW_OPENGL);
@ -565,27 +571,27 @@ namespace
#endif // HAVE_OPENGL #endif // HAVE_OPENGL
void cv::pointCloudShow(const string& winname, const gpu::GlCamera& camera, const gpu::GlBuffer& points, const gpu::GlBuffer& colors) void cv::pointCloudShow(const string& winname, const gpu::GlCamera& camera, const gpu::GlBuffer& points, const gpu::GlBuffer& colors)
{ {
#ifndef HAVE_OPENGL #ifndef HAVE_OPENGL
CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support"); CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support");
#else #else
pointCloudShowImpl(winname, camera, points, colors); pointCloudShowImpl(winname, camera, points, colors);
#endif #endif
} }
void cv::pointCloudShow(const string& winname, const gpu::GlCamera& camera, const gpu::GpuMat& points, const gpu::GpuMat& colors) void cv::pointCloudShow(const string& winname, const gpu::GlCamera& camera, const gpu::GpuMat& points, const gpu::GpuMat& colors)
{ {
#ifndef HAVE_OPENGL #ifndef HAVE_OPENGL
CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support"); CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support");
#else #else
pointCloudShowImpl(winname, camera, points, colors); pointCloudShowImpl(winname, camera, points, colors);
#endif #endif
} }
void cv::pointCloudShow(const string& winname, const gpu::GlCamera& camera, InputArray points, InputArray colors) void cv::pointCloudShow(const string& winname, const gpu::GlCamera& camera, InputArray points, InputArray colors)
{ {
#ifndef HAVE_OPENGL #ifndef HAVE_OPENGL
CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support"); CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support");
#else #else
pointCloudShowImpl(winname, camera, points, colors); pointCloudShowImpl(winname, camera, points, colors);
#endif #endif
@ -596,23 +602,23 @@ void cv::pointCloudShow(const string& winname, const gpu::GlCamera& camera, Inpu
#ifndef HAVE_QT #ifndef HAVE_QT
CV_IMPL void cvCreateOpenGLCallback(const char*, CvOpenGLCallback, void*, double, double, double) CV_IMPL void cvCreateOpenGLCallback(const char*, CvOpenGLCallback, void*, double, double, double)
{ {
CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support"); CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support");
} }
#endif #endif
CV_IMPL void cvSetOpenGlContext(const char*) CV_IMPL void cvSetOpenGlContext(const char*)
{ {
CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support"); CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support");
} }
CV_IMPL void cvUpdateWindow(const char*) CV_IMPL void cvUpdateWindow(const char*)
{ {
CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support"); CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support");
} }
void icvSetOpenGlCleanCallback(const char*, CvOpenGlCleanCallback, void*) void icvSetOpenGlCleanCallback(const char*, CvOpenGlCleanCallback, void*)
{ {
CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support"); CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support");
} }
#endif // !HAVE_OPENGL #endif // !HAVE_OPENGL
@ -676,7 +682,7 @@ int cv::createButton(const string& button_name, ButtonCallback on_change, void*
#else #else
// No windowing system present at compile time ;-( // No windowing system present at compile time ;-(
// //
// We will build place holders that don't break the API but give an error // We will build place holders that don't break the API but give an error
// at runtime. This way people can choose to replace an installed HighGUI // at runtime. This way people can choose to replace an installed HighGUI
// version with a more capable one without a need to recompile dependent // version with a more capable one without a need to recompile dependent
@ -695,7 +701,7 @@ CV_IMPL int cvNamedWindow( const char*, int )
{ {
CV_NO_GUI_ERROR("cvNamedWindow"); CV_NO_GUI_ERROR("cvNamedWindow");
return -1; return -1;
} }
CV_IMPL void cvDestroyWindow( const char* ) CV_IMPL void cvDestroyWindow( const char* )
{ {
@ -763,7 +769,7 @@ CV_IMPL void* cvGetWindowHandle( const char* )
CV_NO_GUI_ERROR( "cvGetWindowHandle" ); CV_NO_GUI_ERROR( "cvGetWindowHandle" );
return 0; return 0;
} }
CV_IMPL const char* cvGetWindowName( void* ) CV_IMPL const char* cvGetWindowName( void* )
{ {
CV_NO_GUI_ERROR( "cvGetWindowName" ); CV_NO_GUI_ERROR( "cvGetWindowName" );
@ -799,39 +805,39 @@ CV_IMPL void cvAddText( const CvArr*, const char*, CvPoint org, CvFont* font)
CV_IMPL void cvDisplayStatusBar(const char* name, const char* arg2, int arg3) CV_IMPL void cvDisplayStatusBar(const char* name, const char* arg2, int arg3)
{ {
CV_NO_GUI_ERROR("cvDisplayStatusBar"); CV_NO_GUI_ERROR("cvDisplayStatusBar");
} }
CV_IMPL void cvDisplayOverlay(const char* name, const char* text, int delayms) CV_IMPL void cvDisplayOverlay(const char* name, const char* text, int delayms)
{ {
CV_NO_GUI_ERROR("cvNamedWindow"); CV_NO_GUI_ERROR("cvNamedWindow");
} }
CV_IMPL int cvStartLoop(int (*pt2Func)(int argc, char *argv[]), int argc, char* argv[]) CV_IMPL int cvStartLoop(int (*pt2Func)(int argc, char *argv[]), int argc, char* argv[])
{ {
CV_NO_GUI_ERROR("cvStartLoop"); CV_NO_GUI_ERROR("cvStartLoop");
return -1; return -1;
} }
CV_IMPL void cvStopLoop() CV_IMPL void cvStopLoop()
{ {
CV_NO_GUI_ERROR("cvStopLoop"); CV_NO_GUI_ERROR("cvStopLoop");
} }
CV_IMPL void cvSaveWindowParameters(const char* name) CV_IMPL void cvSaveWindowParameters(const char* name)
{ {
CV_NO_GUI_ERROR("cvSaveWindowParameters"); CV_NO_GUI_ERROR("cvSaveWindowParameters");
} }
CV_IMPL void cvLoadWindowParameterss(const char* name) CV_IMPL void cvLoadWindowParameterss(const char* name)
{ {
CV_NO_GUI_ERROR("cvLoadWindowParameters"); CV_NO_GUI_ERROR("cvLoadWindowParameters");
} }
CV_IMPL int cvCreateButton(const char*, void (*)(int, void*), void*, int, int) CV_IMPL int cvCreateButton(const char*, void (*)(int, void*), void*, int, int)
{ {
CV_NO_GUI_ERROR("cvCreateButton"); CV_NO_GUI_ERROR("cvCreateButton");
return -1; return -1;
} }
#endif #endif

File diff suppressed because it is too large Load Diff

@ -76,7 +76,7 @@ int main(int argc, const char* argv[])
CommandLineParser cmd(argc, argv, keys); CommandLineParser cmd(argc, argv, keys);
if (cmd.get<bool>("help")) if (cmd.get<bool>("help"))
{ {
cout << "Avaible options:" << endl; cout << "Avaible options:" << endl;
cmd.printParams(); cmd.printParams();
@ -119,13 +119,13 @@ int main(int argc, const char* argv[])
{ {
cout << "Can't load image " << right << endl; cout << "Can't load image " << right << endl;
return -1; return -1;
} }
Mat Q = Mat::eye(4, 4, CV_32F); Mat Q = Mat::eye(4, 4, CV_32F);
if (!intrinsic.empty() && !extrinsic.empty()) if (!intrinsic.empty() && !extrinsic.empty())
{ {
FileStorage fs; FileStorage fs;
// reading intrinsic parameters // reading intrinsic parameters
fs.open(intrinsic, CV_STORAGE_READ); fs.open(intrinsic, CV_STORAGE_READ);
if (!fs.isOpened()) if (!fs.isOpened())
@ -133,13 +133,13 @@ int main(int argc, const char* argv[])
cout << "Failed to open file " << intrinsic << endl; cout << "Failed to open file " << intrinsic << endl;
return -1; return -1;
} }
Mat M1, D1, M2, D2; Mat M1, D1, M2, D2;
fs["M1"] >> M1; fs["M1"] >> M1;
fs["D1"] >> D1; fs["D1"] >> D1;
fs["M2"] >> M2; fs["M2"] >> M2;
fs["D2"] >> D2; fs["D2"] >> D2;
// reading extrinsic parameters // reading extrinsic parameters
fs.open(extrinsic, CV_STORAGE_READ); fs.open(extrinsic, CV_STORAGE_READ);
if (!fs.isOpened()) if (!fs.isOpened())
@ -147,7 +147,7 @@ int main(int argc, const char* argv[])
cout << "Failed to open file " << extrinsic << endl; cout << "Failed to open file " << extrinsic << endl;
return -1; return -1;
} }
Mat R, T, R1, P1, R2, P2; Mat R, T, R1, P1, R2, P2;
fs["R"] >> R; fs["R"] >> R;
fs["T"] >> T; fs["T"] >> T;
@ -156,15 +156,15 @@ int main(int argc, const char* argv[])
Rect roi1, roi2; Rect roi1, roi2;
stereoRectify(M1, D1, M2, D2, img_size, R, T, R1, R2, P1, P2, Q, CALIB_ZERO_DISPARITY, -1, img_size, &roi1, &roi2); stereoRectify(M1, D1, M2, D2, img_size, R, T, R1, R2, P1, P2, Q, CALIB_ZERO_DISPARITY, -1, img_size, &roi1, &roi2);
Mat map11, map12, map21, map22; Mat map11, map12, map21, map22;
initUndistortRectifyMap(M1, D1, R1, P1, img_size, CV_16SC2, map11, map12); initUndistortRectifyMap(M1, D1, R1, P1, img_size, CV_16SC2, map11, map12);
initUndistortRectifyMap(M2, D2, R2, P2, img_size, CV_16SC2, map21, map22); initUndistortRectifyMap(M2, D2, R2, P2, img_size, CV_16SC2, map21, map22);
Mat img1r, img2r; Mat img1r, img2r;
remap(imgLeftColor, img1r, map11, map12, INTER_LINEAR); remap(imgLeftColor, img1r, map11, map12, INTER_LINEAR);
remap(imgRightColor, img2r, map21, map22, INTER_LINEAR); remap(imgRightColor, img2r, map21, map22, INTER_LINEAR);
imgLeftColor = img1r(roi1); imgLeftColor = img1r(roi1);
imgRightColor = img2r(roi2); imgRightColor = img2r(roi2);
} }
@ -194,7 +194,7 @@ int main(int argc, const char* argv[])
int mouse[2] = {0, 0}; int mouse[2] = {0, 0};
setMouseCallback("OpenGL Sample", mouseCallback, mouse); setMouseCallback("OpenGL Sample", mouseCallback, mouse);
GlArrays pointCloud; GlArrays pointCloud;
pointCloud.setVertexArray(points); pointCloud.setVertexArray(points);
@ -202,7 +202,7 @@ int main(int argc, const char* argv[])
GlCamera camera; GlCamera camera;
camera.setScale(Point3d(scale, scale, scale)); camera.setScale(Point3d(scale, scale, scale));
double yaw = 0.0; double yaw = 0.0;
double pitch = 0.0; double pitch = 0.0;
@ -214,17 +214,25 @@ int main(int argc, const char* argv[])
while (true) while (true)
{ {
int key = waitKey(1); int key = waitKey(1);
if (key >= 0)
key = key & 0xff;
if (key == 27) if (key == 27)
break; break;
double aspect = getWindowProperty("OpenGL Sample", WND_PROP_ASPECT_RATIO); double aspect = getWindowProperty("OpenGL Sample", WND_PROP_ASPECT_RATIO);
const double posStep = 0.1; const double posStep = 0.1;
#ifdef _WIN32
const double mouseStep = 0.001; const double mouseStep = 0.001;
#else
const double mouseStep = 0.000001;
#endif
const int mouseClamp = 300; const int mouseClamp = 300;
camera.setPerspectiveProjection(30.0 + fov / 100.0 * 40.0, aspect, 0.1, 1000.0); camera.setPerspectiveProjection(30.0 + fov / 100.0 * 40.0, aspect, 0.1, 1000.0);
int mouse_dx = clamp(mouse[0], -mouseClamp, mouseClamp); int mouse_dx = clamp(mouse[0], -mouseClamp, mouseClamp);
int mouse_dy = clamp(mouse[1], -mouseClamp, mouseClamp); int mouse_dy = clamp(mouse[1], -mouseClamp, mouseClamp);

@ -64,7 +64,7 @@ int main(int argc, char* argv[])
GpuMat d_img; GpuMat d_img;
if (haveCuda) if (haveCuda)
d_img.upload(img); d_img.upload(img);
cout << "=== First call\n\n"; cout << "=== First call\n\n";
{ {
@ -123,4 +123,4 @@ int main(int argc, char* argv[])
} }
return 0; return 0;
} }

Loading…
Cancel
Save