1. 程式人生 > >【從零學習openCV】IOS7下的openCV開發起步(Xcode5.1.1&openCV2.49)

【從零學習openCV】IOS7下的openCV開發起步(Xcode5.1.1&openCV2.49)

rgb load fcm 12px 轉換 sim 圖像 round ios

前言:

開發IOS7已經有一月的時間了。近期在準備推研的事,有點想往CV方向發展。於是開始自學openCV。

關註CSDN已經非常久了。也從非常多博主那學到了非常多知識,於是我也從這周開啟自己的blog之旅,從零開始學openCV,從零開始做筆記寫blog。哈哈~

好了。廢話不多說。進入正題。


IOS7下使用openCV

Mac OS下要使用openCV當然要編譯,可是假設僅僅是在ios下使用openCV的話,僅僅須要將bulid好的opencv2.framework導入到project中就可以。

opencv2.framework在openCV官網上下載就可以。傳送門:

opencv2.framework


以下我們在Xcode下新建一個Single View Appliction,命名為CvForIOS。

將下載好的opencv2.framework復制到新建好的project文件夾下,然後導入到project文件夾下Frameworks中,還有IOS7.1下的libc++.dylib也要導入。

技術分享

然後須要在Build Settings中,將“C++ Standard Library”設置成libstdc++。

技術分享

由於opencv中的MIN宏和UIKit的MIN宏有沖突。所以須要在.pch文件裏,先定義opencv的頭文件。否則會有編譯錯誤。

找到CvForIOS-Preix.pch改動例如以下:


至此,前期的配置工作已經完畢。

第一個案例:用openCV對手機上的照片進行方框濾波

因為IOS一般都是用UIImage類型來存儲顯示圖像,要用openCV對圖像進行操作,就必需要能讓cv::mat與UIImage之間自由轉換。

在這裏我們使用github上的開源碼。傳送門:aptogo

代碼例如以下:

註意:.mm文件是說明在這個文件裏混合使用了Object-C和C++兩種編程語言,因為openCV使用的是C++,所以要註意僅僅要使用了openCV的文件就必須改後綴名為.mm

好了,接下來我們最終能夠進入正題,首先在main.storyboard上加入一個button,一個UIImageView控件,一個UISlider。布局例如以下:

技術分享
























各控件的消息響應和連接例如以下:

技術分享













將視圖控制器實現文件的後綴名改為.mm。讓viewController實現UIImagePickerControllerDelegate和UIActionSheetDelegate協議

詳細實現代碼例如以下:

頭文件:


實現文件:
調用cv::boxFilter實現方框濾波,通過滑動條就可以調整窗體的大小。終於效果例如以下:
技術分享
























doge經過方框濾波後還是那麽帶感,朦朧的眼神,哈哈!


總算是把準備工作做好了,接下來就能夠用openCV在手機上玩耍了~

以後會在IOS7上用openCV實現很多其它更有意思的功能。最後整個案例的代碼附上:cvForIOS

(轉載請註明作者和出處:Shawn-HT http://blog.csdn.net/shawn_ht 未經同意請勿用於商業用途)


參考文章:http://blog.devtang.com/blog/2012/10/27/use-opencv-in-ios/

【從零學習openCV】IOS7下的openCV開發起步(Xcode5.1.1&openCV2.49)