feat generate 修改中心点判断
This commit is contained in:
@@ -153,11 +153,38 @@ def stain_detection(image, spot_size=100):
|
|||||||
logger.info(f"第{index + 1}发现了污点")
|
logger.info(f"第{index + 1}发现了污点")
|
||||||
return False, None
|
return False, None
|
||||||
# 中心区域检测
|
# 中心区域检测
|
||||||
center_x, center_y = width // 2, height // 2
|
# 将图像转换为灰度图像
|
||||||
center_image = image[center_y - spot_size // 2:center_y + spot_size // 2, center_x - spot_size // 2:center_x + spot_size // 2]
|
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
|
||||||
gray_center_image = cv2.cvtColor(center_image, cv2.COLOR_BGR2GRAY)
|
# 获取图像的中心点坐标
|
||||||
white_threshold = 200 # 设定的接近最大值的阈值
|
center_x, center_y = image.shape[1] // 2, image.shape[0] // 2
|
||||||
is_pure_white = (gray_center_image >= white_threshold).all()
|
# 定义中心区域的大小
|
||||||
|
patch_size = 100
|
||||||
|
half_patch = patch_size // 2
|
||||||
|
# 提取中心区域
|
||||||
|
center_patch = gray[center_y - half_patch:center_y + half_patch, center_x - half_patch:center_x + half_patch]
|
||||||
|
# 设置阈值来检测纯白区域
|
||||||
|
_, thresh = cv2.threshold(center_patch, 254, 255, cv2.THRESH_BINARY)
|
||||||
|
# 寻找轮廓
|
||||||
|
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
|
||||||
|
# 过滤非连续的纯白区域
|
||||||
|
filtered_contours = [cnt for cnt in contours if cv2.contourArea(cnt) >= 50] # 根据面积进行过滤,这里假设面积大于50的为连续区域
|
||||||
|
# 如果有连续的纯白区域存在
|
||||||
|
if filtered_contours:
|
||||||
|
# 将纯白区域替换为灰色
|
||||||
|
if DEBUG:
|
||||||
|
for cnt in filtered_contours:
|
||||||
|
x, y, w, h = cv2.boundingRect(cnt)
|
||||||
|
# 在原始图像上进行替换
|
||||||
|
image[y + center_y - half_patch:y + center_y - half_patch + h, x + center_x - half_patch:x + center_x - half_patch + w][thresh[y:y + h, x:x + w] == 255] = (128, 128, 128)
|
||||||
|
# 显示图像
|
||||||
|
cv2.imshow('Marked Image', image)
|
||||||
|
cv2.waitKey(0)
|
||||||
|
logger.info("中心区域存在连续的纯白区域")
|
||||||
|
is_pure_white = True
|
||||||
|
else:
|
||||||
|
logger.info("中心区域不存在连续的纯白区域")
|
||||||
|
is_pure_white = False
|
||||||
|
|
||||||
if is_pure_white:
|
if is_pure_white:
|
||||||
return False, None
|
return False, None
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
|
|||||||
Reference in New Issue
Block a user