OpenCV 轉(zhuǎn)成輪廓圖

引用自:
http://www.reibang.com/p/b398da410451

因為OpenCV是用C++編寫的氓润,所以只能用.mm來使用薯鳍,然后再用bridging-header.h來轉(zhuǎn)到swift里來使用。

文件

OpenCVUtil.h

#import <Foundation/Foundation.h>

@class UIImage;
@interface OpenCVUtil : NSObject

+(UIImage *) convertImage:(UIImage *)image;

@end

OpenCVUtil.mm

//下面的#ifdef只能放在上面采章,如果放在#import "OpenCVUtil.h"下面就出錯壶辜。
#ifdef __cplusplus
#import <opencv2/opencv.hpp>
#import <opencv2/imgproc/types_c.h>
#import <opencv2/imgcodecs/ios.h>
#endif

#import "OpenCVUtil.h"

using namespace cv;

@implementation OpenCVUtil

+(UIImage *) convertImage:(UIImage *)image{
    Mat cvImage;
    UIImageToMat(image, cvImage);
    
    if (!cvImage.empty()) {
        Mat gray;
        
        //將圖像轉(zhuǎn)成灰度顯示
        cvtColor(cvImage, gray, CV_RGB2GRAY);
        //應(yīng)用高斯濾波器出除小的邊緣
        GaussianBlur(gray, gray, cv::Size(5,5), 1.2,1.2);
        //計算與畫布輪廓
        Mat edges;
        Canny(gray, edges, 0, 50);

        //使用白色填充
        cvImage.setTo(Scalar::all(100));
        //修改輪廓顏色 scalar 四個屬性分別是R G B Alpha
        cvImage.setTo(Scalar(255,0,225,255),edges);
        //將Mat轉(zhuǎn)換成UIImageView
        return MatToUIImage(cvImage);

        //用gray來轉(zhuǎn)出UIImage,只能得到灰度圖,不像上面的可以用彩色抵怎。
//        gray.setTo(Scalar::all(225));
//        gray.setTo(Scalar(0,255,0,255),edges);
//        return MatToUIImage(gray);
    }
    return nil;
}
@end

HumanFaceRecognition-Bridging-Header.h

#import "OpenCVUtil.h"

ViewController.swift


import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let image = OpenCVUtil.convert(#imageLiteral(resourceName: "circle"))
        let iv = UIImageView(image: image)
        iv.frame.origin = CGPoint(x: 20, y: 20)
        iv.frame.size = CGSize(width: 200, height: 200)
        view.addSubview(iv)
    }
}

結(jié)果:

原圖
處理后的
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末反惕,一起剝皮案震驚了整個濱河市演侯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖狡汉,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闽颇,死亡現(xiàn)場離奇詭異,居然都是意外死亡尖啡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門衅斩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怠褐,“玉大人,你說我怎么就攤上這事惫搏〔系樱” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵茴丰,是天一觀的道長天吓。 經(jīng)常有香客問我贿肩,道長龄寞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任溜哮,我火速辦了婚禮色解,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘科阎。我一直安慰自己,他們只是感情好蝌矛,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屹徘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪噪伊。 梳的紋絲不亂的頭發(fā)上氮唯,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機與錄音惩琉,去河邊找鬼。 笑死良蒸,一個胖子當著我的面吹牛伍玖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窍箍,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼纺棺!你這毒婦竟也來了邪狞?” 一聲冷哼從身側(cè)響起祷蝌,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤杆逗,失蹤者是張志新(化名)和其女友劉穎鳞疲,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尚洽,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年癣疟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片邪蛔。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡扎狱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出淤击,到底是詐尸還是另有隱情,我是刑警寧澤污抬,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布印机,位于F島的核電站矢腻,受9級特大地震影響射赛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜顷蟆,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一腐魂、第九天 我趴在偏房一處隱蔽的房頂上張望逐纬。 院中可真熱鬧蛔屹,春花似錦豁生、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽豪嗽。三九已至,卻和暖如春隐锭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钦睡。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工躁倒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人樱溉。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像撩嚼,于是被迫代替她去往敵國和親挖帘。 傳聞我的和親對象是個殘疾皇子完丽,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容