你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS OpenCV 圖像灰度處理

iOS OpenCV 圖像灰度處理

編輯:IOS開發綜合

有時候開發過程中,切圖滿足不了我們的需求,此時我們需要對圖像進行灰度處理,例如QQ頭像在線、離線等不同狀態等。

可以嘗試的解決方案:

第一種:讓UI重新切圖
第二種:切圖不頂用,用代碼實現(重新生成帶灰度的圖片)

首先介紹一下OpenCV,OpenCV的全稱是:Open Source Computer Vision Library。OpenCV是一個基於BSD許可(開源)發行的跨平台計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS操作系統上。它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。哈哈,,是不是很啰嗦,簡單點就是一個處理圖像的視覺庫。

實現步驟:
第一種方式:OpenCV3實現 第一步:導入openCV開發包 第二步:功能實現
利用OpenCV比較簡單,實現代碼如下:
- (UIImage*)imageToGrayImage:(UIImage*)image{

    //image源文件
    // 1.將IOS的UIImage轉成c++圖片(數據:矩陣)
    Mat mat_image_gray;
    UIImageToMat(image, mat_image_gray);

    // 2. 將c++彩色圖片轉成灰度圖片
    // 參數一:數據源
    // 參數二:目標數據
    // 參數三:轉換類型
    Mat mat_image_dst;
    cvtColor(mat_image_gray, mat_image_dst, COLOR_BGRA2GRAY);

    // 3.灰度 -> 可顯示的圖片
    cvtColor(mat_image_dst, mat_image_gray, COLOR_GRAY2BGR);

    // 4. 將c++處理之後的圖片轉成IOS能識別的UIImage
    return MatToUIImage(mat_image_gray);
}

第二種方式:采用IOS系統默認的開發庫實現
這種方式可以說真是夠繁瑣,夠惡心,哈哈哈

#pragma mark - 采用系統自帶的庫進行實現
- (UIImage*)systemImageToGrayImage:(UIImage*)image{
    int width  = image.size.width;
    int height = image.size.height;
    //第一步:創建顏色空間(說白了就是開辟一塊顏色內存空間)
    CGColorSpaceRef colorRef = CGColorSpaceCreateDeviceGray();

    //第二步:顏色空間上下文(保存圖像數據信息)
    //參數一:指向這塊內存區域的地址(內存地址)
    //參數二:要開辟的內存的大小,圖片寬
    //參數三:圖片高
    //參數四:像素位數(顏色空間,例如:32位像素格式和RGB的顏色空間,8位)
    //參數五:圖片的每一行占用的內存的比特數
    //參數六:顏色空間
    //參數七:圖片是否包含A通道(ARGB四個通道)
    CGContextRef context = CGBitmapContextCreate(nil, width, height, 8, 0, colorRef, kCGImageAlphaNone);
    //釋放內存
    CGColorSpaceRelease(colorRef);

    if (context == nil) {
        return  nil;
    }

    //渲染圖片
    //參數一:上下文對象
    //參數二:渲染區域
    //源圖片
    CGContextDrawImage(context, CGRectMake(0, 0, width, height), image.CGImage);;

    //將繪制的顏色空間轉成CGImage
    CGImageRef grayImageRef = CGBitmapContextCreateImage(context);

    //將c/c++圖片轉成iOS可顯示的圖片
    UIImage *dstImage = [UIImage imageWithCGImage:grayImageRef];

    //釋放內存
    CGContextRelease(context);
    CGImageRelease(grayImageRef);

    return dstImage;
}

以上就是iOS OpenCV 圖像灰度處理的全文介紹,希望對您學習和使用ios應用開發有所幫助.

【iOS OpenCV 圖像灰度處理】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved