【OpenCV】圖像幾何形狀識別(C++)


前言

        又是好久沒寫。。。開了OpenCV這個板塊總要寫點東西,正好昨晚花了一晚上整出來一個幾何形狀識別,用了個簡單的方法,整體上不難

理論

        對於物體幾何形狀的識別,我們需要的就是它的特征,而常見的幾何形狀特征主要在於構成這一形狀的邊的條數,那么對於幾何形狀的識別,就可以分為以下兩步:首先濾除無關信息,接着獲取判別特征。

        濾除無關信息我們采用的是簡單的二值化處理,對於初始圖像,利用到如下兩個函數:

        灰度:cvtColor(img, imgGray, COLOR_BGR2GRAY)

        二值化:threshold(imgGray, imgBinary, 197, 255, THRESH_BINARY)

        197為灰度二值化閾值,對於較為復雜的情況可以采用Sobel或者Canny

         獲取判別特征,首先利用findContours找出邊界,利用drawContours畫出邊界所在,再利用多邊形逼近approxPolyDP擬合出形狀最可能的邊數

    vector<vector<Point>> contours;

    vector<Point> point;

    vector<Vec4i> hireachy;

    findContours(imgBinary, contours, hireachy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point());//尋找邊界

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM