# ImageFound **Repository Path**: mathematicsX/ImageFound ## Basic Information - **Project Name**: ImageFound - **Description**: 一个使用OpenCV3.3构建的图形识别项目 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: https://blog.51cto.com/xvjunjie/2416635 - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2020-06-15 - **Last Updated**: 2021-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ImageFound ImageFound是一个使用OpenCV3.3+MSVC2017(Visual Studio 2017)构建的图形识别项目,ImageFound可以检测各种图形及其颜色信息 # 可以检测的图形 * 三角形 * 正方形 * 长方形 * 菱形 * 圆形 * 五边形 * 六边形 * 五角星 * 由不同颜色的两个三角形构成的特殊矩形 ![示例图片](图像检测/test.png) # 实现思路 读取图像,进行一大堆判断,来检测图像在不在呀,什么类型呀,什么的。然后就是拷贝了3份,一份用于检测圆,另一份用于检测其他图形,再一份就是用于显示最终结果和保存。检测图片中的圆使用了霍夫圆检测算法。检测其他图形先用Canny边缘检测,再用轮廓发现,最后进行多边形拟合判断图形有几条边。在四边形的判断中,比较复杂。 * 菱形的判断 读取轮廓上的第一个点,然后计算出中心点,看一下第一个点的XY坐标是否与中心点的一个坐标大约相等。 * 特殊双色四边形的判断 计算出中心点以后,上下左右分别移动产生四个点,计算色差即可。 * 正方形的判断 计算轮廓上第一个点到中心点的X方向距离是否和Y方向距离大约相等。 * 长方形的判断 同上。 * 圆和星星的判断 在检测时发现有时候圆和星星有可能被误识别,通过获取轮廓上第一个点和图形的中心点。计算两点的距离,使用圆的面积公式求面积。在使用OpenCV3.3中自带的轮廓区域面积函数获取面积。通过比较来判断是圆形还是星星,因为同等距离的星星的面积比圆小。 # 识别结果示例 ![结果示例](图像检测/result.png)