使用Python在图像中查找元素 无需AI识别正方形并获取坐标数组
无AI方案实现图像正方形坐标检测
完全可以通过传统计算机视觉方法实现该需求,无需引入任何AI、深度学习相关技术,针对你提供的下图这类背景干净、边缘清晰的场景,检测准确率可以接近100%:
具体实现步骤如下:
- 图像预处理
先将原图转为灰度图,再通过阈值二值化将深色正方形和白色背景分离,之后通过形态学开运算消除零散噪点,避免后续检测出现误判。如果用Python+OpenCV实现,核心调用函数为cv2.cvtColor()、cv2.threshold()、cv2.morphologyEx()。 - 轮廓提取
用Canny算子检测图像边缘,再通过cv2.findContours()提取所有连通的边缘轮廓。 - 正方形筛选
对每个提取到的轮廓依次做如下校验,全部符合即可判定为正方形:- 用
cv2.approxPolyDP()对轮廓做多边形拟合,拟合参数设置为轮廓周长的2%左右,若拟合后多边形顶点数为4,则判定为四边形 - 用
cv2.contourArea()计算轮廓面积,过滤面积远小于正常正方形的噪点轮廓 - 计算四边形四条边的长度、相邻边的夹角,若最长边与最短边的差值小于预设阈值、四个夹角均接近90度,即可判定为正方形
- 用
- 坐标输出
对判定为正方形的轮廓,可直接提取拟合得到的四个顶点坐标,也可以用cv2.boundingRect()获取外接矩形的左上角坐标、宽高参数,整理后存入数组即可。
提示:如果应用场景存在正方形倾斜、部分遮挡、背景复杂的情况,仅需要调整二值化阈值、轮廓拟合误差参数即可适配,无需引入AI模型
内容的提问来源于stack exchange,提问作者Николай Нарушев
相关产品推荐
相关产品推荐

