From ca318e709914632e78fd925e08c8d04b27aed724 Mon Sep 17 00:00:00 2001 From: Morrison Date: Tue, 16 Aug 2016 14:59:24 -0700 Subject: [PATCH] handle images with alpha better MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UIImages with alpha were ending up with garbage pixels in background (random memory values). Need to initialize matrix pixels before drawing UIImage with alpha on it. Note: didn’t fix Grayscale image with alpha stripping alpha in UIImage -> Mat conversion. --- modules/imgcodecs/src/ios_conversions.mm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/imgcodecs/src/ios_conversions.mm b/modules/imgcodecs/src/ios_conversions.mm index 8f2b4e84fc..17fb18e229 100644 --- a/modules/imgcodecs/src/ios_conversions.mm +++ b/modules/imgcodecs/src/ios_conversions.mm @@ -106,6 +106,8 @@ void UIImageToMat(const UIImage* image, bitmapInfo = kCGImageAlphaNone; if (!alphaExist) bitmapInfo = kCGImageAlphaNone; + else + m = cv::Scalar(0); contextRef = CGBitmapContextCreate(m.data, m.cols, m.rows, 8, m.step[0], colorSpace, bitmapInfo); @@ -116,6 +118,8 @@ void UIImageToMat(const UIImage* image, if (!alphaExist) bitmapInfo = kCGImageAlphaNoneSkipLast | kCGBitmapByteOrderDefault; + else + m = cv::Scalar(0); contextRef = CGBitmapContextCreate(m.data, m.cols, m.rows, 8, m.step[0], colorSpace, bitmapInfo);