Upgrade to Pro — share decks privately, control downloads, hide ads and more …

使用openCV做影像辨識 @ iplayground

羊小咩
November 08, 2020

使用openCV做影像辨識 @ iplayground

『使用openCV做影像辨識』
小咩在 iPlayground 2020分享投影片
詳細內容有
- openCV介紹
- 怎麼在xcode配置openCV
- 要如何辨識物體,流程怎麼實現
- openCV常用功能介紹
- 範例程式碼
有什麼問題或想法可以找我一起探討

羊小咩

November 08, 2020
Tweet

More Decks by 羊小咩

Other Decks in Programming

Transcript

  1. "HFOEB • OpenCV 簡介 • OpenCV on Xcode • 辨識處理流程

    • 影像處理 • 顏⾊處理 • ⼆值化 • 形態學 • 輪廓 • 幾何變換 • 邊緣偵測 • 霍夫變換
  2. 3. 加入C++ 測試⽅法 & 取得OpenCV版本號 How To Use #import <Foundation/Foundation.h>

    NS_ASSUME_NONNULL_BEGIN @interface OpenCVWrapper : NSObject + (NSString *) test_c; + (NSString *) cv_version; @end NS_ASSUME_NONNULL_END #include "OpenCVHeader.h" #import "OpenCVWrapper.h" //啟⽤命名空間 using namespace cv; using namespace std; @implementation OpenCVWrapper + (NSString *) test_c{ char str[]="Hello C++"; std::cout << str << std::endl; return [NSString stringWithUTF8String:str]; } + (NSString *) cv_version{ cout << "OpenCV version : " << CV_VERSION << endl; char str[]= CV_VERSION; return [NSString stringWithUTF8String:str]; } .h .mm
  3. 4. import OpenCV How To Use #ifndef OpenCVHeader_h #define OpenCVHeader_h

    #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdocumentation" #import <opencv2/opencv.hpp> #import <opencv2/imgproc/types_c.h> #import <opencv2/imgcodecs/ios.h> #pragma clang pop #endif /* OpenCVHeader_h */ OpenCVHeader.h
  4. 5. Header import <swift / obj-c混合專案> How To Use #import

    "OpenCVWrapper.h" #import <TesseractOCR/TesseractOCR.h> <Product Name>-Bridging-Header.h #import <Foundation/Foundation.h> //! Project version number for RecognitionInvoice. FOUNDATION_EXPORT double RecognitionInvoiceVersionNumber; //! Project version string for RecognitionInvoice. FOUNDATION_EXPORT const unsigned char RecognitionInvoiceVersionString[]; #import "OpenCVWrapper.h" #import <TesseractOCR/TesseractOCR.h> <Product Name>.h framework Umbrella Header
  5. 辨識流程 切割 part II 找輪廓 包裹 擷取 正規化 可以找輪廓時 直接找四點構成的輪廓

    傾斜轉正 即找旋轉後 最窄的長⽅形 (最左和最右點 距離最短者) ⼤⼩統⼀ 
 辨識時點對點 設立⼤⼩⾨檻值, 以擷取適當長⽅形
  6. 影像處理 cv::Mat • Resize cv::Mat imageMat_Orig; UIImageToMat(image, imageMat_Orig); cv::resize(imageMat_Orig, imageMat_Orig

    , cv::Size(imageMat_Orig.cols * rate , imageMat_Orig.rows * rate), 0, 0, CV_INTER_AREA); • 曝光 增強... etc
  7. 形態學 cv::morphologyEx 原圖 開運算 open 開運算 = 腐蝕 + 膨脹

    先腐蝕(瘦)后膨脹(胖) 叫開運算,其作⽤是:分離物體,消除⼩區域
  8. 輪廓特性 輪廓 • 輪廓⾯積 • 輪廓周長 • 矩 (幾何特徵)
 質⼼

    ⾯積 • 外接矩形 • 最⼩外接圓 • 擬合橢圓 • 形狀匹配