0001-OpenCVFindXimea.cmake-update.patch
b/cmake/OpenCVFindXimea.cmake | ||
---|---|---|
1 |
# - Find XIMEA |
|
2 |
# This module finds if XIMEA Software package is installed |
|
3 |
# and determines where the binaries and header files are. |
|
4 |
# This code sets the following variables: |
|
5 |
# |
|
6 |
# XIMEA_FOUND - True if XIMEA API found |
|
7 |
# XIMEA_PATH: - Path to the XIMEA API folder |
|
8 |
# XIMEA_LIBRARY_DIR - XIMEA libraries folder |
|
9 |
# |
|
10 |
# Created: 5 Aug 2011 by Marian Zajko ([email protected]) |
|
11 |
# Updated: 25 June 2012 by Igor Kuzmin ([email protected]) |
|
12 |
# |
|
13 | ||
14 |
set(XIMEA_FOUND) |
|
15 |
set(XIMEA_PATH) |
|
16 |
set(XIMEA_LIBRARY_DIR) |
|
17 | ||
18 |
if(WIN32) |
|
19 |
# Try to find the XIMEA API path in registry. |
|
20 |
GET_FILENAME_COMPONENT(XIMEA_PATH "[HKEY_CURRENT_USER\\Software\\XIMEA\\CamSupport\\API;Path]" ABSOLUTE) |
|
21 | ||
22 |
if(EXISTS XIMEA_PATH) |
|
23 |
set(XIMEA_FOUND 1) |
|
24 |
# set LIB folders |
|
25 |
set(XIMEA_LIBRARY_DIR "${XIMEA_PATH}/x86") |
|
26 |
else() |
|
27 |
set(XIMEA_FOUND 0) |
|
28 |
endif() |
|
29 |
else() |
|
30 |
if(EXISTS /opt/XIMEA) |
|
31 |
set(XIMEA_FOUND 1) |
|
32 |
# set folders |
|
33 |
set(XIMEA_PATH /opt/XIMEA/include) |
|
34 |
else() |
|
35 |
set(XIMEA_FOUND 0) |
|
36 |
endif() |
|
37 |
endif() |
|
38 | ||
39 |
mark_as_advanced(FORCE XIMEA_FOUND) |
|
40 |
mark_as_advanced(FORCE XIMEA_PATH) |
|
41 |
mark_as_advanced(FORCE XIMEA_LIBRARY_DIR) |
|
42 | ||
1 |
# - Find XIMEA |
|
2 |
# This module finds if XIMEA Software package is installed |
|
3 |
# and determines where the binaries and header files are. |
|
4 |
# This code sets the following variables: |
|
5 |
# |
|
6 |
# XIMEA_FOUND - True if XIMEA API found |
|
7 |
# XIMEA_PATH: - Path to the XIMEA API folder |
|
8 |
# XIMEA_LIBRARY_DIR - XIMEA libraries folder |
|
9 |
# |
|
10 |
# Created: 5 Aug 2011 by Marian Zajko ([email protected]) |
|
11 |
# Updated: 25 June 2012 by Igor Kuzmin ([email protected]) |
|
12 |
# Updated: 22 October 2012 by Marian Zajko ([email protected]) |
|
13 |
# |
|
14 |
|
|
15 |
set(XIMEA_FOUND) |
|
16 |
set(XIMEA_PATH) |
|
17 |
set(XIMEA_LIBRARY_DIR) |
|
18 |
|
|
19 |
if(WIN32) |
|
20 |
# Try to find the XIMEA API path in registry. |
|
21 |
GET_FILENAME_COMPONENT(XIMEA_PATH "[HKEY_CURRENT_USER\\Software\\XIMEA\\CamSupport\\API;Path]" ABSOLUTE) |
|
22 |
|
|
23 |
if(EXISTS ${XIMEA_PATH}) |
|
24 |
set(XIMEA_FOUND 1) |
|
25 |
# set LIB folders |
|
26 |
if(CMAKE_CL_64) |
|
27 |
set(XIMEA_LIBRARY_DIR "${XIMEA_PATH}/x64") |
|
28 |
else() |
|
29 |
set(XIMEA_LIBRARY_DIR "${XIMEA_PATH}/x86") |
|
30 |
endif() |
|
31 |
else() |
|
32 |
set(XIMEA_FOUND 0) |
|
33 |
endif() |
|
34 |
else() |
|
35 |
if(EXISTS /opt/XIMEA) |
|
36 |
set(XIMEA_FOUND 1) |
|
37 |
# set folders |
|
38 |
set(XIMEA_PATH /opt/XIMEA/include) |
|
39 |
else() |
|
40 |
set(XIMEA_FOUND 0) |
|
41 |
endif() |
|
42 |
endif() |
|
43 |
|
|
44 |
mark_as_advanced(FORCE XIMEA_FOUND) |
|
45 |
mark_as_advanced(FORCE XIMEA_PATH) |
|
46 |
mark_as_advanced(FORCE XIMEA_LIBRARY_DIR) |
|
47 |
|
b/modules/highgui/CMakeLists.txt | ||
---|---|---|
1 |
set(the_description "High-level GUI and Media I/O") |
|
2 |
ocv_add_module(highgui opencv_imgproc OPTIONAL opencv_androidcamera) |
|
3 | ||
4 |
# ---------------------------------------------------------------------------- |
|
5 |
# CMake file for highgui. See root CMakeLists.txt |
|
6 |
# Some parts taken from version of Hartmut Seichter, HIT Lab NZ. |
|
7 |
# Jose Luis Blanco, 2008 |
|
8 |
# ---------------------------------------------------------------------------- |
|
9 | ||
10 |
ocv_clear_vars(GRFMT_LIBS) |
|
11 | ||
12 |
if(WITH_PNG OR WITH_TIFF OR WITH_OPENEXR) |
|
13 |
ocv_include_directories(${ZLIB_INCLUDE_DIR}) |
|
14 |
list(APPEND GRFMT_LIBS ${ZLIB_LIBRARIES}) |
|
15 |
endif() |
|
16 | ||
17 |
if(WITH_JPEG) |
|
18 |
add_definitions(-DHAVE_JPEG) |
|
19 |
ocv_include_directories(${JPEG_INCLUDE_DIR}) |
|
20 |
list(APPEND GRFMT_LIBS ${JPEG_LIBRARIES}) |
|
21 |
endif() |
|
22 | ||
23 |
if(WITH_PNG) |
|
24 |
add_definitions(-DHAVE_PNG) |
|
25 |
add_definitions(${PNG_DEFINITIONS}) |
|
26 |
ocv_include_directories(${PNG_INCLUDE_DIR}) |
|
27 |
list(APPEND GRFMT_LIBS ${PNG_LIBRARIES}) |
|
28 |
endif() |
|
29 | ||
30 |
if(WITH_TIFF) |
|
31 |
add_definitions(-DHAVE_TIFF) |
|
32 |
ocv_include_directories(${TIFF_INCLUDE_DIR}) |
|
33 |
list(APPEND GRFMT_LIBS ${TIFF_LIBRARIES}) |
|
34 |
endif() |
|
35 | ||
36 |
if(WITH_JASPER) |
|
37 |
add_definitions(-DHAVE_JASPER) |
|
38 |
ocv_include_directories(${JASPER_INCLUDE_DIR}) |
|
39 |
list(APPEND GRFMT_LIBS ${JASPER_LIBRARIES}) |
|
40 |
endif() |
|
41 | ||
42 |
if(WITH_OPENEXR) |
|
43 |
add_definitions(-DHAVE_OPENEXR) |
|
44 |
include_directories(SYSTEM ${OPENEXR_INCLUDE_PATHS}) |
|
45 |
list(APPEND GRFMT_LIBS ${OPENEXR_LIBRARIES}) |
|
46 |
endif() |
|
47 | ||
48 |
file(GLOB grfmt_hdrs src/grfmt*.hpp) |
|
49 |
file(GLOB grfmt_srcs src/grfmt*.cpp) |
|
50 |
list(APPEND grfmt_hdrs src/bitstrm.hpp) |
|
51 |
list(APPEND grfmt_srcs src/bitstrm.cpp) |
|
52 | ||
53 |
source_group("Src\\grfmts" FILES ${grfmt_hdrs} ${grfmt_srcs}) |
|
54 | ||
55 |
set(highgui_hdrs |
|
56 |
src/precomp.hpp |
|
57 |
src/utils.hpp |
|
58 |
src/cap_ffmpeg_impl.hpp |
|
59 |
) |
|
60 | ||
61 |
set(highgui_srcs |
|
62 |
src/cap.cpp |
|
63 |
src/cap_images.cpp |
|
64 |
src/cap_ffmpeg.cpp |
|
65 |
src/loadsave.cpp |
|
66 |
src/precomp.cpp |
|
67 |
src/utils.cpp |
|
68 |
src/window.cpp |
|
69 |
) |
|
70 | ||
71 |
file(GLOB highgui_ext_hdrs "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h") |
|
72 | ||
73 |
if(HAVE_QT) |
|
74 |
if (HAVE_QT_OPENGL) |
|
75 |
set(QT_USE_QTOPENGL TRUE) |
|
76 |
endif() |
|
77 |
include(${QT_USE_FILE}) |
|
78 | ||
79 |
if(QT_INCLUDE_DIR) |
|
80 |
ocv_include_directories(${QT_INCLUDE_DIR}) |
|
81 |
endif() |
|
82 | ||
83 |
QT4_ADD_RESOURCES(_RCC_OUTFILES src/window_QT.qrc) |
|
84 |
QT4_WRAP_CPP(_MOC_OUTFILES src/window_QT.h) |
|
85 | ||
86 |
list(APPEND HIGHGUI_LIBRARIES ${QT_LIBRARIES} ${QT_QTTEST_LIBRARY}) |
|
87 |
list(APPEND highgui_srcs src/window_QT.cpp ${_MOC_OUTFILES} ${_RCC_OUTFILES}) |
|
88 |
ocv_check_flag_support(CXX -Wno-missing-declarations _have_flag) |
|
89 |
if(${_have_flag}) |
|
90 |
set_source_files_properties(${_RCC_OUTFILES} PROPERTIES COMPILE_FLAGS -Wno-missing-declarations) |
|
91 |
endif() |
|
92 |
elseif(WIN32) |
|
93 |
list(APPEND highgui_srcs src/window_w32.cpp) |
|
94 |
elseif(HAVE_GTK) |
|
95 |
list(APPEND highgui_srcs src/window_gtk.cpp) |
|
96 |
elseif(APPLE) |
|
97 |
if(WITH_CARBON) |
|
98 |
add_definitions(-DHAVE_CARBON=1) |
|
99 |
list(APPEND highgui_srcs src/window_carbon.cpp) |
|
100 |
list(APPEND HIGHGUI_LIBRARIES "-framework Carbon" "-framework QuickTime") |
|
101 |
elseif(NOT IOS) |
|
102 |
add_definitions(-DHAVE_COCOA=1) |
|
103 |
list(APPEND highgui_srcs src/window_cocoa.mm) |
|
104 |
list(APPEND HIGHGUI_LIBRARIES "-framework Cocoa") |
|
105 |
endif() |
|
106 |
endif() |
|
107 | ||
108 |
if(WIN32) |
|
109 |
list(APPEND highgui_srcs src/cap_vfw.cpp src/cap_cmu.cpp src/cap_dshow.cpp) |
|
110 |
endif(WIN32) |
|
111 | ||
112 |
if(HAVE_XINE) |
|
113 |
list(APPEND highgui_srcs src/cap_xine.cpp) |
|
114 |
endif(HAVE_XINE) |
|
115 | ||
116 |
if(HAVE_DC1394_2) |
|
117 |
list(APPEND highgui_srcs src/cap_dc1394_v2.cpp) |
|
118 |
endif(HAVE_DC1394_2) |
|
119 | ||
120 |
if(HAVE_DC1394) |
|
121 |
list(APPEND highgui_srcs src/cap_dc1394.cpp) |
|
122 |
endif(HAVE_DC1394) |
|
123 | ||
124 |
if(HAVE_GSTREAMER) |
|
125 |
list(APPEND highgui_srcs src/cap_gstreamer.cpp) |
|
126 |
endif(HAVE_GSTREAMER) |
|
127 | ||
128 |
if(HAVE_UNICAP) |
|
129 |
list(APPEND highgui_srcs src/cap_unicap.cpp) |
|
130 |
endif(HAVE_UNICAP) |
|
131 | ||
132 |
if(HAVE_LIBV4L) |
|
133 |
list(APPEND highgui_srcs src/cap_libv4l.cpp) |
|
134 |
elseif(HAVE_CAMV4L OR HAVE_CAMV4L2) |
|
135 |
list(APPEND highgui_srcs src/cap_v4l.cpp) |
|
136 |
endif() |
|
137 | ||
138 |
if(HAVE_OPENNI) |
|
139 |
list(APPEND highgui_srcs src/cap_openni.cpp) |
|
140 |
ocv_include_directories(${OPENNI_INCLUDE_DIR}) |
|
141 |
list(APPEND HIGHGUI_LIBRARIES ${OPENNI_LIBRARY}) |
|
142 |
endif(HAVE_OPENNI) |
|
143 | ||
144 |
if(HAVE_opencv_androidcamera) |
|
145 |
list(APPEND highgui_srcs src/cap_android.cpp) |
|
146 |
add_definitions(-DHAVE_ANDROID_NATIVE_CAMERA)#TODO: remove this line |
|
147 |
endif(HAVE_opencv_androidcamera) |
|
148 | ||
149 |
if(HAVE_XIMEA) |
|
150 |
list(APPEND highgui_srcs src/cap_ximea.cpp) |
|
151 |
ocv_include_directories(${XIMEA_PATH}) |
|
152 |
if(XIMEA_LIBRARY_DIR) |
|
153 |
link_directories(${XIMEA_LIBRARY_DIR}) |
|
154 |
endif() |
|
155 |
list(APPEND HIGHGUI_LIBRARIES m3api) |
|
156 |
endif(HAVE_XIMEA) |
|
157 | ||
158 |
if(HAVE_FFMPEG) |
|
159 |
if(UNIX AND BZIP2_LIBRARIES) |
|
160 |
list(APPEND HIGHGUI_LIBRARIES ${BZIP2_LIBRARIES}) |
|
161 |
endif() |
|
162 |
if(APPLE) |
|
163 |
list(APPEND HIGHGUI_LIBRARIES "-framework VideoDecodeAcceleration" bz2) |
|
164 |
endif() |
|
165 |
endif(HAVE_FFMPEG) |
|
166 | ||
167 |
if(HAVE_PVAPI) |
|
168 |
add_definitions(-DHAVE_PVAPI) |
|
169 |
ocv_include_directories(${PVAPI_INCLUDE_PATH}) |
|
170 |
set(highgui_srcs src/cap_pvapi.cpp ${highgui_srcs}) |
|
171 |
list(APPEND HIGHGUI_LIBRARIES ${PVAPI_LIBRARY}) |
|
172 |
endif() |
|
173 | ||
174 |
if(HAVE_GIGE_API) |
|
175 |
add_definitions(-DHAVE_GIGE_API) |
|
176 |
ocv_include_directories(${GIGEAPI_INCLUDE_PATH}) |
|
177 |
set(highgui_srcs src/cap_giganetix.cpp ${highgui_srcs}) |
|
178 |
list(APPEND HIGHGUI_LIBRARIES ${GIGEAPI_LIBRARIES}) |
|
179 |
list(APPEND highgui_srcs src/cap_giganetix.cpp) |
|
180 |
endif(HAVE_GIGE_API) |
|
181 | ||
182 |
if(WITH_IMAGEIO) |
|
183 |
add_definitions(-DHAVE_IMAGEIO=1) |
|
184 |
if(IOS) |
|
185 |
list(APPEND HIGHGUI_LIBRARIES "-framework ImageIO") |
|
186 |
endif() |
|
187 |
endif(WITH_IMAGEIO) |
|
188 | ||
189 |
if(WITH_AVFOUNDATION) |
|
190 |
add_definitions(-DHAVE_AVFOUNDATION=1) |
|
191 |
list(APPEND highgui_srcs src/cap_avfoundation.mm) |
|
192 |
list(APPEND HIGHGUI_LIBRARIES "-framework AVFoundation" "-framework QuartzCore") |
|
193 |
elseif(APPLE) |
|
194 |
add_definitions(-DHAVE_QUICKTIME=1) |
|
195 |
if(WITH_QUICKTIME) |
|
196 |
list(APPEND highgui_srcs src/cap_qt.cpp) |
|
197 |
list(APPEND HIGHGUI_LIBRARIES "-framework Carbon" "-framework QuickTime" "-framework CoreFoundation" "-framework QuartzCore") |
|
198 |
else() |
|
199 |
list(APPEND highgui_srcs src/cap_qtkit.mm) |
|
200 |
list(APPEND HIGHGUI_LIBRARIES "-framework QTKit" "-framework QuartzCore" "-framework AppKit") |
|
201 |
endif() |
|
202 |
endif() |
|
203 | ||
204 |
if(IOS) |
|
205 |
add_definitions(-DHAVE_IOS=1) |
|
206 |
list(APPEND highgui_srcs src/cap_ios_abstract_camera.mm src/cap_ios_photo_camera.mm src/cap_ios_video_camera.mm) |
|
207 |
list(APPEND HIGHGUI_LIBRARIES "-framework Accelerate" "-framework AVFoundation" "-framework CoreGraphics" "-framework CoreImage" "-framework CoreMedia" "-framework CoreVideo" "-framework QuartzCore" "-framework AssetsLibrary") |
|
208 |
endif() |
|
209 | ||
210 |
if(WIN32) |
|
211 |
link_directories("${OpenCV_SOURCE_DIR}/3rdparty/lib") # for ffmpeg wrapper only |
|
212 |
include_directories(AFTER SYSTEM "${OpenCV_SOURCE_DIR}/3rdparty/include") # for directshow in VS2005 and multi-monitor support on MinGW |
|
213 |
endif() |
|
214 | ||
215 |
if(UNIX) |
|
216 |
#these variables are set by CHECK_MODULE macro |
|
217 |
foreach(P ${HIGHGUI_INCLUDE_DIRS}) |
|
218 |
ocv_include_directories(${P}) |
|
219 |
endforeach() |
|
220 | ||
221 |
foreach(P ${HIGHGUI_LIBRARY_DIRS}) |
|
222 |
link_directories(${P}) |
|
223 |
endforeach() |
|
224 |
endif() |
|
225 | ||
226 |
source_group("Src" FILES ${highgui_srcs} ${highgui_hdrs}) |
|
227 |
source_group("Include" FILES ${highgui_ext_hdrs}) |
|
228 |
ocv_set_module_sources(HEADERS ${highgui_ext_hdrs} SOURCES ${highgui_srcs} ${highgui_hdrs} ${grfmt_srcs} ${grfmt_hdrs}) |
|
229 |
ocv_module_include_directories() |
|
230 | ||
231 |
ocv_create_module(${GRFMT_LIBS} ${HIGHGUI_LIBRARIES}) |
|
232 | ||
233 |
if(BUILD_SHARED_LIBS) |
|
234 |
add_definitions(-DHIGHGUI_EXPORTS) |
|
235 |
endif() |
|
236 | ||
237 |
if(MSVC) |
|
238 |
set_target_properties(${the_module} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /NODEFAULTLIB:libcmt.lib /DEBUG") |
|
239 |
endif() |
|
240 | ||
241 |
#stop automatic dependencies propagation for this module |
|
242 |
set_target_properties(${the_module} PROPERTIES LINK_INTERFACE_LIBRARIES "") |
|
243 | ||
244 |
ocv_add_precompiled_headers(${the_module}) |
|
245 |
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wno-deprecated-declarations) |
|
246 | ||
247 |
if(WIN32 AND WITH_FFMPEG) |
|
248 |
#copy ffmpeg dll to the output folder |
|
249 |
if(MSVC64 OR MINGW64) |
|
250 |
set(FFMPEG_SUFFIX _64) |
|
251 |
endif() |
|
252 | ||
253 |
set(ffmpeg_bare_name "opencv_ffmpeg${FFMPEG_SUFFIX}.dll") |
|
254 |
set(ffmpeg_bare_name_ver "opencv_ffmpeg${OPENCV_DLLVERSION}${FFMPEG_SUFFIX}.dll") |
|
255 |
set(ffmpeg_path "${OpenCV_SOURCE_DIR}/3rdparty/ffmpeg/${ffmpeg_bare_name}") |
|
256 | ||
257 |
#if(MSVC AND CMAKE_VERSION VERSION_GREATER "2.8.2") |
|
258 |
# add_custom_command(TARGET ${the_module} POST_BUILD |
|
259 |
# COMMAND ${CMAKE_COMMAND} -E copy "${ffmpeg_path}" "${EXECUTABLE_OUTPUT_PATH}/$<CONFIGURATION>/${ffmpeg_bare_name_ver}" |
|
260 |
# COMMENT "Copying ${ffmpeg_path} to the output directory") |
|
261 |
#else |
|
262 |
if(MSVC_IDE) |
|
263 |
add_custom_command(TARGET ${the_module} POST_BUILD |
|
264 |
COMMAND ${CMAKE_COMMAND} -E copy "${ffmpeg_path}" "${EXECUTABLE_OUTPUT_PATH}/Release/${ffmpeg_bare_name_ver}" |
|
265 |
COMMAND ${CMAKE_COMMAND} -E copy "${ffmpeg_path}" "${EXECUTABLE_OUTPUT_PATH}/Debug/${ffmpeg_bare_name_ver}" |
|
266 |
COMMENT "Copying ${ffmpeg_path} to the output directory") |
|
267 |
elseif(MSVC) |
|
268 |
add_custom_command(TARGET ${the_module} POST_BUILD |
|
269 |
COMMAND ${CMAKE_COMMAND} -E copy "${ffmpeg_path}" "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/${ffmpeg_bare_name_ver}" |
|
270 |
COMMENT "Copying ${ffmpeg_path} to the output directory") |
|
271 |
else() |
|
272 |
add_custom_command(TARGET ${the_module} POST_BUILD |
|
273 |
COMMAND ${CMAKE_COMMAND} -E copy "${ffmpeg_path}" "${EXECUTABLE_OUTPUT_PATH}/${ffmpeg_bare_name_ver}" |
|
274 |
COMMENT "Copying ${ffmpeg_path} to the output directory") |
|
275 |
endif() |
|
276 | ||
277 |
install(FILES "${ffmpeg_path}" DESTINATION bin COMPONENT main RENAME "${ffmpeg_bare_name_ver}") |
|
278 |
endif() |
|
279 | ||
280 |
ocv_add_accuracy_tests() |
|
281 |
ocv_add_perf_tests() |
|
1 |
set(the_description "High-level GUI and Media I/O") |
|
2 |
ocv_add_module(highgui opencv_imgproc OPTIONAL opencv_androidcamera) |
|
3 |
|
|
4 |
# ---------------------------------------------------------------------------- |
|
5 |
# CMake file for highgui. See root CMakeLists.txt |
|
6 |
# Some parts taken from version of Hartmut Seichter, HIT Lab NZ. |
|
7 |
# Jose Luis Blanco, 2008 |
|
8 |
# ---------------------------------------------------------------------------- |
|
9 |
|
|
10 |
ocv_clear_vars(GRFMT_LIBS) |
|
11 |
|
|
12 |
if(WITH_PNG OR WITH_TIFF OR WITH_OPENEXR) |
|
13 |
ocv_include_directories(${ZLIB_INCLUDE_DIR}) |
|
14 |
list(APPEND GRFMT_LIBS ${ZLIB_LIBRARIES}) |
|
15 |
endif() |
|
16 |
|
|
17 |
if(WITH_JPEG) |
|
18 |
add_definitions(-DHAVE_JPEG) |
|
19 |
ocv_include_directories(${JPEG_INCLUDE_DIR}) |
|
20 |
list(APPEND GRFMT_LIBS ${JPEG_LIBRARIES}) |
|
21 |
endif() |
|
22 |
|
|
23 |
if(WITH_PNG) |
|
24 |
add_definitions(-DHAVE_PNG) |
|
25 |
add_definitions(${PNG_DEFINITIONS}) |
|
26 |
ocv_include_directories(${PNG_INCLUDE_DIR}) |
|
27 |
list(APPEND GRFMT_LIBS ${PNG_LIBRARIES}) |
|
28 |
endif() |
|
29 |
|
|
30 |
if(WITH_TIFF) |
|
31 |
add_definitions(-DHAVE_TIFF) |
|
32 |
ocv_include_directories(${TIFF_INCLUDE_DIR}) |
|
33 |
list(APPEND GRFMT_LIBS ${TIFF_LIBRARIES}) |
|
34 |
endif() |
|
35 |
|
|
36 |
if(WITH_JASPER) |
|
37 |
add_definitions(-DHAVE_JASPER) |
|
38 |
ocv_include_directories(${JASPER_INCLUDE_DIR}) |
|
39 |
list(APPEND GRFMT_LIBS ${JASPER_LIBRARIES}) |
|
40 |
endif() |
|
41 |
|
|
42 |
if(WITH_OPENEXR) |
|
43 |
add_definitions(-DHAVE_OPENEXR) |
|
44 |
include_directories(SYSTEM ${OPENEXR_INCLUDE_PATHS}) |
|
45 |
list(APPEND GRFMT_LIBS ${OPENEXR_LIBRARIES}) |
|
46 |
endif() |
|
47 |
|
|
48 |
file(GLOB grfmt_hdrs src/grfmt*.hpp) |
|
49 |
file(GLOB grfmt_srcs src/grfmt*.cpp) |
|
50 |
list(APPEND grfmt_hdrs src/bitstrm.hpp) |
|
51 |
list(APPEND grfmt_srcs src/bitstrm.cpp) |
|
52 |
|
|
53 |
source_group("Src\\grfmts" FILES ${grfmt_hdrs} ${grfmt_srcs}) |
|
54 |
|
|
55 |
set(highgui_hdrs |
|
56 |
src/precomp.hpp |
|
57 |
src/utils.hpp |
|
58 |
src/cap_ffmpeg_impl.hpp |
|
59 |
) |
|
60 |
|
|
61 |
set(highgui_srcs |
|
62 |
src/cap.cpp |
|
63 |
src/cap_images.cpp |
|
64 |
src/cap_ffmpeg.cpp |
|
65 |
src/loadsave.cpp |
|
66 |
src/precomp.cpp |
|
67 |
src/utils.cpp |
|
68 |
src/window.cpp |
|
69 |
) |
|
70 |
|
|
71 |
file(GLOB highgui_ext_hdrs "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h") |
|
72 |
|
|
73 |
if(HAVE_QT) |
|
74 |
if (HAVE_QT_OPENGL) |
|
75 |
set(QT_USE_QTOPENGL TRUE) |
|
76 |
endif() |
|
77 |
include(${QT_USE_FILE}) |
|
78 |
|
|
79 |
if(QT_INCLUDE_DIR) |
|
80 |
ocv_include_directories(${QT_INCLUDE_DIR}) |
|
81 |
endif() |
|
82 |
|
|
83 |
QT4_ADD_RESOURCES(_RCC_OUTFILES src/window_QT.qrc) |
|
84 |
QT4_WRAP_CPP(_MOC_OUTFILES src/window_QT.h) |
|
85 |
|
|
86 |
list(APPEND HIGHGUI_LIBRARIES ${QT_LIBRARIES} ${QT_QTTEST_LIBRARY}) |
|
87 |
list(APPEND highgui_srcs src/window_QT.cpp ${_MOC_OUTFILES} ${_RCC_OUTFILES}) |
|
88 |
ocv_check_flag_support(CXX -Wno-missing-declarations _have_flag) |
|
89 |
if(${_have_flag}) |
|
90 |
set_source_files_properties(${_RCC_OUTFILES} PROPERTIES COMPILE_FLAGS -Wno-missing-declarations) |
|
91 |
endif() |
|
92 |
elseif(WIN32) |
|
93 |
list(APPEND highgui_srcs src/window_w32.cpp) |
|
94 |
elseif(HAVE_GTK) |
|
95 |
list(APPEND highgui_srcs src/window_gtk.cpp) |
|
96 |
elseif(APPLE) |
|
97 |
if(WITH_CARBON) |
|
98 |
add_definitions(-DHAVE_CARBON=1) |
|
99 |
list(APPEND highgui_srcs src/window_carbon.cpp) |
|
100 |
list(APPEND HIGHGUI_LIBRARIES "-framework Carbon" "-framework QuickTime") |
|
101 |
elseif(NOT IOS) |
|
102 |
add_definitions(-DHAVE_COCOA=1) |
|
103 |
list(APPEND highgui_srcs src/window_cocoa.mm) |
|
104 |
list(APPEND HIGHGUI_LIBRARIES "-framework Cocoa") |
|
105 |
endif() |
|
106 |
endif() |
|
107 |
|
|
108 |
if(WIN32) |
|
109 |
list(APPEND highgui_srcs src/cap_vfw.cpp src/cap_cmu.cpp src/cap_dshow.cpp) |
|
110 |
endif(WIN32) |
|
111 |
|
|
112 |
if(HAVE_XINE) |
|
113 |
list(APPEND highgui_srcs src/cap_xine.cpp) |
|
114 |
endif(HAVE_XINE) |
|
115 |
|
|
116 |
if(HAVE_DC1394_2) |
|
117 |
list(APPEND highgui_srcs src/cap_dc1394_v2.cpp) |
|
118 |
endif(HAVE_DC1394_2) |
|
119 |
|
|
120 |
if(HAVE_DC1394) |
|
121 |
list(APPEND highgui_srcs src/cap_dc1394.cpp) |
|
122 |
endif(HAVE_DC1394) |
|
123 |
|
|
124 |
if(HAVE_GSTREAMER) |
|
125 |
list(APPEND highgui_srcs src/cap_gstreamer.cpp) |
|
126 |
endif(HAVE_GSTREAMER) |
|
127 |
|
|
128 |
if(HAVE_UNICAP) |
|
129 |
list(APPEND highgui_srcs src/cap_unicap.cpp) |
|
130 |
endif(HAVE_UNICAP) |
|
131 |
|
|
132 |
if(HAVE_LIBV4L) |
|
133 |
list(APPEND highgui_srcs src/cap_libv4l.cpp) |
|
134 |
elseif(HAVE_CAMV4L OR HAVE_CAMV4L2) |
|
135 |
list(APPEND highgui_srcs src/cap_v4l.cpp) |
|
136 |
endif() |
|
137 |
|
|
138 |
if(HAVE_OPENNI) |
|
139 |
list(APPEND highgui_srcs src/cap_openni.cpp) |
|
140 |
ocv_include_directories(${OPENNI_INCLUDE_DIR}) |
|
141 |
list(APPEND HIGHGUI_LIBRARIES ${OPENNI_LIBRARY}) |
|
142 |
endif(HAVE_OPENNI) |
|
143 |
|
|
144 |
if(HAVE_opencv_androidcamera) |
|
145 |
list(APPEND highgui_srcs src/cap_android.cpp) |
|
146 |
add_definitions(-DHAVE_ANDROID_NATIVE_CAMERA)#TODO: remove this line |
|
147 |
endif(HAVE_opencv_androidcamera) |
|
148 |
|
|
149 |
if(HAVE_XIMEA) |
|
150 |
list(APPEND highgui_srcs src/cap_ximea.cpp) |
|
151 |
ocv_include_directories(${XIMEA_PATH}) |
|
152 |
if(XIMEA_LIBRARY_DIR) |
|
153 |
link_directories(${XIMEA_LIBRARY_DIR}) |
|
154 |
endif() |
|
155 |
if(CMAKE_CL_64) |
|
156 |
list(APPEND HIGHGUI_LIBRARIES m3apiX64) |
|
157 |
else() |
|
158 |
list(APPEND HIGHGUI_LIBRARIES m3api) |
|
159 |
endif() |
|
160 |
endif(HAVE_XIMEA) |
|
161 |
|
|
162 |
if(HAVE_FFMPEG) |
|
163 |
if(UNIX AND BZIP2_LIBRARIES) |
|
164 |
list(APPEND HIGHGUI_LIBRARIES ${BZIP2_LIBRARIES}) |
|
165 |
endif() |
|
166 |
if(APPLE) |
|
167 |
list(APPEND HIGHGUI_LIBRARIES "-framework VideoDecodeAcceleration" bz2) |
|
168 |
endif() |
|
169 |
endif(HAVE_FFMPEG) |
|
170 |
|
|
171 |
if(HAVE_PVAPI) |
|
172 |
add_definitions(-DHAVE_PVAPI) |
|
173 |
ocv_include_directories(${PVAPI_INCLUDE_PATH}) |
|
174 |
set(highgui_srcs src/cap_pvapi.cpp ${highgui_srcs}) |
|
175 |
list(APPEND HIGHGUI_LIBRARIES ${PVAPI_LIBRARY}) |
|
176 |
endif() |
|
177 |
|
|
178 |
if(HAVE_GIGE_API) |
|
179 |
add_definitions(-DHAVE_GIGE_API) |
|
180 |
ocv_include_directories(${GIGEAPI_INCLUDE_PATH}) |
|
181 |
set(highgui_srcs src/cap_giganetix.cpp ${highgui_srcs}) |
|
182 |
list(APPEND HIGHGUI_LIBRARIES ${GIGEAPI_LIBRARIES}) |
|
183 |
list(APPEND highgui_srcs src/cap_giganetix.cpp) |
|
184 |
endif(HAVE_GIGE_API) |
|
185 |
|
|
186 |
if(WITH_IMAGEIO) |
|
187 |
add_definitions(-DHAVE_IMAGEIO=1) |
|
188 |
if(IOS) |
|
189 |
list(APPEND HIGHGUI_LIBRARIES "-framework ImageIO") |
|
190 |
endif() |
|
191 |
endif(WITH_IMAGEIO) |
|
192 |
|
|
193 |
if(WITH_AVFOUNDATION) |
|
194 |
add_definitions(-DHAVE_AVFOUNDATION=1) |
|
195 |
list(APPEND highgui_srcs src/cap_avfoundation.mm) |
|
196 |
list(APPEND HIGHGUI_LIBRARIES "-framework AVFoundation" "-framework QuartzCore") |
|
197 |
elseif(APPLE) |
|
198 |
add_definitions(-DHAVE_QUICKTIME=1) |
|
199 |
if(WITH_QUICKTIME) |
|
200 |
list(APPEND highgui_srcs src/cap_qt.cpp) |
|
201 |
list(APPEND HIGHGUI_LIBRARIES "-framework Carbon" "-framework QuickTime" "-framework CoreFoundation" "-framework QuartzCore") |
|
202 |
else() |
|
203 |
list(APPEND highgui_srcs src/cap_qtkit.mm) |
|
204 |
list(APPEND HIGHGUI_LIBRARIES "-framework QTKit" "-framework QuartzCore" "-framework AppKit") |
|
205 |
endif() |
|
206 |
endif() |
|
207 |
|
|
208 |
if(IOS) |
|
209 |
add_definitions(-DHAVE_IOS=1) |
|
210 |
list(APPEND highgui_srcs src/cap_ios_abstract_camera.mm src/cap_ios_photo_camera.mm src/cap_ios_video_camera.mm) |
|
211 |
list(APPEND HIGHGUI_LIBRARIES "-framework Accelerate" "-framework AVFoundation" "-framework CoreGraphics" "-framework CoreImage" "-framework CoreMedia" "-framework CoreVideo" "-framework QuartzCore" "-framework AssetsLibrary") |
|
212 |
endif() |
|
213 |
|
|
214 |
if(WIN32) |
|
215 |
link_directories("${OpenCV_SOURCE_DIR}/3rdparty/lib") # for ffmpeg wrapper only |
|
216 |
include_directories(AFTER SYSTEM "${OpenCV_SOURCE_DIR}/3rdparty/include") # for directshow in VS2005 and multi-monitor support on MinGW |
|
217 |
endif() |
|
218 |
|
|
219 |
if(UNIX) |
|
220 |
#these variables are set by CHECK_MODULE macro |
|
221 |
foreach(P ${HIGHGUI_INCLUDE_DIRS}) |
|
222 |
ocv_include_directories(${P}) |
|
223 |
endforeach() |
|
224 |
|
|
225 |
foreach(P ${HIGHGUI_LIBRARY_DIRS}) |
|
226 |
link_directories(${P}) |
|
227 |
endforeach() |
|
228 |
endif() |
|
229 |
|
|
230 |
source_group("Src" FILES ${highgui_srcs} ${highgui_hdrs}) |
|
231 |
source_group("Include" FILES ${highgui_ext_hdrs}) |
|
232 |
ocv_set_module_sources(HEADERS ${highgui_ext_hdrs} SOURCES ${highgui_srcs} ${highgui_hdrs} ${grfmt_srcs} ${grfmt_hdrs}) |
|
233 |
ocv_module_include_directories() |
|
234 |
|
|
235 |
ocv_create_module(${GRFMT_LIBS} ${HIGHGUI_LIBRARIES}) |
|
236 |
|
|
237 |
if(BUILD_SHARED_LIBS) |
|
238 |
add_definitions(-DHIGHGUI_EXPORTS) |
|
239 |
endif() |
|
240 |
|
|
241 |
if(MSVC) |
|
242 |
set_target_properties(${the_module} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /NODEFAULTLIB:libcmt.lib /DEBUG") |
|
243 |
endif() |
|
244 |
|
|
245 |
#stop automatic dependencies propagation for this module |
|
246 |
set_target_properties(${the_module} PROPERTIES LINK_INTERFACE_LIBRARIES "") |
|
247 |
|
|
248 |
ocv_add_precompiled_headers(${the_module}) |
|
249 |
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wno-deprecated-declarations) |
|
250 |
|
|
251 |
if(WIN32 AND WITH_FFMPEG) |
|
252 |
#copy ffmpeg dll to the output folder |
|
253 |
if(MSVC64 OR MINGW64) |
|
254 |
set(FFMPEG_SUFFIX _64) |
|
255 |
endif() |
|
256 |
|
|
257 |
set(ffmpeg_bare_name "opencv_ffmpeg${FFMPEG_SUFFIX}.dll") |
|
258 |
set(ffmpeg_bare_name_ver "opencv_ffmpeg${OPENCV_DLLVERSION}${FFMPEG_SUFFIX}.dll") |
|
259 |
set(ffmpeg_path "${OpenCV_SOURCE_DIR}/3rdparty/ffmpeg/${ffmpeg_bare_name}") |
|
260 |
|
|
261 |
#if(MSVC AND CMAKE_VERSION VERSION_GREATER "2.8.2") |
|
262 |
# add_custom_command(TARGET ${the_module} POST_BUILD |
|
263 |
# COMMAND ${CMAKE_COMMAND} -E copy "${ffmpeg_path}" "${EXECUTABLE_OUTPUT_PATH}/$<CONFIGURATION>/${ffmpeg_bare_name_ver}" |
|
264 |
# COMMENT "Copying ${ffmpeg_path} to the output directory") |
|
265 |
#else |
|
266 |
if(MSVC_IDE) |
|
267 |
add_custom_command(TARGET ${the_module} POST_BUILD |
|
268 |
COMMAND ${CMAKE_COMMAND} -E copy "${ffmpeg_path}" "${EXECUTABLE_OUTPUT_PATH}/Release/${ffmpeg_bare_name_ver}" |
|
269 |
COMMAND ${CMAKE_COMMAND} -E copy "${ffmpeg_path}" "${EXECUTABLE_OUTPUT_PATH}/Debug/${ffmpeg_bare_name_ver}" |
|
270 |
COMMENT "Copying ${ffmpeg_path} to the output directory") |
|
271 |
elseif(MSVC) |
|
272 |
add_custom_command(TARGET ${the_module} POST_BUILD |
|
273 |
COMMAND ${CMAKE_COMMAND} -E copy "${ffmpeg_path}" "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/${ffmpeg_bare_name_ver}" |
|
274 |
COMMENT "Copying ${ffmpeg_path} to the output directory") |
|
275 |
else() |
|
276 |
add_custom_command(TARGET ${the_module} POST_BUILD |
|
277 |
COMMAND ${CMAKE_COMMAND} -E copy "${ffmpeg_path}" "${EXECUTABLE_OUTPUT_PATH}/${ffmpeg_bare_name_ver}" |
|
278 |
COMMENT "Copying ${ffmpeg_path} to the output directory") |
|
279 |
endif() |
|
280 |
|
|
281 |
install(FILES "${ffmpeg_path}" DESTINATION bin COMPONENT main RENAME "${ffmpeg_bare_name_ver}") |
|
282 |
endif() |
|
283 |
|
|
284 |
ocv_add_accuracy_tests() |
|
285 |
ocv_add_perf_tests() |
b/modules/highgui/src/cap_ximea.cpp | ||
---|---|---|
1 |
#include "precomp.hpp" |
|
2 | ||
3 |
#include "xiApi.h" |
|
4 |
#include "xiExt.h" |
|
5 |
#include "m3Api.h" |
|
6 | ||
7 |
/**********************************************************************************/ |
|
8 | ||
9 |
class CvCaptureCAM_XIMEA : public CvCapture |
|
10 |
{ |
|
11 |
public: |
|
12 |
CvCaptureCAM_XIMEA() { init(); } |
|
13 |
virtual ~CvCaptureCAM_XIMEA() { close(); } |
|
14 | ||
15 |
virtual bool open( int index ); |
|
16 |
virtual void close(); |
|
17 |
virtual double getProperty(int); |
|
18 |
virtual bool setProperty(int, double); |
|
19 |
virtual bool grabFrame(); |
|
20 |
virtual IplImage* retrieveFrame(int); |
|
21 |
virtual int getCaptureDomain() { return CV_CAP_XIAPI; } // Return the type of the capture object: CV_CAP_VFW, etc... |
|
22 | ||
23 |
protected: |
|
24 |
void init(); |
|
25 |
void errMsg(const char* msg, int errNum); |
|
26 |
IplImage* frame; |
|
27 | ||
28 |
HANDLE hmv; |
|
29 |
DWORD numDevices; |
|
30 |
XI_IMG image; |
|
31 |
int width; |
|
32 |
int height; |
|
33 |
int format; |
|
34 |
int timeout; |
|
35 |
}; |
|
36 | ||
37 |
/**********************************************************************************/ |
|
38 | ||
39 |
CvCapture* cvCreateCameraCapture_XIMEA( int index ) |
|
40 |
{ |
|
41 |
CvCaptureCAM_XIMEA* capture = new CvCaptureCAM_XIMEA; |
|
42 | ||
43 |
if( capture->open( index )) |
|
44 |
return capture; |
|
45 | ||
46 |
delete capture; |
|
47 |
return 0; |
|
48 |
} |
|
49 | ||
50 |
/**********************************************************************************/ |
|
51 |
// Enumerate connected devices |
|
52 |
void CvCaptureCAM_XIMEA::init() |
|
53 |
{ |
|
54 |
xiGetNumberDevices( &numDevices); |
|
55 |
hmv = NULL; |
|
56 |
memset(&image, 0, sizeof(XI_IMG)); |
|
57 |
} |
|
58 | ||
59 | ||
60 |
/**********************************************************************************/ |
|
61 |
// Initialize camera input |
|
62 |
bool CvCaptureCAM_XIMEA::open( int wIndex ) |
|
63 |
{ |
|
64 |
int mvret = XI_OK; |
|
65 | ||
66 |
if(numDevices == 0) |
|
67 |
return false; |
|
68 | ||
69 |
if((mvret = xiOpenDevice( wIndex, &hmv)) != XI_OK) |
|
70 |
{ |
|
71 |
errMsg("Open XI_DEVICE failed", mvret); |
|
72 |
return false; |
|
73 |
} |
|
74 | ||
75 |
// always use auto exposure/gain |
|
76 |
mvret = xiSetParamInt( hmv, XI_PRM_AEAG, 1); |
|
77 |
if(mvret != XI_OK) goto error; |
|
78 | ||
79 |
// always use auto white ballance |
|
80 |
mvret = xiSetParamInt( hmv, XI_PRM_AUTO_WB, 1); |
|
81 |
if(mvret != XI_OK) goto error; |
|
82 | ||
83 |
mvret = xiGetParamInt( hmv, XI_PRM_WIDTH, &width); |
|
84 |
if(mvret != XI_OK) goto error; |
|
85 | ||
86 |
mvret = xiGetParamInt( hmv, XI_PRM_HEIGHT, &height); |
|
87 |
if(mvret != XI_OK) goto error; |
|
88 | ||
89 |
// default image format RGB24 |
|
90 |
format = XI_RGB24; |
|
91 |
mvret = xiSetParamInt( hmv, XI_PRM_IMAGE_DATA_FORMAT, format); |
|
92 |
if(mvret != XI_OK) goto error; |
|
93 | ||
94 |
// allocate frame buffer for RGB24 image |
|
95 |
frame = cvCreateImage(cvSize( width, height), IPL_DEPTH_8U, 3); |
|
96 | ||
97 |
//default capture timeout 10s |
|
98 |
timeout = 10000; |
|
99 | ||
100 |
mvret = xiStartAcquisition(hmv); |
|
101 |
if(mvret != XI_OK) |
|
102 |
{ |
|
103 |
errMsg("StartAcquisition XI_DEVICE failed", mvret); |
|
104 |
goto error; |
|
105 |
} |
|
106 | ||
107 |
return true; |
|
108 | ||
109 |
error: |
|
110 |
xiCloseDevice(hmv); |
|
111 |
hmv = NULL; |
|
112 |
return false; |
|
113 |
} |
|
114 | ||
115 |
/**********************************************************************************/ |
|
116 | ||
117 |
void CvCaptureCAM_XIMEA::close() |
|
118 |
{ |
|
119 |
if(hmv) |
|
120 |
{ |
|
121 |
xiStopAcquisition(hmv); |
|
122 |
xiCloseDevice(hmv); |
|
123 |
hmv = NULL; |
|
124 |
} |
|
125 |
} |
|
126 | ||
127 |
/**********************************************************************************/ |
|
128 | ||
129 |
bool CvCaptureCAM_XIMEA::grabFrame() |
|
130 |
{ |
|
131 |
image.size = sizeof(XI_IMG); |
|
132 |
int mvret = xiGetImage( hmv, timeout, &image); |
|
133 | ||
134 |
if(mvret == MM40_ACQUISITION_STOPED) |
|
135 |
{ |
|
136 |
xiStartAcquisition(hmv); |
|
137 |
mvret = xiGetImage(hmv, timeout, &image); |
|
138 |
} |
|
139 | ||
140 |
if(mvret != XI_OK) |
|
141 |
{ |
|
142 |
errMsg("Error during GetImage", mvret); |
|
143 |
return false; |
|
144 |
} |
|
145 | ||
146 |
return true; |
|
147 |
} |
|
148 | ||
149 |
/**********************************************************************************/ |
|
150 | ||
151 |
IplImage* CvCaptureCAM_XIMEA::retrieveFrame(int) |
|
152 |
{ |
|
153 |
// update cvImage after format has changed |
|
154 |
if( (int)image.width != width || (int)image.height != height || image.frm != (XI_IMG_FORMAT)format) |
|
155 |
{ |
|
156 |
cvReleaseImage(&frame); |
|
157 |
switch( image.frm) |
|
158 |
{ |
|
159 |
case XI_MONO8 : frame = cvCreateImage(cvSize( image.width, image.height), IPL_DEPTH_8U, 1); break; |
|
160 |
case XI_MONO16 : frame = cvCreateImage(cvSize( image.width, image.height), IPL_DEPTH_16U, 1); break; |
|
161 |
case XI_RGB24 : frame = cvCreateImage(cvSize( image.width, image.height), IPL_DEPTH_8U, 3); break; |
|
162 |
case XI_RGB32 : frame = cvCreateImage(cvSize( image.width, image.height), IPL_DEPTH_8U, 4); break; |
|
163 |
default : |
|
164 |
return frame; |
|
165 |
} |
|
166 |
// update global image format |
|
167 |
format = image.frm; |
|
168 |
width = image.width; |
|
169 |
height = image.height; |
|
170 |
} |
|
171 | ||
172 |
// copy pixel data |
|
173 |
switch( image.frm) |
|
174 |
{ |
|
175 |
case XI_MONO8 : memcpy( frame->imageData, image.bp, image.width*image.height); break; |
|
176 |
case XI_MONO16 : memcpy( frame->imageData, image.bp, image.width*image.height*sizeof(WORD)); break; |
|
177 |
case XI_RGB24 : memcpy( frame->imageData, image.bp, image.width*image.height*3); break; |
|
178 |
case XI_RGB32 : memcpy( frame->imageData, image.bp, image.width*image.height*sizeof(DWORD)); break; |
|
179 |
default: break; |
|
180 |
} |
|
181 |
return frame; |
|
182 |
} |
|
183 | ||
184 |
/**********************************************************************************/ |
|
185 | ||
186 |
double CvCaptureCAM_XIMEA::getProperty( int property_id ) |
|
187 |
{ |
|
188 |
if(hmv == NULL) |
|
189 |
return 0; |
|
190 | ||
191 |
int ival = 0; |
|
192 |
float fval = 0; |
|
193 | ||
194 |
switch( property_id ) |
|
195 |
{ |
|
196 |
// OCV parameters |
|
197 |
case CV_CAP_PROP_POS_FRAMES : return (double) image.nframe; |
|
198 |
case CV_CAP_PROP_FRAME_WIDTH : xiGetParamInt( hmv, XI_PRM_WIDTH, &ival); return ival; |
|
199 |
case CV_CAP_PROP_FRAME_HEIGHT : xiGetParamInt( hmv, XI_PRM_HEIGHT, &ival); return ival; |
|
200 |
case CV_CAP_PROP_FPS : xiGetParamFloat( hmv, XI_PRM_FRAMERATE, &fval); return fval; |
|
201 |
case CV_CAP_PROP_GAIN : xiGetParamFloat( hmv, XI_PRM_GAIN, &fval); return fval; |
|
202 |
case CV_CAP_PROP_EXPOSURE : xiGetParamInt( hmv, XI_PRM_EXPOSURE, &ival); return ival; |
|
203 | ||
204 |
// XIMEA camera properties |
|
205 |
case CV_CAP_PROP_XI_DOWNSAMPLING : xiGetParamInt( hmv, XI_PRM_DOWNSAMPLING, &ival); return ival; |
|
206 |
case CV_CAP_PROP_XI_DATA_FORMAT : xiGetParamInt( hmv, XI_PRM_IMAGE_DATA_FORMAT, &ival); return ival; |
|
207 |
case CV_CAP_PROP_XI_OFFSET_X : xiGetParamInt( hmv, XI_PRM_OFFSET_X, &ival); return ival; |
|
208 |
case CV_CAP_PROP_XI_OFFSET_Y : xiGetParamInt( hmv, XI_PRM_OFFSET_Y, &ival); return ival; |
|
209 |
case CV_CAP_PROP_XI_TRG_SOURCE : xiGetParamInt( hmv, XI_PRM_TRG_SOURCE, &ival); return ival; |
|
210 |
case CV_CAP_PROP_XI_GPI_SELECTOR : xiGetParamInt( hmv, XI_PRM_GPI_SELECTOR, &ival); return ival; |
|
211 |
case CV_CAP_PROP_XI_GPI_MODE : xiGetParamInt( hmv, XI_PRM_GPI_MODE, &ival); return ival; |
|
212 |
case CV_CAP_PROP_XI_GPI_LEVEL : xiGetParamInt( hmv, XI_PRM_GPI_LEVEL, &ival); return ival; |
|
213 |
case CV_CAP_PROP_XI_GPO_SELECTOR : xiGetParamInt( hmv, XI_PRM_GPO_SELECTOR, &ival); return ival; |
|
214 |
case CV_CAP_PROP_XI_GPO_MODE : xiGetParamInt( hmv, XI_PRM_GPO_MODE, &ival); return ival; |
|
215 |
case CV_CAP_PROP_XI_LED_SELECTOR : xiGetParamInt( hmv, XI_PRM_LED_SELECTOR, &ival); return ival; |
|
216 |
case CV_CAP_PROP_XI_LED_MODE : xiGetParamInt( hmv, XI_PRM_LED_MODE, &ival); return ival; |
|
217 |
case CV_CAP_PROP_XI_AUTO_WB : xiGetParamInt( hmv, XI_PRM_AUTO_WB, &ival); return ival; |
|
218 |
case CV_CAP_PROP_XI_AEAG : xiGetParamInt( hmv, XI_PRM_AEAG, &ival); return ival; |
|
219 |
case CV_CAP_PROP_XI_EXP_PRIORITY : xiGetParamFloat( hmv, XI_PRM_EXP_PRIORITY, &fval); return fval; |
|
220 |
case CV_CAP_PROP_XI_AE_MAX_LIMIT : xiGetParamInt( hmv, XI_PRM_EXP_PRIORITY, &ival); return ival; |
|
221 |
case CV_CAP_PROP_XI_AG_MAX_LIMIT : xiGetParamFloat( hmv, XI_PRM_AG_MAX_LIMIT, &fval); return fval; |
|
222 |
case CV_CAP_PROP_XI_AEAG_LEVEL : xiGetParamInt( hmv, XI_PRM_AEAG_LEVEL, &ival); return ival; |
|
223 |
case CV_CAP_PROP_XI_TIMEOUT : return timeout; |
|
224 | ||
225 |
} |
|
226 |
return 0; |
|
227 |
} |
|
228 | ||
229 |
/**********************************************************************************/ |
|
230 | ||
231 |
bool CvCaptureCAM_XIMEA::setProperty( int property_id, double value ) |
|
232 |
{ |
|
233 |
int ival = (int) value; |
|
234 |
float fval = (float) value; |
|
235 | ||
236 |
int mvret = XI_OK; |
|
237 | ||
238 |
switch(property_id) |
|
239 |
{ |
|
240 |
// OCV parameters |
|
241 |
case CV_CAP_PROP_FRAME_WIDTH : mvret = xiSetParamInt( hmv, XI_PRM_WIDTH, ival); |
|
242 |
if(mvret == XI_OK) width = ival; |
|
243 |
break; |
|
244 |
case CV_CAP_PROP_FRAME_HEIGHT : mvret = xiSetParamInt( hmv, XI_PRM_HEIGHT, ival); |
|
245 |
if(mvret == XI_OK) height = ival; |
|
246 |
break; |
|
247 |
case CV_CAP_PROP_FPS : mvret = xiSetParamFloat( hmv, XI_PRM_FRAMERATE, fval); break; |
|
248 |
case CV_CAP_PROP_GAIN : mvret = xiSetParamFloat( hmv, XI_PRM_GAIN, fval); break; |
|
249 |
case CV_CAP_PROP_EXPOSURE : mvret = xiSetParamInt( hmv, XI_PRM_EXPOSURE, ival); break; |
|
250 |
// XIMEA camera properties |
|
251 |
case CV_CAP_PROP_XI_DOWNSAMPLING : mvret = xiSetParamInt( hmv, XI_PRM_DOWNSAMPLING, ival); break; |
|
252 |
case CV_CAP_PROP_XI_DATA_FORMAT : mvret = xiSetParamInt( hmv, XI_PRM_IMAGE_DATA_FORMAT, ival); |
|
253 |
if(mvret == XI_OK) format = ival; |
|
254 |
break; |
|
255 |
case CV_CAP_PROP_XI_OFFSET_X : mvret = xiSetParamInt( hmv, XI_PRM_OFFSET_X, ival); break; |
|
256 |
case CV_CAP_PROP_XI_OFFSET_Y : mvret = xiSetParamInt( hmv, XI_PRM_OFFSET_Y, ival); break; |
|
257 |
case CV_CAP_PROP_XI_TRG_SOURCE : mvret = xiSetParamInt( hmv, XI_PRM_TRG_SOURCE, ival); break; |
|
258 |
case CV_CAP_PROP_XI_GPI_SELECTOR : mvret = xiSetParamInt( hmv, XI_PRM_GPI_SELECTOR, ival); break; |
|
259 |
case CV_CAP_PROP_XI_TRG_SOFTWARE : mvret = xiSetParamInt( hmv, XI_PRM_TRG_SOURCE, 1); break; |
|
260 |
case CV_CAP_PROP_XI_GPI_MODE : mvret = xiSetParamInt( hmv, XI_PRM_GPI_MODE, ival); break; |
|
261 |
case CV_CAP_PROP_XI_GPI_LEVEL : mvret = xiSetParamInt( hmv, XI_PRM_GPI_LEVEL, ival); break; |
|
262 |
case CV_CAP_PROP_XI_GPO_SELECTOR : mvret = xiSetParamInt( hmv, XI_PRM_GPO_SELECTOR, ival); break; |
|
263 |
case CV_CAP_PROP_XI_GPO_MODE : mvret = xiSetParamInt( hmv, XI_PRM_GPO_MODE, ival); break; |
|
264 |
case CV_CAP_PROP_XI_LED_SELECTOR : mvret = xiSetParamInt( hmv, XI_PRM_LED_SELECTOR, ival); break; |
|
265 |
case CV_CAP_PROP_XI_LED_MODE : mvret = xiSetParamInt( hmv, XI_PRM_LED_MODE, ival); break; |
|
266 |
case CV_CAP_PROP_XI_AUTO_WB : mvret = xiSetParamInt( hmv, XI_PRM_AUTO_WB, ival); break; |
|
267 |
case CV_CAP_PROP_XI_MANUAL_WB : mvret = xiSetParamInt( hmv, XI_PRM_LED_MODE, ival); break; |
|
268 |
case CV_CAP_PROP_XI_AEAG : mvret = xiSetParamInt( hmv, XI_PRM_AEAG, ival); break; |
|
269 |
case CV_CAP_PROP_XI_EXP_PRIORITY : mvret = xiSetParamFloat( hmv, XI_PRM_EXP_PRIORITY, fval); break; |
|
270 |
case CV_CAP_PROP_XI_AE_MAX_LIMIT : mvret = xiSetParamInt( hmv, XI_PRM_EXP_PRIORITY, ival); break; |
|
271 |
case CV_CAP_PROP_XI_AG_MAX_LIMIT : mvret = xiSetParamFloat( hmv, XI_PRM_AG_MAX_LIMIT, fval); break; |
|
272 |
case CV_CAP_PROP_XI_AEAG_LEVEL : mvret = xiSetParamInt( hmv, XI_PRM_AEAG_LEVEL, ival); break; |
|
273 |
case CV_CAP_PROP_XI_TIMEOUT : timeout = ival; break; |
|
274 |
} |
|
275 | ||
276 |
if(mvret != XI_OK) |
|
277 |
{ |
|
278 |
errMsg("Set parameter error", mvret); |
|
279 |
return false; |
|
280 |
} |
|
281 |
else |
|
282 |
return true; |
|
283 | ||
284 |
} |
|
285 | ||
286 |
/**********************************************************************************/ |
|
287 | ||
288 |
void CvCaptureCAM_XIMEA::errMsg(const char* msg, int errNum) |
|
289 |
{ |
|
290 |
#if defined WIN32 || defined _WIN32 |
|
291 |
char buf[512]; |
|
292 |
sprintf( buf, "%s : %d\n", msg, errNum); |
|
293 |
OutputDebugString(buf); |
|
294 |
#else |
|
295 |
fprintf(stderr, "%s : %d\n", msg, errNum); |
|
296 |
#endif |
|
297 |
} |
|
298 | ||
1 |
#include "precomp.hpp" |
|
2 |
|
|
3 |
#include "xiApi.h" |
|
4 |
#include "xiExt.h" |
|
5 |
#include "m3Api.h" |
|
6 |
|
|
7 |
/**********************************************************************************/ |
|
8 |
|
|
9 |
class CvCaptureCAM_XIMEA : public CvCapture |
|
10 |
{ |
|
11 |
public: |
|
12 |
CvCaptureCAM_XIMEA() { init(); } |
|
13 |
virtual ~CvCaptureCAM_XIMEA() { close(); } |
|
14 |
|
|
15 |
virtual bool open( int index ); |
|
16 |
virtual void close(); |
|
17 |
virtual double getProperty(int); |
|
18 |
virtual bool setProperty(int, double); |
|
19 |
virtual bool grabFrame(); |
|
20 |
virtual IplImage* retrieveFrame(int); |
|
21 |
virtual int getCaptureDomain() { return CV_CAP_XIAPI; } // Return the type of the capture object: CV_CAP_VFW, etc... |
|
22 |
|
|
23 |
protected: |
|
24 |
void init(); |
|
25 |
void errMsg(const char* msg, int errNum); |
|
26 |
void resetImage(); |
|
27 |
int getBpp(); |
|
28 |
IplImage* frame; |
|
29 |
|
|
30 |
HANDLE hmv; |
|
31 |
DWORD numDevices; |
|
32 |
XI_IMG image; |
|
33 |
int width; |
|
34 |
int height; |
|
35 |
int format; |
|
36 |
int timeout; |
|
37 |
int isColor; |
|
38 |
}; |
|
39 |
|
|
40 |
/**********************************************************************************/ |
|
41 |
|
|
42 |
CvCapture* cvCreateCameraCapture_XIMEA( int index ) |
|
43 |
{ |
|
44 |
CvCaptureCAM_XIMEA* capture = new CvCaptureCAM_XIMEA; |
|
45 |
|
|
46 |
if( capture->open( index )) |
|
47 |
return capture; |
|
48 |
|
|
49 |
delete capture; |
|
50 |
return 0; |
|
51 |
} |
|
52 |
|
|
53 |
/**********************************************************************************/ |
|
54 |
// Enumerate connected devices |
|
55 |
void CvCaptureCAM_XIMEA::init() |
|
56 |
{ |
|
57 |
xiGetNumberDevices( &numDevices); |
|
58 |
hmv = NULL; |
|
59 |
memset(&image, 0, sizeof(XI_IMG)); |
|
60 |
} |
|
61 |
|
|
62 |
|
|
63 |
/**********************************************************************************/ |
|
64 |
// Initialize camera input |
|
65 |
bool CvCaptureCAM_XIMEA::open( int wIndex ) |
|
66 |
{ |
|
67 |
int mvret = XI_OK; |
|
68 |
|
|
69 |
if(numDevices == 0) |
|
70 |
return false; |
|
71 |
|
|
72 |
if((mvret = xiOpenDevice( wIndex, &hmv)) != XI_OK) |
|
73 |
{ |
|
74 |
errMsg("Open XI_DEVICE failed", mvret); |
|
75 |
return false; |
|
76 |
} |
|
77 |
|
|
78 |
// always use auto exposure/gain |
|
79 |
mvret = xiSetParamInt( hmv, XI_PRM_AEAG, 1); |
|
80 |
if(mvret != XI_OK) goto error; |
|
81 |
|
|
82 |
// always use auto white ballance |
|
83 |
mvret = xiSetParamInt( hmv, XI_PRM_AUTO_WB, 1); |
|
84 |
if(mvret != XI_OK) goto error; |
|
85 |
|
|
86 |
mvret = xiGetParamInt( hmv, XI_PRM_WIDTH, &width); |
|
87 |
if(mvret != XI_OK) goto error; |
|
88 |
|
|
89 |
mvret = xiGetParamInt( hmv, XI_PRM_HEIGHT, &height); |
|
90 |
if(mvret != XI_OK) goto error; |
|
91 |
|
|
92 |
// default image format RGB24 |
|
93 |
format = XI_RGB24; |
|
94 |
mvret = xiSetParamInt( hmv, XI_PRM_IMAGE_DATA_FORMAT, format); |
|
95 |
if(mvret != XI_OK) goto error; |
|
96 |
|
|
97 |
// allocate frame buffer for RGB24 image |
|
98 |
frame = cvCreateImage(cvSize( width, height), IPL_DEPTH_8U, 3); |
|
99 |
|
|
100 |
// check if is color camera |
|
101 |
xiGetParamInt(hmv, XI_PRM_IMAGE_IS_COLOR, &isColor); |
|
102 |
|
|
103 |
//default capture timeout 10s |
|
104 |
timeout = 10000; |
|
105 |
|
|
106 |
mvret = xiStartAcquisition(hmv); |
|
107 |
if(mvret != XI_OK) |
|
108 |
{ |
|
109 |
errMsg("StartAcquisition XI_DEVICE failed", mvret); |
|
110 |
goto error; |
|
111 |
} |
|
112 |
|
|
113 |
return true; |
|
114 |
|
|
115 |
error: |
|
116 |
xiCloseDevice(hmv); |
|
117 |
hmv = NULL; |
|
118 |
return false; |
|
119 |
} |
|
120 |
|
|
121 |
/**********************************************************************************/ |
|
122 |
|
|
123 |
void CvCaptureCAM_XIMEA::close() |
|
124 |
{ |
|
125 |
if(frame) |
|
126 |
cvReleaseImage(&frame); |
|
127 |
|
|
128 |
xiStopAcquisition(hmv); |
|
129 |
xiCloseDevice(hmv); |
|
130 |
hmv = NULL; |
|
131 |
} |
|
132 |
|
|
133 |
/**********************************************************************************/ |
|
134 |
|
|
135 |
bool CvCaptureCAM_XIMEA::grabFrame() |
|
136 |
{ |
|
137 |
image.size = sizeof(XI_IMG); |
|
138 |
int mvret = xiGetImage( hmv, timeout, &image); |
|
139 |
|
|
140 |
if(mvret == MM40_ACQUISITION_STOPED) |
|
141 |
{ |
|
142 |
xiStartAcquisition(hmv); |
|
143 |
mvret = xiGetImage(hmv, timeout, &image); |
|
144 |
} |
|
145 |
|
|
146 |
if(mvret != XI_OK) |
|
147 |
{ |
|
148 |
errMsg("Error during GetImage", mvret); |
|
149 |
return false; |
|
150 |
} |
|
151 |
|
|
152 |
return true; |
|
153 |
} |
|
154 |
|
|
155 |
/**********************************************************************************/ |
|
156 |
|
|
157 |
IplImage* CvCaptureCAM_XIMEA::retrieveFrame(int) |
|
158 |
{ |
|
159 |
// update cvImage after format has changed |
|
160 |
resetImage(); |
|
161 |
|
|
162 |
// copy pixel data |
|
163 |
switch( image.frm) |
|
164 |
{ |
|
165 |
case XI_MONO8 : |
|
166 |
case XI_RAW8 : memcpy( frame->imageData, image.bp, image.width*image.height); break; |
|
167 |
case XI_MONO16 : |
|
168 |
case XI_RAW16 : memcpy( frame->imageData, image.bp, image.width*image.height*sizeof(WORD)); break; |
|
169 |
case XI_RGB24 : |
|
170 |
case XI_RGB_PLANAR : |
|
171 |
if(isColor) |
|
172 |
{ |
|
173 |
memcpy( frame->imageData, image.bp, image.width*image.height*3); |
|
174 |
break; |
|
175 |
} |
|
176 |
else |
|
177 |
{ |
|
178 |
memcpy( frame->imageData, image.bp, image.width*image.height); |
|
179 |
break; |
|
180 |
} |
|
181 |
case XI_RGB32 : |
|
182 |
if(isColor) |
|
183 |
{ |
|
184 |
memcpy( frame->imageData, image.bp, image.width*image.height*4); |
|
185 |
break; |
|
186 |
} |
|
187 |
else |
|
188 |
{ |
|
189 |
memcpy( frame->imageData, image.bp, image.width*image.height); |
|
190 |
break; |
|
191 |
} |
|
192 |
default: break; |
|
193 |
} |
|
194 |
return frame; |
|
195 |
} |
|
196 |
|
|
197 |
/**********************************************************************************/ |
|
198 |
|
|
199 |
double CvCaptureCAM_XIMEA::getProperty( int property_id ) |
|
200 |
{ |
|
201 |
if(hmv == NULL) |
|
202 |
return 0; |
|
203 |
|
|
204 |
int ival = 0; |
|
205 |
float fval = 0; |
|
206 |
|
|
207 |
switch( property_id ) |
|
208 |
{ |
|
209 |
// OCV parameters |
|
210 |
case CV_CAP_PROP_POS_FRAMES : return (double) image.nframe; |
|
211 |
case CV_CAP_PROP_FRAME_WIDTH : xiGetParamInt( hmv, XI_PRM_WIDTH, &ival); return ival; |
|
212 |
case CV_CAP_PROP_FRAME_HEIGHT : xiGetParamInt( hmv, XI_PRM_HEIGHT, &ival); return ival; |
|
213 |
case CV_CAP_PROP_FPS : xiGetParamFloat( hmv, XI_PRM_FRAMERATE, &fval); return fval; |
|
214 |
case CV_CAP_PROP_GAIN : xiGetParamFloat( hmv, XI_PRM_GAIN, &fval); return fval; |
|
215 |
case CV_CAP_PROP_EXPOSURE : xiGetParamInt( hmv, XI_PRM_EXPOSURE, &ival); return ival; |
|
216 |
|
|
217 |
// XIMEA camera properties |
|
218 |
case CV_CAP_PROP_XI_DOWNSAMPLING : xiGetParamInt( hmv, XI_PRM_DOWNSAMPLING, &ival); return ival; |
|
219 |
case CV_CAP_PROP_XI_DATA_FORMAT : xiGetParamInt( hmv, XI_PRM_IMAGE_DATA_FORMAT, &ival); return ival; |
|
220 |
case CV_CAP_PROP_XI_OFFSET_X : xiGetParamInt( hmv, XI_PRM_OFFSET_X, &ival); return ival; |
|
221 |
case CV_CAP_PROP_XI_OFFSET_Y : xiGetParamInt( hmv, XI_PRM_OFFSET_Y, &ival); return ival; |
|
222 |
case CV_CAP_PROP_XI_TRG_SOURCE : xiGetParamInt( hmv, XI_PRM_TRG_SOURCE, &ival); return ival; |
|
223 |
case CV_CAP_PROP_XI_GPI_SELECTOR : xiGetParamInt( hmv, XI_PRM_GPI_SELECTOR, &ival); return ival; |
|
224 |
case CV_CAP_PROP_XI_GPI_MODE : xiGetParamInt( hmv, XI_PRM_GPI_MODE, &ival); return ival; |
|
225 |
case CV_CAP_PROP_XI_GPI_LEVEL : xiGetParamInt( hmv, XI_PRM_GPI_LEVEL, &ival); return ival; |
|
226 |
case CV_CAP_PROP_XI_GPO_SELECTOR : xiGetParamInt( hmv, XI_PRM_GPO_SELECTOR, &ival); return ival; |
|
227 |
case CV_CAP_PROP_XI_GPO_MODE : xiGetParamInt( hmv, XI_PRM_GPO_MODE, &ival); return ival; |
|
228 |
case CV_CAP_PROP_XI_LED_SELECTOR : xiGetParamInt( hmv, XI_PRM_LED_SELECTOR, &ival); return ival; |
|
229 |
case CV_CAP_PROP_XI_LED_MODE : xiGetParamInt( hmv, XI_PRM_LED_MODE, &ival); return ival; |
|
230 |
case CV_CAP_PROP_XI_AUTO_WB : xiGetParamInt( hmv, XI_PRM_AUTO_WB, &ival); return ival; |
|
231 |
case CV_CAP_PROP_XI_AEAG : xiGetParamInt( hmv, XI_PRM_AEAG, &ival); return ival; |
|
232 |
case CV_CAP_PROP_XI_EXP_PRIORITY : xiGetParamFloat( hmv, XI_PRM_EXP_PRIORITY, &fval); return fval; |
|
233 |
case CV_CAP_PROP_XI_AE_MAX_LIMIT : xiGetParamInt( hmv, XI_PRM_EXP_PRIORITY, &ival); return ival; |
|
234 |
case CV_CAP_PROP_XI_AG_MAX_LIMIT : xiGetParamFloat( hmv, XI_PRM_AG_MAX_LIMIT, &fval); return fval; |
|
235 |
case CV_CAP_PROP_XI_AEAG_LEVEL : xiGetParamInt( hmv, XI_PRM_AEAG_LEVEL, &ival); return ival; |
|
236 |
case CV_CAP_PROP_XI_TIMEOUT : return timeout; |
|
237 |
|
|
238 |
} |
|
239 |
return 0; |
|
240 |
} |
|
241 |
|
|
242 |
/**********************************************************************************/ |
|
243 |
|
|
244 |
bool CvCaptureCAM_XIMEA::setProperty( int property_id, double value ) |
|
245 |
{ |
|
246 |
int ival = (int) value; |
|
247 |
float fval = (float) value; |
|
248 |
|
|
249 |
int mvret = XI_OK; |
|
250 |
|
|
251 |
switch(property_id) |
|
252 |
{ |
|
253 |
// OCV parameters |
|
254 |
case CV_CAP_PROP_FRAME_WIDTH : mvret = xiSetParamInt( hmv, XI_PRM_WIDTH, ival); |
|
255 |
if(mvret == XI_OK) width = ival; |
|
256 |
break; |
|
257 |
case CV_CAP_PROP_FRAME_HEIGHT : mvret = xiSetParamInt( hmv, XI_PRM_HEIGHT, ival); |
|
258 |
if(mvret == XI_OK) height = ival; |
|
259 |
break; |
|
260 |
case CV_CAP_PROP_FPS : mvret = xiSetParamFloat( hmv, XI_PRM_FRAMERATE, fval); break; |
|
261 |
case CV_CAP_PROP_GAIN : mvret = xiSetParamFloat( hmv, XI_PRM_GAIN, fval); break; |
|
262 |
case CV_CAP_PROP_EXPOSURE : mvret = xiSetParamInt( hmv, XI_PRM_EXPOSURE, ival); break; |
|
263 |
// XIMEA camera properties |
|
264 |
case CV_CAP_PROP_XI_DOWNSAMPLING : mvret = xiSetParamInt( hmv, XI_PRM_DOWNSAMPLING, ival); break; |
|
265 |
case CV_CAP_PROP_XI_DATA_FORMAT : mvret = xiSetParamInt( hmv, XI_PRM_IMAGE_DATA_FORMAT, ival); |
|
266 |
if(mvret == XI_OK) format = ival; |
|
267 |
break; |
|
268 |
case CV_CAP_PROP_XI_OFFSET_X : mvret = xiSetParamInt( hmv, XI_PRM_OFFSET_X, ival); break; |
|
269 |
case CV_CAP_PROP_XI_OFFSET_Y : mvret = xiSetParamInt( hmv, XI_PRM_OFFSET_Y, ival); break; |
|
270 |
case CV_CAP_PROP_XI_TRG_SOURCE : mvret = xiSetParamInt( hmv, XI_PRM_TRG_SOURCE, ival); break; |
|
271 |
case CV_CAP_PROP_XI_GPI_SELECTOR : mvret = xiSetParamInt( hmv, XI_PRM_GPI_SELECTOR, ival); break; |
|
272 |
case CV_CAP_PROP_XI_TRG_SOFTWARE : mvret = xiSetParamInt( hmv, XI_PRM_TRG_SOURCE, 1); break; |
|
273 |
case CV_CAP_PROP_XI_GPI_MODE : mvret = xiSetParamInt( hmv, XI_PRM_GPI_MODE, ival); break; |
|
274 |
case CV_CAP_PROP_XI_GPI_LEVEL : mvret = xiSetParamInt( hmv, XI_PRM_GPI_LEVEL, ival); break; |
|
275 |
case CV_CAP_PROP_XI_GPO_SELECTOR : mvret = xiSetParamInt( hmv, XI_PRM_GPO_SELECTOR, ival); break; |
|
276 |
case CV_CAP_PROP_XI_GPO_MODE : mvret = xiSetParamInt( hmv, XI_PRM_GPO_MODE, ival); break; |
|
277 |
case CV_CAP_PROP_XI_LED_SELECTOR : mvret = xiSetParamInt( hmv, XI_PRM_LED_SELECTOR, ival); break; |
|
278 |
case CV_CAP_PROP_XI_LED_MODE : mvret = xiSetParamInt( hmv, XI_PRM_LED_MODE, ival); break; |
|
279 |
case CV_CAP_PROP_XI_AUTO_WB : mvret = xiSetParamInt( hmv, XI_PRM_AUTO_WB, ival); break; |
|
280 |
case CV_CAP_PROP_XI_MANUAL_WB : mvret = xiSetParamInt( hmv, XI_PRM_LED_MODE, ival); break; |
|
281 |
case CV_CAP_PROP_XI_AEAG : mvret = xiSetParamInt( hmv, XI_PRM_AEAG, ival); break; |
|
282 |
case CV_CAP_PROP_XI_EXP_PRIORITY : mvret = xiSetParamFloat( hmv, XI_PRM_EXP_PRIORITY, fval); break; |
|
283 |
case CV_CAP_PROP_XI_AE_MAX_LIMIT : mvret = xiSetParamInt( hmv, XI_PRM_EXP_PRIORITY, ival); break; |
|
284 |
case CV_CAP_PROP_XI_AG_MAX_LIMIT : mvret = xiSetParamFloat( hmv, XI_PRM_AG_MAX_LIMIT, fval); break; |
|
285 |
case CV_CAP_PROP_XI_AEAG_LEVEL : mvret = xiSetParamInt( hmv, XI_PRM_AEAG_LEVEL, ival); break; |
|
286 |
case CV_CAP_PROP_XI_TIMEOUT : timeout = ival; break; |
|
287 |
} |
|
288 |
|
|
289 |
if(mvret != XI_OK) |
|
290 |
{ |
|
291 |
errMsg("Set parameter error", mvret); |
|
292 |
return false; |
|
293 |
} |
|
294 |
else |
|
295 |
return true; |
|
296 |
|
|
297 |
} |
|
298 |
|
|
299 |
/**********************************************************************************/ |
|
300 |
|
|
301 |
void CvCaptureCAM_XIMEA::errMsg(const char* msg, int errNum) |
|
302 |
{ |
|
303 |
#if defined WIN32 || defined _WIN32 |
|
304 |
char buf[512]; |
|
305 |
sprintf( buf, "%s : %d\n", msg, errNum); |
|
306 |
OutputDebugString(buf); |
|
307 |
#else |
|
308 |
fprintf(stderr, "%s : %d\n", msg, errNum); |
|
309 |
#endif |
|
310 |
} |
|
311 |
|
|
312 |
/**********************************************************************************/ |
|
313 |
|
|
314 |
void CvCaptureCAM_XIMEA::resetImage() |
|
315 |
{ |
|
316 |
if( (int)image.width != width || (int)image.height != height || image.frm != (XI_IMG_FORMAT)format || getBpp() != frame->nChannels) |
|
317 |
{ |
|
318 |
if(frame) |
|
319 |
cvReleaseImage(&frame); |
|
320 |
|
|
321 |
switch( image.frm) |
|
322 |
{ |
|
323 |
case XI_MONO8 : |
|
324 |
case XI_RAW8 : frame = cvCreateImage(cvSize( image.width, image.height), IPL_DEPTH_8U, 1); break; |
|
325 |
case XI_MONO16 : |
|
326 |
case XI_RAW16 : frame = cvCreateImage(cvSize( image.width, image.height), IPL_DEPTH_16U, 1); break; |
|
327 |
case XI_RGB24 : |
|
328 |
case XI_RGB_PLANAR : |
|
329 |
if(isColor) |
|
330 |
{ |
|
331 |
frame = cvCreateImage(cvSize( image.width, image.height), IPL_DEPTH_8U, 3); |
|
332 |
break; |
|
333 |
} |
|
334 |
else |
|
335 |
{ |
|
336 |
frame = cvCreateImage(cvSize( image.width, image.height), IPL_DEPTH_8U, 1); |
|
337 |
break; |
|
338 |
} |
|
339 |
case XI_RGB32 : |
|
340 |
if(isColor) |
|
341 |
{ |
|
342 |
frame = cvCreateImage(cvSize( image.width, image.height), IPL_DEPTH_8U, 4); break; |
|
343 |
} |
|
344 |
else |
|
345 |
{ |
|
346 |
frame = cvCreateImage(cvSize( image.width, image.height), IPL_DEPTH_8U, 1); break; |
|
347 |
} |
|
348 |
default : |
|
349 |
return; |
|
350 |
} |
|
351 |
// update global image format |
|
352 |
format = image.frm; |
|
353 |
width = image.width; |
|
354 |
height = image.height; |
|
355 |
} |
|
356 |
} |
|
357 |
|
|
358 |
/**********************************************************************************/ |
|
359 |
|
|
360 |
int CvCaptureCAM_XIMEA::getBpp() |
|
361 |
{ |
|
362 |
switch( image.frm) |
|
363 |
{ |
|
364 |
case XI_MONO8 : |
|
365 |
case XI_RAW8 : return 1; |
|
366 |
case XI_MONO16 : |
|
367 |
case XI_RAW16 : return 2; |
|
368 |
case XI_RGB24 : |
|
369 |
case XI_RGB_PLANAR : |
|
370 |
if(isColor) |
|
371 |
return 3; |
|
372 |
else |
|
373 |
return 1; |
|
374 |
case XI_RGB32 : |
|
375 |
if(isColor) |
|
376 |
return 4; |
|
377 |
else |
|
378 |
return 1; |
|
379 |
default : |
|
380 |
return 0; |
|
381 |
} |
|
382 |
} |
|
383 |
|
|
299 | 384 |
/**********************************************************************************/ |
300 |
- |