From 476efd7d37b341dfdfe91c1f74b5edd0f62bcd5d Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Mon, 3 Dec 2012 09:28:01 +0400 Subject: [PATCH 1/3] Drop unsupported yzx and mil camera backends --- modules/highgui/src/cap_mil.cpp | 219 ----------------------------- modules/highgui/src/cap_tyzx.cpp | 230 ------------------------------- 2 files changed, 449 deletions(-) delete mode 100644 modules/highgui/src/cap_mil.cpp delete mode 100644 modules/highgui/src/cap_tyzx.cpp diff --git a/modules/highgui/src/cap_mil.cpp b/modules/highgui/src/cap_mil.cpp deleted file mode 100644 index 66aec54a78..0000000000 --- a/modules/highgui/src/cap_mil.cpp +++ /dev/null @@ -1,219 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "precomp.hpp" -#include "mil.h" - -#if _MSC_VER >= 1200 - #pragma warning( disable: 4711 ) - #pragma comment(lib,"mil.lib") - #pragma comment(lib,"milmet2.lib") -#endif - -#if defined _M_X64 - #pragma optimize("",off) -#endif - -/********************* Capturing video from camera via MIL *********************/ - -struct -{ - MIL_ID MilApplication; - int MilUser; -} g_Mil = {0,0}; //global structure for handling MIL application - -class CvCaptureCAM_MIL : public CvCapture -{ -public: - CvCaptureCAM_MIL() { init(); } - virtual ~CvCaptureCAM_MIL() { close(); } - - virtual bool open( int index ); - virtual void close(); - - virtual double getProperty(int); - virtual bool setProperty(int, double) { return false; } - virtual bool grabFrame(); - virtual IplImage* retrieveFrame(int); - virtual int getCaptureDomain() { return CV_CAP_MIL; } // Return the type of the capture object: CV_CAP_VFW, etc... - -protected: - void init(); - - MIL_ID - MilSystem, /* System identifier. */ - MilDisplay, /* Display identifier. */ - MilDigitizer, /* Digitizer identifier. */ - MilImage; /* Image buffer identifier. */ - IplImage* rgb_frame; -}; - - -void CvCaptureCAM_MIL::init() -{ - MilSystem = MilDisplay = MilDigitizer = MilImage = M_NULL; - rgb_frame = 0; -} - -// Initialize camera input -bool CvCaptureCAM_MIL::open( int wIndex ) -{ - close(); - - if( g_Mil.MilApplication == M_NULL ) - { - assert(g_Mil.MilUser == 0); - MappAlloc(M_DEFAULT, &(g_Mil.MilApplication) ); - g_Mil.MilUser = 1; - } - else - { - assert(g_Mil.MilUser>0); - g_Mil.MilUser++; - } - - int dev_table[16] = { M_DEV0, M_DEV1, M_DEV2, M_DEV3, - M_DEV4, M_DEV5, M_DEV6, M_DEV7, - M_DEV8, M_DEV9, M_DEV10, M_DEV11, - M_DEV12, M_DEV13, M_DEV14, M_DEV15 }; - - //set default window size - int w = 320; - int h = 240; - - for( ; wIndex < 16; wIndex++ ) - { - MsysAlloc( M_SYSTEM_SETUP, //we use default system, - //if this does not work - //try to define exact board - //e.g.M_SYSTEM_METEOR,M_SYSTEM_METEOR_II... - dev_table[wIndex], - M_DEFAULT, - &MilSystem ); - - if( MilSystem != M_NULL ) - break; - } - if( MilSystem != M_NULL ) - { - MdigAlloc(MilSystem,M_DEFAULT, - M_CAMERA_SETUP, //default. May be M_NTSC or other - M_DEFAULT,&MilDigitizer); - - rgb_frame = cvCreateImage(cvSize(w,h), IPL_DEPTH_8U, 3 ); - MdigControl(MilDigitizer, M_GRAB_SCALE, 1.0 / 2); - - /*below line enables getting image vertical orientation - consistent with VFW but it introduces some image corruption - on MeteorII, so we left the image as is*/ - //MdigControl(MilDigitizer, M_GRAB_DIRECTION_Y, M_REVERSE ); - - MilImage = MbufAllocColor(MilSystem, 3, w, h, - 8+M_UNSIGNED, M_IMAGE + M_GRAB, M_NULL); - } - - return MilSystem != M_NULL; -} - -void CvCaptureCAM_MIL::close( CvCaptureCAM_MIL* capture ) -{ - if( MilSystem != M_NULL ) - { - MdigFree( MilDigitizer ); - MbufFree( MilImage ); - MsysFree( MilSystem ); - cvReleaseImage(&rgb_frame ); - - g_Mil.MilUser--; - if(!g_Mil.MilUser) - MappFree(g_Mil.MilApplication); - - MilSystem = M_NULL; - MilDigitizer = M_NULL; - } -} - - -bool CvCaptureCAM_MIL::grabFrame() -{ - if( MilSystem ) - { - MdigGrab(MilDigitizer, MilImage); - return true; - } - return false; -} - - -IplImage* CvCaptureCAM_MIL::retrieveFrame(int) -{ - MbufGetColor(MilImage, M_BGR24+M_PACKED, M_ALL_BAND, (void*)(rgb_frame->imageData)); - return rgb_frame; -} - -double CvCaptureCAM_MIL::getProperty( int property_id ) -{ - switch( property_id ) - { - case CV_CAP_PROP_FRAME_WIDTH: - return rgb_frame ? rgb_frame->width : 0; - case CV_CAP_PROP_FRAME_HEIGHT: - return rgb_frame ? rgb_frame->height : 0; - } - return 0; -} - -bool CvCaptureCAM_MIL::setProperty( int, double ) -{ - return false; -} - - -CvCapture* cvCreateCameraCapture_MIL( int index ) -{ - CvCaptureCAM_MIL* capture = new CvCaptureCAM_MIL; - - if( capture->open( index )) - return capture; - - delete capture; - return 0; -} diff --git a/modules/highgui/src/cap_tyzx.cpp b/modules/highgui/src/cap_tyzx.cpp deleted file mode 100644 index 5f9c3f3874..0000000000 --- a/modules/highgui/src/cap_tyzx.cpp +++ /dev/null @@ -1,230 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "precomp.hpp" -#include - -#if _MSC_VER >= 1200 - #pragma comment(lib,"DeepSeaIF.lib") -#endif - - -/****************** Capturing video from TYZX stereo camera *******************/ -/** Initially developed by Roman Stanchak rstanchak@yahoo.com */ - -class CvCaptureCAM_TYZX : public CvCapture -{ -public: - CvCaptureCAM_TYZX() { index = -1; image = 0; } - virtual ~CvCaptureCAM_TYZX() { close(); } - - virtual bool open( int _index ); - virtual void close(); - bool isOpened() { return index >= 0; } - - virtual double getProperty(int); - virtual bool setProperty(int, double) { return false; } - virtual bool grabFrame(); - virtual IplImage* retrieveFrame(int); - virtual int getCaptureDomain() { return CV_CAP_TYZX; } // Return the type of the capture object: CV_CAP_VFW, etc... - -protected: - virtual bool allocateImage(); - - int index; - IplImage* image; -} -CvCaptureCAM_TYZX; - -DeepSeaIF * g_tyzx_camera = 0; -int g_tyzx_refcount = 0; - -bool CvCaptureCAM_TYZX::open( int _index ) -{ - close(); - - if(!g_tyzx_camera){ - g_tyzx_camera = new DeepSeaIF; - if(!g_tyzx_camera) return false; - - if(!g_tyzx_camera->initializeSettings(NULL)){ - delete g_tyzx_camera; - return false; - } - - // set initial sensor mode - // TODO is g_tyzx_camera redundant? - g_tyzx_camera->setSensorMode(g_tyzx_camera->getSensorMode()); - - // mm's - g_tyzx_camera->setZUnits((int) 1000); - - g_tyzx_camera->enableLeftColor(true); - g_tyzx_camera->setColorMode(DeepSeaIF::BGRcolor); - g_tyzx_camera->setDoIntensityCrop(true); - g_tyzx_camera->enable8bitImages(true); - if(!g_tyzx_camera->startCapture()){ - return false; - } - g_tyzx_refcount++; - } - index = _index; - return true; -} - -void CvCaptureCAM_TYZX::close() -{ - if( isOpened() ) - { - cvReleaseImage( &image ); - g_tyzx_refcount--; - if(g_tyzx_refcount==0){ - delete g_tyzx_camera; - } - } -} - -bool CvCaptureCAM_TYZX::grabFrame() -{ - return isOpened() && g_tyzx_camera && g_tyzx_camera->grab(); -} - -bool CvCaptureCAM_TYZX::allocateImage() -{ - int depth, nch; - CvSize size; - - // assume we want to resize - cvReleaseImage(&image); - - // figure out size depending on index provided - switch(index){ - case CV_TYZX_RIGHT: - size = cvSize(g_tyzx_camera->intensityWidth(), g_tyzx_camera->intensityHeight()); - depth = 8; - nch = 1; - break; - case CV_TYZX_Z: - size = cvSize(g_tyzx_camera->zWidth(), g_tyzx_camera->zHeight()); - depth = IPL_DEPTH_16S; - nch = 1; - break; - case CV_TYZX_LEFT: - default: - size = cvSize(g_tyzx_camera->intensityWidth(), g_tyzx_camera->intensityHeight()); - depth = 8; - nch = 1; - break; - } - image = cvCreateImage(size, depth, nch); - return image != 0; -} - -/// Copy 'grabbed' image into capture buffer and return it. -IplImage * CvCaptureCAM_TYZX::retrieveFrame(int) -{ - if(!isOpened() || !g_tyzx_camera) return 0; - - if(!image && !alocateImage()) - return 0; - - // copy camera image into buffer. - // tempting to reference TYZX memory directly to avoid copying. - switch (index) - { - case CV_TYZX_RIGHT: - memcpy(image->imageData, g_tyzx_camera->getRImage(), image->imageSize); - break; - case CV_TYZX_Z: - memcpy(image->imageData, g_tyzx_camera->getZImage(), image->imageSize); - break; - case CV_TYZX_LEFT: - default: - memcpy(image->imageData, g_tyzx_camera->getLImage(), image->imageSize); - break; - } - - return image; -} - -double CvCaptureCAM_TYZX::getProperty(int property_id) -{ - CvSize size; - switch(capture->index) - { - case CV_TYZX_LEFT: - size = cvSize(g_tyzx_camera->intensityWidth(), g_tyzx_camera->intensityHeight()); - break; - case CV_TYZX_RIGHT: - size = cvSize(g_tyzx_camera->intensityWidth(), g_tyzx_camera->intensityHeight()); - break; - case CV_TYZX_Z: - size = cvSize(g_tyzx_camera->zWidth(), g_tyzx_camera->zHeight()); - break; - default: - size = cvSize(0,0); - } - - switch( property_id ) - { - case CV_CAP_PROP_FRAME_WIDTH: - return size.width; - case CV_CAP_PROP_FRAME_HEIGHT: - return size.height; - } - - return 0; -} - -bool CvCaptureCAM_TYZX::setProperty( int, double ) -{ - return false; -} - -CvCapture * cvCreateCameraCapture_TYZX (int index) -{ - CvCaptureCAM_TYZX * capture = new CvCaptureCAM_TYZX; - if( capture->open(index) ) - return capture; - - delete capture; - return 0; -} From 00fbf5890272c03e09671136ffa09bb409589260 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Mon, 3 Dec 2012 09:54:22 +0400 Subject: [PATCH 2/3] Revert incompletely applied patch from #2192 This reverts commit 2e7656dbdfaccca8bb3245fc70ed6069f8e9f53f. --- CMakeLists.txt | 5 ----- cmake/OpenCVFindLibsVideo.cmake | 13 ------------- modules/highgui/CMakeLists.txt | 8 -------- modules/highgui/include/opencv2/highgui/highgui_c.h | 13 +------------ modules/highgui/src/cap.cpp | 12 ------------ modules/highgui/src/precomp.hpp | 1 - modules/highgui/test/test_precomp.hpp | 1 - 7 files changed, 1 insertion(+), 52 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7123eaf193..978d3c6e4d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -129,7 +129,6 @@ OCV_OPTION(WITH_OPENGL "Include OpenGL support" OFF OCV_OPTION(WITH_OPENNI "Include OpenNI support" OFF IF (NOT ANDROID AND NOT IOS) ) OCV_OPTION(WITH_PNG "Include PNG support" ON IF (NOT IOS) ) OCV_OPTION(WITH_PVAPI "Include Prosilica GigE support" ON IF (NOT ANDROID AND NOT IOS) ) -OCV_OPTION(WITH_GIGEAPI "Include Smartek GigE support" ON IF (NOT ANDROID AND NOT IOS) ) OCV_OPTION(WITH_QT "Build with Qt Backend support" OFF IF (NOT ANDROID AND NOT IOS) ) OCV_OPTION(WITH_QUICKTIME "Use QuickTime for Video I/O insted of QTKit" OFF IF APPLE ) OCV_OPTION(WITH_TBB "Include Intel TBB support" OFF IF (NOT IOS) ) @@ -698,10 +697,6 @@ if(DEFINED WITH_PVAPI) status(" PvAPI:" HAVE_PVAPI THEN YES ELSE NO) endif(DEFINED WITH_PVAPI) -if(DEFINED WITH_GIGEAPI) - status(" GigEVisionSDK:" HAVE_GIGE_API THEN YES ELSE NO) -endif(DEFINED WITH_GIGEAPI) - if(DEFINED WITH_QUICKTIME) status(" QuickTime:" WITH_QUICKTIME THEN YES ELSE NO) status(" QTKit:" WITH_QUICKTIME THEN NO ELSE YES) diff --git a/cmake/OpenCVFindLibsVideo.cmake b/cmake/OpenCVFindLibsVideo.cmake index fdc9ea27f7..5eeff178f1 100644 --- a/cmake/OpenCVFindLibsVideo.cmake +++ b/cmake/OpenCVFindLibsVideo.cmake @@ -56,19 +56,6 @@ if(WITH_PVAPI) endif(PVAPI_INCLUDE_PATH) endif(WITH_PVAPI) -# --- GigEVisionSDK --- -ocv_clear_vars(HAVE_GIGE_API) -if(WITH_GIGEAPI) - find_path(GIGEAPI_INCLUDE_PATH "GigEVisionSDK.h" - PATHS /usr/local /var /opt /usr ENV ProgramFiles ENV ProgramW6432 - PATH_SUFFIXES include "Smartek Vision Technologies/GigEVisionSDK/gige_cpp" "GigEVisionSDK/gige_cpp" "GigEVisionSDK/gige_c" - DOC "The path to Smartek GigEVisionSDK header") - FIND_LIBRARY(GIGEAPI_LIBRARIES NAMES GigEVisionSDK) - if(GIGEAPI_LIBRARIES AND GIGEAPI_INCLUDE_PATH) - set(HAVE_GIGE_API TRUE) - endif() -endif(WITH_GIGEAPI) - # --- Dc1394 --- ocv_clear_vars(HAVE_DC1394 HAVE_DC1394_2) if(WITH_1394) diff --git a/modules/highgui/CMakeLists.txt b/modules/highgui/CMakeLists.txt index b4b2896d7a..e653737a90 100644 --- a/modules/highgui/CMakeLists.txt +++ b/modules/highgui/CMakeLists.txt @@ -171,14 +171,6 @@ if(HAVE_PVAPI) list(APPEND HIGHGUI_LIBRARIES ${PVAPI_LIBRARY}) endif() -if(HAVE_GIGE_API) - add_definitions(-DHAVE_GIGE_API) - ocv_include_directories(${GIGEAPI_INCLUDE_PATH}) - set(highgui_srcs src/cap_giganetix.cpp ${highgui_srcs}) - list(APPEND HIGHGUI_LIBRARIES ${GIGEAPI_LIBRARIES}) - list(APPEND highgui_srcs src/cap_giganetix.cpp) -endif(HAVE_GIGE_API) - if(WITH_IMAGEIO) add_definitions(-DHAVE_IMAGEIO=1) if(IOS) diff --git a/modules/highgui/include/opencv2/highgui/highgui_c.h b/modules/highgui/include/opencv2/highgui/highgui_c.h index 9c7166fc9a..deeae425b5 100644 --- a/modules/highgui/include/opencv2/highgui/highgui_c.h +++ b/modules/highgui/include/opencv2/highgui/highgui_c.h @@ -307,9 +307,7 @@ enum CV_CAP_XIAPI =1100, // XIMEA Camera API - CV_CAP_AVFOUNDATION = 1200, // AVFoundation framework for iOS (OS X Lion will have the same API) - - CV_CAP_GIGANETIX = 1300 // Smartek Giganetix GigEVisionSDK + CV_CAP_AVFOUNDATION = 1200 // AVFoundation framework for iOS (OS X Lion will have the same API) }; /* start capturing frames from camera: index = camera_index + domain_offset (CV_CAP_*) */ @@ -456,15 +454,6 @@ enum CV_CAP_PROP_IOS_DEVICE_FLASH = 9003, CV_CAP_PROP_IOS_DEVICE_WHITEBALANCE = 9004, CV_CAP_PROP_IOS_DEVICE_TORCH = 9005 - - // Properties of cameras available through Smartek Giganetix Ethernet Vision interface - /* --- Vladimir Litvinenko (litvinenko.vladimir@gmail.com) --- */ - ,CV_CAP_PROP_GIGA_FRAME_OFFSET_X = 10001, - CV_CAP_PROP_GIGA_FRAME_OFFSET_Y = 10002, - CV_CAP_PROP_GIGA_FRAME_WIDTH_MAX = 10003, - CV_CAP_PROP_GIGA_FRAME_HEIGH_MAX = 10004, - CV_CAP_PROP_GIGA_FRAME_SENS_WIDTH = 10005, - CV_CAP_PROP_GIGA_FRAME_SENS_HEIGH = 10006 }; enum diff --git a/modules/highgui/src/cap.cpp b/modules/highgui/src/cap.cpp index f8d32e7eee..6150a8ef82 100644 --- a/modules/highgui/src/cap.cpp +++ b/modules/highgui/src/cap.cpp @@ -149,9 +149,6 @@ CV_IMPL CvCapture * cvCreateCameraCapture (int index) #endif #ifdef HAVE_AVFOUNDATION CV_CAP_AVFOUNDATION, -#endif -#ifdef HAVE_GIGE_API - CV_CAP_GIGANETIX, #endif -1 }; @@ -185,7 +182,6 @@ CV_IMPL CvCapture * cvCreateCameraCapture (int index) defined(HAVE_XIMEA) || \ defined(HAVE_AVFOUNDATION) || \ defined(HAVE_ANDROID_NATIVE_CAMERA) || \ - defined(HAVE_GIGE_API) || \ (0) // local variable to memorize the captured device CvCapture *capture; @@ -322,14 +318,6 @@ CV_IMPL CvCapture * cvCreateCameraCapture (int index) return capture; break; #endif - -#ifdef HAVE_GIGE_API - case CV_CAP_GIGANETIX: - capture = cvCreateCameraCapture_Giganetix (index); - if (capture) - return capture; - break; // CV_CAP_GIGANETIX -#endif } } diff --git a/modules/highgui/src/precomp.hpp b/modules/highgui/src/precomp.hpp index 0cef4e77ae..744689b683 100644 --- a/modules/highgui/src/precomp.hpp +++ b/modules/highgui/src/precomp.hpp @@ -115,7 +115,6 @@ CvCapture * cvCreateCameraCapture_V4L( int index ); CvCapture * cvCreateCameraCapture_DC1394( int index ); CvCapture * cvCreateCameraCapture_DC1394_2( int index ); CvCapture* cvCreateCameraCapture_MIL( int index ); -CvCapture* cvCreateCameraCapture_Giganetix( int index ); CvCapture * cvCreateCameraCapture_CMU( int index ); CV_IMPL CvCapture * cvCreateCameraCapture_TYZX( int index ); CvCapture* cvCreateFileCapture_Win32( const char* filename ); diff --git a/modules/highgui/test/test_precomp.hpp b/modules/highgui/test/test_precomp.hpp index 3286c0f59a..133d95d6fe 100644 --- a/modules/highgui/test/test_precomp.hpp +++ b/modules/highgui/test/test_precomp.hpp @@ -34,7 +34,6 @@ defined(HAVE_OPENNI) || \ defined(HAVE_XIMEA) || \ defined(HAVE_AVFOUNDATION) || \ - defined(HAVE_GIGE_API) || \ (0) //defined(HAVE_ANDROID_NATIVE_CAMERA) || - enable after #1193 # define BUILD_WITH_CAMERA_SUPPORT 1 From ae5649d3f7db22096c17f32819cc72ea4034e178 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Mon, 3 Dec 2012 09:39:18 +0400 Subject: [PATCH 3/3] Drop unsupported imageio from grfmt --- CMakeLists.txt | 1 - cmake/templates/cvconfig.h.cmake | 3 - modules/highgui/CMakeLists.txt | 7 - modules/highgui/src/grfmt_imageio.cpp | 396 -------------------------- modules/highgui/src/grfmt_imageio.hpp | 67 ----- modules/highgui/src/grfmts.hpp | 1 - modules/highgui/src/loadsave.cpp | 6 - 7 files changed, 481 deletions(-) delete mode 100644 modules/highgui/src/grfmt_imageio.cpp delete mode 100644 modules/highgui/src/grfmt_imageio.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 978d3c6e4d..949ca43c66 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -120,7 +120,6 @@ OCV_OPTION(WITH_EIGEN "Include Eigen2/Eigen3 support" ON) OCV_OPTION(WITH_FFMPEG "Include FFMPEG support" ON IF (NOT ANDROID AND NOT IOS) ) OCV_OPTION(WITH_GSTREAMER "Include Gstreamer support" ON IF (UNIX AND NOT APPLE AND NOT ANDROID) ) OCV_OPTION(WITH_GTK "Include GTK support" ON IF (UNIX AND NOT APPLE AND NOT ANDROID) ) -OCV_OPTION(WITH_IMAGEIO "ImageIO support for OS X" OFF IF APPLE) OCV_OPTION(WITH_IPP "Include Intel IPP support" OFF IF (MSVC OR X86 OR X86_64) ) OCV_OPTION(WITH_JASPER "Include JPEG2K support" ON IF (NOT IOS) ) OCV_OPTION(WITH_JPEG "Include JPEG support" ON IF (NOT IOS) ) diff --git a/cmake/templates/cvconfig.h.cmake b/cmake/templates/cvconfig.h.cmake index 368905fd9c..37e092b66e 100644 --- a/cmake/templates/cvconfig.h.cmake +++ b/cmake/templates/cvconfig.h.cmake @@ -58,9 +58,6 @@ /* OpenEXR codec */ #cmakedefine HAVE_ILMIMF -/* Apple ImageIO Framework */ -#cmakedefine HAVE_IMAGEIO - /* Define to 1 if you have the header file. */ #cmakedefine HAVE_INTTYPES_H 1 diff --git a/modules/highgui/CMakeLists.txt b/modules/highgui/CMakeLists.txt index e653737a90..f9c03fca57 100644 --- a/modules/highgui/CMakeLists.txt +++ b/modules/highgui/CMakeLists.txt @@ -171,13 +171,6 @@ if(HAVE_PVAPI) list(APPEND HIGHGUI_LIBRARIES ${PVAPI_LIBRARY}) endif() -if(WITH_IMAGEIO) - add_definitions(-DHAVE_IMAGEIO=1) - if(IOS) - list(APPEND HIGHGUI_LIBRARIES "-framework ImageIO") - endif() -endif(WITH_IMAGEIO) - if(WITH_AVFOUNDATION) add_definitions(-DHAVE_AVFOUNDATION=1) list(APPEND highgui_srcs src/cap_avfoundation.mm) diff --git a/modules/highgui/src/grfmt_imageio.cpp b/modules/highgui/src/grfmt_imageio.cpp deleted file mode 100644 index a525b96c69..0000000000 --- a/modules/highgui/src/grfmt_imageio.cpp +++ /dev/null @@ -1,396 +0,0 @@ -/* - * grfmt_imageio.cpp - * - * - * Created by Morgan Conbere on 5/17/07. - * - */ - -#include "precomp.hpp" - -#ifdef HAVE_IMAGEIO - -#include "grfmt_imageio.hpp" - -namespace cv -{ - -/////////////////////// ImageIODecoder /////////////////// - -ImageIODecoder::ImageIODecoder() -{ - imageRef = NULL; -} - -ImageIODecoder::~ImageIODecoder() -{ - close(); -} - - -void ImageIODecoder::close() -{ - CGImageRelease( imageRef ); - imageRef = NULL; -} - - -size_t ImageIODecoder::signatureLength() const -{ - return 12; -} - -bool ImageIODecoder::checkSignature( const string& signature ) const -{ - // TODO: implement real signature check - return true; -} - -ImageDecoder ImageIODecoder::newDecoder() const -{ - return new ImageIODecoder; -} - -bool ImageIODecoder::readHeader() -{ - CFURLRef imageURLRef; - CGImageSourceRef sourceRef; - // diciu, if ReadHeader is called twice in a row make sure to release the previously allocated imageRef - if (imageRef != NULL) - CGImageRelease(imageRef); - imageRef = NULL; - - imageURLRef = CFURLCreateFromFileSystemRepresentation( NULL, - (const UInt8*)m_filename.c_str(), m_filename.size(), false ); - - sourceRef = CGImageSourceCreateWithURL( imageURLRef, NULL ); - CFRelease( imageURLRef ); - if ( !sourceRef ) - return false; - - imageRef = CGImageSourceCreateImageAtIndex( sourceRef, 0, NULL ); - CFRelease( sourceRef ); - if( !imageRef ) - return false; - - m_width = CGImageGetWidth( imageRef ); - m_height = CGImageGetHeight( imageRef ); - - CGColorSpaceRef colorSpace = CGImageGetColorSpace( imageRef ); - if( !colorSpace ) - return false; - - m_type = CGColorSpaceGetNumberOfComponents( colorSpace ) > 1 ? CV_8UC3 : CV_8UC1; - - return true; -} - - -bool ImageIODecoder::readData( Mat& img ) -{ - uchar* data = img.data; - int step = img.step; - bool color = img.channels() > 1; - int bpp; // Bytes per pixel - int bit_depth = 8; - - // Get Height, Width, and color information - if( !readHeader() ) - return false; - - CGContextRef context = NULL; // The bitmap context - CGColorSpaceRef colorSpace = NULL; - uchar* bitmap = NULL; - CGImageAlphaInfo alphaInfo; - - // CoreGraphics will take care of converting to grayscale and back as long as the - // appropriate colorspace is set - if( color == CV_LOAD_IMAGE_GRAYSCALE ) - { - colorSpace = CGColorSpaceCreateDeviceGray(); - bpp = 1; - alphaInfo = kCGImageAlphaNone; - } - else if( color == CV_LOAD_IMAGE_COLOR ) - { -#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR - colorSpace = CGColorSpaceCreateDeviceRGB(); -#else - colorSpace = CGColorSpaceCreateWithName( kCGColorSpaceGenericRGBLinear ); -#endif - bpp = 4; /* CG only has 8 and 32 bit color spaces, so we waste a byte */ - alphaInfo = kCGImageAlphaNoneSkipLast; - } - if( !colorSpace ) - return false; - - bitmap = (uchar*)malloc( bpp * m_height * m_width ); - if( !bitmap ) - { - CGColorSpaceRelease( colorSpace ); - return false; - } - - context = CGBitmapContextCreate( (void *)bitmap, - m_width, /* width */ - m_height, /* height */ - bit_depth, /* bit depth */ - bpp * m_width, /* bytes per row */ - colorSpace, /* color space */ - alphaInfo); - - CGColorSpaceRelease( colorSpace ); - if( !context ) - { - free( bitmap ); - return false; - } - - // Copy the image data into the bitmap region - CGRect rect = {{0,0},{m_width,m_height}}; - CGContextDrawImage( context, rect, imageRef ); - - uchar* bitdata = (uchar*)CGBitmapContextGetData( context ); - if( !bitdata ) - { - free( bitmap); - CGContextRelease( context ); - return false; - } - - // Move the bitmap (in RGB) into data (in BGR) - int bitmapIndex = 0; - - if( color == CV_LOAD_IMAGE_COLOR ) - { - uchar * base = data; - - for (int y = 0; y < m_height; y++) - { - uchar * line = base + y * step; - - for (int x = 0; x < m_width; x++) - { - // Blue channel - line[0] = bitdata[bitmapIndex + 2]; - // Green channel - line[1] = bitdata[bitmapIndex + 1]; - // Red channel - line[2] = bitdata[bitmapIndex + 0]; - - line += 3; - bitmapIndex += bpp; - } - } - } - else if( color == CV_LOAD_IMAGE_GRAYSCALE ) - { - for (int y = 0; y < m_height; y++) - memcpy (data + y * step, bitmap + y * m_width, m_width); - } - - free( bitmap ); - CGContextRelease( context ); - return true; -} - - -/////////////////////// ImageIOEncoder /////////////////// - -ImageIOEncoder::ImageIOEncoder() -{ - m_description = "Apple ImageIO (*.bmp;*.dib;*.exr;*.jpeg;*.jpg;*.jpe;*.jp2;*.pdf;*.png;*.tiff;*.tif)"; -} - - -ImageIOEncoder::~ImageIOEncoder() -{ -} - - -ImageEncoder ImageIOEncoder::newEncoder() const -{ - return new ImageIOEncoder; -} - -static -CFStringRef FilenameToUTI( const char* filename ) -{ - const char* ext = filename; - char* ext_buf; - int i; - CFStringRef imageUTI = NULL; - - for(;;) - { - const char* temp = strchr( ext + 1, '.' ); - if( !temp ) break; - ext = temp; - } - - if(!ext) - return NULL; - - ext_buf = (char*)malloc(strlen(ext)+1); - for(i = 0; ext[i] != '\0'; i++) - ext_buf[i] = (char)tolower(ext[i]); - ext_buf[i] = '\0'; - ext = ext_buf; - - if( !strcmp(ext, ".bmp") || !strcmp(ext, ".dib") ) - imageUTI = CFSTR( "com.microsoft.bmp" ); - else if( !strcmp(ext, ".exr") ) - imageUTI = CFSTR( "com.ilm.openexr-image" ); - else if( !strcmp(ext, ".jpeg") || !strcmp(ext, ".jpg") || !strcmp(ext, ".jpe") ) - imageUTI = CFSTR( "public.jpeg" ); - else if( !strcmp(ext, ".jp2") ) - imageUTI = CFSTR( "public.jpeg-2000" ); - else if( !strcmp(ext, ".pdf") ) - imageUTI = CFSTR( "com.adobe.pdf" ); - else if( !strcmp(ext, ".png") ) - imageUTI = CFSTR( "public.png" ); - else if( !strcmp(ext, ".tiff") || !strcmp(ext, ".tif") ) - imageUTI = CFSTR( "public.tiff" ); - - free(ext_buf); - - return imageUTI; -} - - -bool ImageIOEncoder::write( const Mat& img, const vector& params ) -{ - int width = img.cols, height = img.rows; - int _channels = img.channels(); - const uchar* data = img.data; - int step = img.step; - - // Determine the appropriate UTI based on the filename extension - CFStringRef imageUTI = FilenameToUTI( m_filename.c_str() ); - - // Determine the Bytes Per Pixel - int bpp = (_channels == 1) ? 1 : 4; - - // Write the data into a bitmap context - CGContextRef context; - CGColorSpaceRef colorSpace; - uchar* bitmapData = NULL; - - if( bpp == 1 ) { -#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR - colorSpace = CGColorSpaceCreateDeviceGray(); -#else - colorSpace = CGColorSpaceCreateWithName( kCGColorSpaceGenericGray ); -#endif - } - else if( bpp == 4 ) { -#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR - colorSpace = CGColorSpaceCreateDeviceRGB(); -#else - colorSpace = CGColorSpaceCreateWithName( kCGColorSpaceGenericRGBLinear ); -#endif - } - if( !colorSpace ) - return false; - - bitmapData = (uchar*)malloc( bpp * height * width ); - if( !bitmapData ) - { - CGColorSpaceRelease( colorSpace ); - return false; - } - - context = CGBitmapContextCreate( bitmapData, - width, - height, - 8, - bpp * width, - colorSpace, - (bpp == 1) ? kCGImageAlphaNone : - kCGImageAlphaNoneSkipLast ); - CGColorSpaceRelease( colorSpace ); - if( !context ) - { - free( bitmapData ); - return false; - } - - // Copy pixel information from data into bitmapData - if (bpp == 4) - { - int bitmapIndex = 0; - const uchar * base = data; - - for (int y = 0; y < height; y++) - { - const uchar * line = base + y * step; - - for (int x = 0; x < width; x++) - { - // Blue channel - bitmapData[bitmapIndex + 2] = line[0]; - // Green channel - bitmapData[bitmapIndex + 1] = line[1]; - // Red channel - bitmapData[bitmapIndex + 0] = line[2]; - - line += 3; - bitmapIndex += bpp; - } - } - } - else if (bpp == 1) - { - for (int y = 0; y < height; y++) - memcpy (bitmapData + y * width, data + y * step, width); - } - - // Turn the bitmap context into an imageRef - CGImageRef imageRef = CGBitmapContextCreateImage( context ); - CGContextRelease( context ); - if( !imageRef ) - { - free( bitmapData ); - return false; - } - - // Write the imageRef to a file based on the UTI - CFURLRef imageURLRef = CFURLCreateFromFileSystemRepresentation( NULL, - (const UInt8*)m_filename.c_str(), m_filename.size(), false ); - if( !imageURLRef ) - { - CGImageRelease( imageRef ); - free( bitmapData ); - return false; - } - - CGImageDestinationRef destRef = CGImageDestinationCreateWithURL( imageURLRef, - imageUTI, - 1, - NULL); - CFRelease( imageURLRef ); - if( !destRef ) - { - CGImageRelease( imageRef ); - free( bitmapData ); - fprintf(stderr, "!destRef\n"); - return false; - } - - CGImageDestinationAddImage(destRef, imageRef, NULL); - if( !CGImageDestinationFinalize(destRef) ) - { - fprintf(stderr, "Finalize failed\n"); - return false; - } - - CFRelease( destRef ); - CGImageRelease( imageRef ); - free( bitmapData ); - - return true; -} - -} - -#endif /* HAVE_IMAGEIO */ diff --git a/modules/highgui/src/grfmt_imageio.hpp b/modules/highgui/src/grfmt_imageio.hpp deleted file mode 100644 index 3eeb31103f..0000000000 --- a/modules/highgui/src/grfmt_imageio.hpp +++ /dev/null @@ -1,67 +0,0 @@ -/* - * grfmt_imageio.h - * - * - * Created by Morgan Conbere on 5/17/07. - * - */ - -#ifndef _GRFMT_IMAGEIO_H_ -#define _GRFMT_IMAGEIO_H_ - -#ifdef HAVE_IMAGEIO - -#include "grfmt_base.hpp" -#include - -#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR - -#include -#include - -#else - -#include - -#endif - -namespace cv -{ - -class ImageIODecoder : public BaseImageDecoder -{ -public: - - ImageIODecoder(); - ~ImageIODecoder(); - - bool readData( Mat& img ); - bool readHeader(); - void close(); - - size_t signatureLength() const; - bool checkSignature( const string& signature ) const; - - ImageDecoder newDecoder() const; - -protected: - - CGImageRef imageRef; -}; - -class ImageIOEncoder : public BaseImageEncoder -{ -public: - ImageIOEncoder(); - ~ImageIOEncoder(); - - bool write( const Mat& img, const vector& params ); - - ImageEncoder newEncoder() const; -}; - -} - -#endif/*HAVE_IMAGEIO*/ - -#endif/*_GRFMT_IMAGEIO_H_*/ diff --git a/modules/highgui/src/grfmts.hpp b/modules/highgui/src/grfmts.hpp index 20acd4ccfb..8dddf0def2 100644 --- a/modules/highgui/src/grfmts.hpp +++ b/modules/highgui/src/grfmts.hpp @@ -43,7 +43,6 @@ #define _GRFMTS_H_ #include "grfmt_base.hpp" -#include "grfmt_imageio.hpp" #include "grfmt_bmp.hpp" #include "grfmt_sunras.hpp" #include "grfmt_jpeg.hpp" diff --git a/modules/highgui/src/loadsave.cpp b/modules/highgui/src/loadsave.cpp index 667c2d16e7..5a9eafee13 100644 --- a/modules/highgui/src/loadsave.cpp +++ b/modules/highgui/src/loadsave.cpp @@ -84,12 +84,6 @@ struct ImageCodecInitializer decoders.push_back( new ExrDecoder ); encoders.push_back( new ExrEncoder ); #endif - // because it is a generic image I/O API, supporting many formats, - // it should be last in the list. - #ifdef HAVE_IMAGEIO - decoders.push_back( new ImageIODecoder ); - encoders.push_back( new ImageIOEncoder ); - #endif } vector decoders;