python 帮我写一个与模板图做对比检测图片中的电路是否存在 短路、开路、残铜、针孔、缺口、毛刺这些缺陷缺陷,并分类到各个文件夹
时间: 2023-10-20 11:31:07 浏览: 37
好的,你需要用到以下的 Python 库:Pillow、OpenCV 和 NumPy。先安装这些库:
```python
pip install Pillow opencv-python numpy
```
接下来,你需要准备好模板图和待检测的图片。模板图是一个包含所有电路的图像,而待检测的图片是需要检测的电路图像。
我们可以使用 OpenCV 的模板匹配功能来比较待检测的图片和模板图,从而检测电路中是否存在短路、开路、残铜、针孔、缺口、毛刺等缺陷。
以下是一个示例代码,你可以根据需要进行修改:
```python
import cv2
import numpy as np
import os
# 读取模板图
template_img = cv2.imread('template.png', cv2.IMREAD_GRAYSCALE)
# 定义缺陷分类的文件夹名称
defect_folders = {
'short_circuit': 'short_circuits',
'open_circuit': 'open_circuits',
'residual_copper': 'residual_coppers',
'pinhole': 'pinholes',
'missing': 'missings',
'spur': 'spurs'
}
# 创建缺陷分类的文件夹
for folder in defect_folders.values():
os.makedirs(folder, exist_ok=True)
# 定义模板匹配的阈值
threshold = 0.9
# 读取待检测的图片
img = cv2.imread('circuit.png', cv2.IMREAD_GRAYSCALE)
# 进行模板匹配
result = cv2.matchTemplate(img, template_img, cv2.TM_CCOEFF_NORMED)
# 找到匹配程度高于阈值的部分
locations = np.where(result >= threshold)
# 遍历所有匹配的位置,检测是否存在缺陷
for pt in zip(*locations[::-1]):
# 判断是否存在短路
if pt[0] > 100 and pt[0] < 200 and pt[1] > 400 and pt[1] < 500:
filename = f'short_circuit/{pt[0]}_{pt[1]}.png'
# 判断是否存在开路
elif pt[0] > 300 and pt[0] < 400 and pt[1] > 200 and pt[1] < 300:
filename = f'open_circuit/{pt[0]}_{pt[1]}.png'
# 判断是否存在残铜
elif pt[0] > 500 and pt[0] < 600 and pt[1] > 400 and pt[1] < 500:
filename = f'residual_copper/{pt[0]}_{pt[1]}.png'
# 判断是否存在针孔
elif pt[0] > 700 and pt[0] < 800 and pt[1] > 200 and pt[1] < 300:
filename = f'pinhole/{pt[0]}_{pt[1]}.png'
# 判断是否存在缺口
elif pt[0] > 900 and pt[0] < 1000 and pt[1] > 400 and pt[1] < 500:
filename = f'missing/{pt[0]}_{pt[1]}.png'
# 判断是否存在毛刺
elif pt[0] > 1100 and pt[0] < 1200 and pt[1] > 200 and pt[1] < 300:
filename = f'spur/{pt[0]}_{pt[1]}.png'
else:
continue
# 保存缺陷图像
cv2.imwrite(filename, img[pt[1]:pt[1]+100, pt[0]:pt[0]+100])
```
你需要将 `template.png` 替换为你的模板图,`circuit.png` 替换为待检测的图片。缺陷分类的文件夹名称可以按照需要进行修改。在上面的示例代码中,我使用了一些简单的条件判断来判断缺陷的类型,并将缺陷图像保存到相应的文件夹中。你可以根据实际情况进行修改。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)