【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