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

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.lryc.cn/news/472419.html

相关文章:

  • 聚水潭商品信息集成到MySQL的高效解决方案
  • # centos6.5 使用 yum list 报错Error Cannot find a valid baseurl for repo bas 解决方法
  • 【专题】2023-2024中国保险数字化营销调研报告汇总PDF洞察(附原数据表)
  • ““ 引用类型应用举例
  • 数字图像处理 - 基于ubuntu20.04运行.NET6+OpenCVSharp项目
  • git cherry-pick用法详解
  • HCIP-HarmonyOS Application Developer V1.0 笔记(一)
  • 开发流程初学者指南——需求分析
  • CRM平台排名:用户体验与客户满意度的深度解析
  • WIFI、NBIOT、4G模块调试AT指令连接华为云物联网服务器(MQTT协议)
  • 打造自己的RAG解析大模型:(新技能)企业垂类数据标注(一)
  • 怎么理解ES6 Proxy
  • verilog实现一个5bit序列检测器
  • Redis数据安全_持久化机制
  • 什么是信息熵,什么是交叉熵,什么是KL散度?
  • 开发者的福音:PyTorch 2.5现已支持英特尔独立显卡训练
  • Deep InfoMax(DIM)(2019-02-ICLR)
  • 2024年10月中国数据库排行榜:TiDB续探花,GaussDB升四强
  • css边框修饰
  • 利用Python进行数据可视化:实用指南与推荐库
  • MobileNetv2网络详解
  • 惊了!大模型连这样的验证码都能读懂_java_识别验证码
  • 【小白学机器学习26】 极大似然估计,K2检验,logit逻辑回归(对数回归)(未完成----)
  • 【日常记录-Java】SLF4J扫描实现框架的过程
  • uni-app 获取 android 手机 IMEI码
  • 后台管理系统的通用权限解决方案(八)认证机制介绍、JWT介绍与jjwt框架的使用
  • 接口测试 —— Postman 变量了解一下!
  • 鸿蒙系统:核心特性、发展历程与面临的机遇与挑战
  • 从0到1,用Rust轻松制作电子书
  • 半天入门!锂电池剩余寿命预测(Python)