当前位置: 首页 > article >正文

OpenCV基本操作(python开发)——(8)实现芯片瑕疵检测

OpenCV基本操作(python开发)——(1) 读取图像、保存图像
OpenCV基本操作(python开发)——(2)图像色彩操作
OpenCV基本操作(python开发)——(3)图像形态操作
OpenCV基本操作(python开发)——(4)图像梯度处理
OpenCV基本操作(python开发)——(5)轮廓处理
OpenCV基本操作(python开发)——(6)视频基本处理
OpenCV基本操作(python开发)——(7)实现图像校正
OpenCV基本操作(python开发)——(8)实现芯片瑕疵检测

OpenCV——实现芯片瑕疵检测

【任务描述】

利用图像技术,检测出芯片镀盘区域瑕疵。样本图像中,粉红色区域为镀盘区域,镀盘内部空洞为瑕疵区域,利用图像技术检测镀盘是否存在瑕疵,如果存在则将瑕疵区域标记出来。

在这里插入图片描述

【代码】

import cv2
import numpy as np
import math

# 第一步:图像预处理
## 1. 转换成灰度图像,进行二值化处理
im_cpu = cv2.imread("../../data/CPU3.png")
im_gray = cv2.cvtColor(im_cpu, cv2.COLOR_BGR2GRAY)  # 转换成灰度图像

# 提取出度盘轮廓
ret, im_bin = cv2.threshold(im_gray, 162, 255, cv2.THRESH_BINARY)  # 图像二值化
cv2.imshow("im_cpu", im_cpu)
cv2.imshow("im_gray", im_gray)
cv2.imshow("im_bin", im_bin)

# 提取轮廓、绘制边沿
img, contours, hierarchy = cv2.findContours(im_bin, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

# 绘制前景对象轮廓
mask = np.zeros(im_bin.shape, np.uint8)
mask = cv2.drawContours(mask, contours, -1, (255, 0, 0), -1)  # 绘制实心轮廓
cv2.imshow("mask", mask)

# 前景实心轮廓图和二值化图相减
im_sub = cv2.subtract(mask, im_bin)
cv2.imshow("im_sub", im_sub)

# 图像闭运算,先膨胀后腐蚀,去除内部毛刺
k = np.ones((10, 10), np.uint8)
im_close = cv2.morphologyEx(im_sub, cv2.MORPH_CLOSE, k, iterations=3)
cv2.imshow("im_close", im_close)

# 提取、绘制轮廓、计算面积
img, contours, hierarchy = cv2.findContours(im_close, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

(x, y), radius = cv2.minEnclosingCircle(contours[1])
center = (int(x), int(y))
radius = int(radius)
print("center:", center, " radius:", radius)
cv2.circle(im_close, center, radius, (255, 0, 0), 2)  # 绘制圆
cv2.imshow("im_gaussian_blur2", im_close)

# 在原始图片上绘制瑕疵
cv2.circle(im_cpu, center, radius, (0, 0, 255), 2)  # 绘制圆
cv2.imshow("im_cpu2", im_cpu)

#计算面积
area = math.pi * radius * radius
print("area:", area)
if area > 12:
    print("度盘表面有缺陷")

cv2.waitKey()
cv2.destroyAllWindows()

【执行结果】

在这里插入图片描述


http://www.kler.cn/a/371924.html

相关文章:

  • MATLAB——入门知识
  • 简单的Python爬虫实例
  • MLP预售开启,革新去中心化通信生态:智能手机与AI Agent齐上阵
  • 力扣每日一题 685. 冗余连接 II
  • 2024年9月电子学会青少年软件编程Python等级考试(三级)真题试卷
  • 软考:CORBA架构
  • 【GPT模型的大小】GPT3模型到底多大,如果训练需要什么条件?
  • 盘古信息IMS系统助力制造企业释放新质生产力
  • 上市公司数字经济与实体经济融合发展程度测算数据(2008-2022年)-最新出炉_附下载链接
  • 基于华为atlas环境下的OpenPose人体关键点检测的人员跨越、坐立检测
  • Mybatis-15.动态SQL-if
  • 【Hadoop之hdfs】hdfs一些简单明了的总结(一篇足以,字少但都是精华)
  • pytest 单元框架里,前置条件
  • MySQL数据集成至金蝶云星空的解决方案
  • 【Fastjson反序列化漏洞:深入了解与防范】
  • 类加载机制123
  • HTML入门教程9:HTML引用
  • java 大集合切分成一个集合中有多个小集合
  • Java程序设计基础 第十七章:反射和设计模式
  • 大话PM | 从项目管理软件看项目管理的三个原则两个思维两个工具
  • 深入 Prometheus 监控生态 - 第五篇:利用 API 信息进行监控(NAS 备份任务监控 + 解决思路)
  • 【约束优化】一次搞定拉格朗日,对偶问题,弱对偶定理,Slater条件和KKT条件
  • 画思维导图的app有哪些?5个软件让你轻松画思维导图不求人
  • PostgreSQL 不同模式之间的数据迁移
  • Python小游戏18——中国象棋
  • 安卓13 连接usb设备后不更新ui