diff --git a/modules/imgcodecs/CMakeLists.txt b/modules/imgcodecs/CMakeLists.txt index 80f7e1c248..5a8faa9d05 100644 --- a/modules/imgcodecs/CMakeLists.txt +++ b/modules/imgcodecs/CMakeLists.txt @@ -113,7 +113,7 @@ file(GLOB imgcodecs_ext_hdrs "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/legacy/*.h" ) -if(APPLE) +if(APPLE OR APPLE_FRAMEWORK) list(APPEND imgcodecs_srcs ${CMAKE_CURRENT_LIST_DIR}/src/apple_conversions.h) list(APPEND imgcodecs_srcs ${CMAKE_CURRENT_LIST_DIR}/src/apple_conversions.mm) endif() diff --git a/modules/imgcodecs/include/opencv2/imgcodecs/ios.h b/modules/imgcodecs/include/opencv2/imgcodecs/ios.h index 0f15820892..5f17218170 100644 --- a/modules/imgcodecs/include/opencv2/imgcodecs/ios.h +++ b/modules/imgcodecs/include/opencv2/imgcodecs/ios.h @@ -50,6 +50,8 @@ //! @addtogroup imgcodecs_ios //! @{ +CV_EXPORTS CGImageRef MatToCGImage(const cv::Mat& image) CF_RETURNS_RETAINED; +CV_EXPORTS void CGImageToMat(const CGImageRef image, cv::Mat& m, bool alphaExist = false); CV_EXPORTS UIImage* MatToUIImage(const cv::Mat& image); CV_EXPORTS void UIImageToMat(const UIImage* image, cv::Mat& m, bool alphaExist = false); diff --git a/modules/imgcodecs/include/opencv2/imgcodecs/macosx.h b/modules/imgcodecs/include/opencv2/imgcodecs/macosx.h index f5d9c082c4..cfb0770700 100644 --- a/modules/imgcodecs/include/opencv2/imgcodecs/macosx.h +++ b/modules/imgcodecs/include/opencv2/imgcodecs/macosx.h @@ -12,7 +12,7 @@ //! @addtogroup imgcodecs_macosx //! @{ -CV_EXPORTS CGImageRef MatToCGImage(const cv::Mat& image); +CV_EXPORTS CGImageRef MatToCGImage(const cv::Mat& image) CF_RETURNS_RETAINED; CV_EXPORTS void CGImageToMat(const CGImageRef image, cv::Mat& m, bool alphaExist = false); CV_EXPORTS NSImage* MatToNSImage(const cv::Mat& image); CV_EXPORTS void NSImageToMat(const NSImage* image, cv::Mat& m, bool alphaExist = false); diff --git a/modules/imgcodecs/misc/objc/ios/Mat+Converters.h b/modules/imgcodecs/misc/objc/ios/Mat+Converters.h index 8c185f884a..a3ee005c18 100644 --- a/modules/imgcodecs/misc/objc/ios/Mat+Converters.h +++ b/modules/imgcodecs/misc/objc/ios/Mat+Converters.h @@ -20,6 +20,9 @@ NS_ASSUME_NONNULL_BEGIN CV_EXPORTS @interface Mat (Converters) +-(CGImageRef)toCGImage CF_RETURNS_RETAINED; +-(instancetype)initWithCGImage:(CGImageRef)image; +-(instancetype)initWithCGImage:(CGImageRef)image alphaExist:(BOOL)alphaExist; -(UIImage*)toUIImage; -(instancetype)initWithUIImage:(UIImage*)image; -(instancetype)initWithUIImage:(UIImage*)image alphaExist:(BOOL)alphaExist; diff --git a/modules/imgcodecs/misc/objc/ios/Mat+Converters.mm b/modules/imgcodecs/misc/objc/ios/Mat+Converters.mm index 3ea3117267..69250eb994 100644 --- a/modules/imgcodecs/misc/objc/ios/Mat+Converters.mm +++ b/modules/imgcodecs/misc/objc/ios/Mat+Converters.mm @@ -9,6 +9,22 @@ @implementation Mat (Converters) +-(CGImageRef)toCGImage { + return MatToCGImage(self.nativeRef); +} + +-(instancetype)initWithCGImage:(CGImageRef)image { + return [self initWithCGImage:image alphaExist:NO]; +} + +-(instancetype)initWithCGImage:(CGImageRef)image alphaExist:(BOOL)alphaExist { + self = [self init]; + if (self) { + CGImageToMat(image, self.nativeRef, (bool)alphaExist); + } + return self; +} + -(UIImage*)toUIImage { return MatToUIImage(self.nativeRef); } diff --git a/modules/imgcodecs/misc/objc/macosx/Mat+Converters.h b/modules/imgcodecs/misc/objc/macosx/Mat+Converters.h index d87887372d..63ac476599 100644 --- a/modules/imgcodecs/misc/objc/macosx/Mat+Converters.h +++ b/modules/imgcodecs/misc/objc/macosx/Mat+Converters.h @@ -20,7 +20,7 @@ NS_ASSUME_NONNULL_BEGIN CV_EXPORTS @interface Mat (Converters) --(CGImageRef)toCGImage; +-(CGImageRef)toCGImage CF_RETURNS_RETAINED; -(instancetype)initWithCGImage:(CGImageRef)image; -(instancetype)initWithCGImage:(CGImageRef)image alphaExist:(BOOL)alphaExist; -(NSImage*)toNSImage; diff --git a/modules/imgcodecs/src/apple_conversions.h b/modules/imgcodecs/src/apple_conversions.h index 2762424379..27e8955bfc 100644 --- a/modules/imgcodecs/src/apple_conversions.h +++ b/modules/imgcodecs/src/apple_conversions.h @@ -7,5 +7,5 @@ #import #include "opencv2/core.hpp" -CV_EXPORTS CGImageRef MatToCGImage(const cv::Mat& image); +CV_EXPORTS CGImageRef MatToCGImage(const cv::Mat& image) CF_RETURNS_RETAINED; CV_EXPORTS void CGImageToMat(const CGImageRef image, cv::Mat& m, bool alphaExist);