網站首頁 編程語言 正文
對于現在很多工業檢測,特別是對一些精密的器件進行篩選,往往都是像素級別的,十分的精確。
主要思想
- 將圖像轉化為二值圖像
- 在對圖像進行腐蝕/膨脹處理
- 在進行輪廓檢測
- 篩選目標大小符合的輪廓(排除誤差小的輪廓)
- 在在進行膨脹化處理,將輪廓信息繪制出
import cv2
import os
import numpy as np
import time
t1 = time.time()
img = cv2.imread('./label/28901647.jpg', 0)
img_copy = cv2.imread('./label/28901647.jpg', 0)
mask = np.zeros_like(img)
print(np.shape(img))
# 先利用二值化去除圖片噪聲
ret, img = cv2.threshold(img, 80, 255, cv2.THRESH_BINARY)
es = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (4, 2))
img = cv2.dilate(img, es, iterations=1) # 形態學膨脹
kernel = np.ones(shape=[5,5],dtype=np.uint8)
img = cv2.erode(img,kernel=kernel) # 腐蝕操作
cv2.imshow('aa',img)
cv2.waitKey(0)
contours, _ = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
n = len(contours) # 輪廓的個數
cv_contours = []
for contour in contours:
area = cv2.contourArea(contour)
if area <= 500:# 篩選面積大于500的,小于500的全部變為255,
cv_contours.append(contour)
# 方式一
# x, y, w, h = cv2.boundingRect(contour) # 這個函數可以獲得一個圖像的最小矩形邊框一些信息,參數img是一個二值圖像,它可以返回四個參數,左上角坐標,矩形的寬高 (輪廓集合 contour)
# img[y:y + h, x:x + w] = 255
else:
cv2.drawContours(img_copy, [contour], -1, (0, 0, 255), 0) # 多邊形輪廓繪制
print('area:', area)
continue
# 方式二
cv2.fillPoly(img, cv_contours, (255, 255, 255)) # 多個多邊形填充
t2 = time.time()
print('時間:',t2-t1)
cv2.imwrite('./output/28901647.jpg', img)
1、尋找到的輪廓信息(缺陷)
2、通過腐蝕、膨脹后的,篩選出的較大缺陷
3、通過不同程度的膨脹腐蝕、缺陷面積篩選
原文鏈接:https://blog.csdn.net/qq_44936246/article/details/126151769
相關推薦
- 2022-06-09 教你在k8s上部署HADOOP-3.2.2(HDFS)的方法_云其它
- 2022-06-29 超級詳細的nginx負載均衡配置_nginx
- 2024-02-16 springboot開啟mybatis二級緩存
- 2022-05-02 利用numba讓python速度提升百倍_python
- 2022-09-19 pytorch中使用LSTM詳解_python
- 2022-06-16 Go基礎教程系列之數據類型詳細說明_Golang
- 2022-05-23 腳本實現SSL證書到期監控示例_PowerShell
- 2022-05-19 Python學習之異常處理的避坑指南_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支