你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS7技巧 >> Swift 使用OpenCV2進行圖片拼接(將多張照片合並成全景圖)

Swift 使用OpenCV2進行圖片拼接(將多張照片合並成全景圖)

編輯:IOS7技巧
我們來看一篇Swift 使用OpenCV2進行圖片拼接(將多張照片合並成全景圖)的例子,有興趣了解ios開發之OpenCV2使用方法可進來看看。 1,OpenCV介紹 OpenCV的全稱是:Open Source Computer Vision Library。是一個開源的跨平台計算機視覺庫,實現了圖像處理和計算機視覺方面的很多通用算法。

其應用領域有: 1、人機互動 2、物體識別 3、圖像分割 4、人臉識別 5、動作識別 6、運動跟蹤 7、機器人 8、運動分析 9、機器視覺 10、結構分析 11、汽車安全駕駛

  2,使用OpenCV進行圖片拼接
下面通過一個樣例演示如何使用OpenCV將多張照片拼接成一個全景圖。注意:照片與照片間要有重合的部分,這樣就能通過OpenCV進行分析識別,從而實現自動拼接。   (1)下面是拍的幾張原始照片 原文:Swift - 使用OpenCV2進行圖片拼接(將多張照片合並成全景圖) 原文:Swift - 使用OpenCV2進行圖片拼接(將多張照片合並成全景圖) 原文:Swift - 使用OpenCV2進行圖片拼接(將多張照片合並成全景圖) 原文:Swift - 使用OpenCV2進行圖片拼接(將多張照片合並成全景圖)   (2)下面是拼接後的照片 原文:Swift - 使用OpenCV2進行圖片拼接(將多張照片合並成全景圖) 3,操作步驟
(1)首先下載最新的OpenCV框架:opencv2.framework.zip。並將其添加到項目中來。 原文:Swift - 使用OpenCV2進行圖片拼接(將多張照片合並成全景圖) (2)下載第三方的Objective-C封裝類:OpenCVSwiftStitch

由於我們需要使用OpenCV,但Swift又不能直接調用C++。所以便需要使用Objective-C來做為中間層,讓Swift通過Objective-C來調用OpenCV。

好在github上已經有人提供了相關的封裝類,我們直接把如下文件導入到項目即可。
原文:Swift - 使用OpenCV2進行圖片拼接(將多張照片合並成全景圖)   (3)記得把CVWrapper.h添加到橋接頭文件bridge.h中


#import "CVWrapper.h"

(4)下面使用就很簡單了,把UIImage交給CVWrapper就可以了

import UIKit
 
class ViewController: UIViewController {
 
    @IBOutlet weak var imageView: UIImageView!
    @IBOutlet weak var spinner: UIActivityIndicatorView!
     
    override func viewDidLoad() {
        super.viewDidLoad()
    }
     
    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        stitch()
    }
     
    func stitch() {
        //由於圖片拼接很費時,顯示環形進度條
        self.spinner.startAnimating()
        //在後台隊列拼接圖片
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
            let image1 = UIImage(named:"IMG_4247.jpg")
            let image2 = UIImage(named:"IMG_4248.jpg")
            let image3 = UIImage(named:"IMG_4249.jpg")
            let image4 = UIImage(named:"IMG_4250.jpg")
             
            let imageArray:[UIImage!] = [image1,image2,image3,image4]
             
            let stitchedImage:UIImage = CVWrapper.processWithArray(imageArray) as UIImage
             
            self.imageView.image = stitchedImage
             
            //停止環形進度條效果
            self.spinner.stopAnimating()
        }
    }
     
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

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