python 帮我写一个与模板图做对比检测图片中的电路是否存在 短路、开路、残铜、针孔、缺口、毛刺缺陷,并分类到各个文件夹
时间: 2023-08-22 10:07:19 浏览: 96
用openCV和Python 实现图片对比,并标识出不同点的方式
5星 · 资源好评率100%
好的,这个任务可以使用Python的OpenCV库完成。具体操作步骤如下:
1. 加载模板图和待检测的图片。
2. 将模板图和待检测的图片都转换为灰度图像,可以使用OpenCV的cvtColor()函数实现。
3. 使用OpenCV的matchTemplate()函数在待检测的图片中搜索模板图,并得到匹配的结果。
4. 根据匹配结果,判断是否存在短路、开路、残铜、针孔、缺口、毛刺缺陷。
5. 将不同类型的缺陷图片分类到不同的文件夹中,可以使用Python的os库实现。
示例代码如下:
```python
import cv2
import os
# 加载模板图和待检测的图片
template_img = cv2.imread('template.png')
detect_img = cv2.imread('detect.png')
# 将模板图和待检测的图片都转换为灰度图像
template_gray = cv2.cvtColor(template_img, cv2.COLOR_BGR2GRAY)
detect_gray = cv2.cvtColor(detect_img, cv2.COLOR_BGR2GRAY)
# 使用matchTemplate()函数在待检测的图片中搜索模板图,并得到匹配的结果
result = cv2.matchTemplate(detect_gray, template_gray, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# 判断是否存在短路、开路、残铜、针孔、缺口、毛刺缺陷
if max_val > 0.9:
# 存在缺陷
x, y = max_loc
w, h = template_gray.shape[::-1]
defect_img = detect_img[y:y+h, x:x+w]
if '短路' in os.listdir():
cv2.imwrite('短路/defect.png', defect_img)
elif '开路' in os.listdir():
cv2.imwrite('开路/defect.png', defect_img)
elif '残铜' in os.listdir():
cv2.imwrite('残铜/defect.png', defect_img)
elif '针孔' in os.listdir():
cv2.imwrite('针孔/defect.png', defect_img)
elif '缺口' in os.listdir():
cv2.imwrite('缺口/defect.png', defect_img)
elif '毛刺' in os.listdir():
cv2.imwrite('毛刺/defect.png', defect_img)
else:
# 不存在缺陷
print('未检测到缺陷')
```
注意:以上代码只是一个简单的示例,具体实际应用中还需要根据实际情况进行调整和优化。
阅读全文