如何使用 OpenCV 查找椭圆异常?

问题描述 投票:0回答:0

我正在尝试使用 Python 的 OpenCV 查找 O 形环上的椭圆异常。
让我们将异常定义为不在 O 形环侧面方向的划痕、起伏、突然的颜色变化。

请注意,所有照片都是从 orings 上方拍摄的。

我想将 OpenCV 标记为红色的部分检测为异常:

我想我基本上应该尝试找到一个椭圆边缘检测算法。
我尝试应用自适应蒙版和边缘检测算法。但正如预期的那样,他们正在检测所有形式的异常,而不是我上面提到的那种。

import cv2 as cv

img = cv.imread('oring.jpg')
denoised = cv.bilateralFilter(img, 7, 39, 39)
denoised = cv.GaussianBlur(denoised, (3, 3), 0)

gray = cv.cvtColor(denoised, cv.COLOR_BGR2GRAY)
canny = cv.Canny(denoised, 100, 255)

ddepth = cv.CV_16S
scale = 1
delta = 0
grad_x = cv.Sobel(gray, ddepth, 1, 0, ksize=3, scale=scale, delta=delta, borderType=cv.BORDER_DEFAULT)
grad_y = cv.Sobel(gray, ddepth, 0, 1, ksize=3, scale=scale, delta=delta, borderType=cv.BORDER_DEFAULT)
grad = cv.addWeighted(cv.convertScaleAbs(grad_x), 0.5, cv.convertScaleAbs(grad_y), 0.5, 0)

mask = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY, 11, 3)

cv.imshow('denoised', denoised)
cv.imshow('canny', canny)
cv.imshow('sobel', grad)
cv.imshow('mask', mask)
cv.waitKey(0)

python opencv image-processing detection
© www.soinside.com 2019 - 2024. All rights reserved.