Проблема с выводами контура в изображениях на opencv

Я написал программу, которая ищет те детали, которые имеют круглые элементы (отверстия, форму и т.д.). Программа должна описать эллипс определенного цвета вокруг найденных контуров и вывести координаты его центра. С одной стороны программа при запуске не выдает никаких ошибок, с другой она не может найти контуры. Код самой программы:

import cv2
import numpy as np
import math

# задаем диапазон цветов для поиска (в данном случае - серый)
hsv_min = np.array((0, 0, 50), np.uint8)
hsv_max = np.array((180, 50, 220), np.uint8)

# открываем изображение
image=r"C:\1\detail.jpg"
img = cv2.imread(image)

# конвертируем изображение в HSV-пространство
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# создаем маску для поиска объектов с заданным цветом
mask = cv2.inRange(hsv, hsv_min, hsv_max)

# находим контуры объектов на изображении
contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# перебираем контуры и ищем эллипсы
if contours:
    for cnt in contours:
        # находим площадь контура
        area_a = cv2.contourArea(cnt)
        
        # если контур состоит из больше чем 5 точек
        if len(cnt) > 5:
            # находим эллипс, подходящий по форме под контур
            ellipse = cv2.fitEllipse(cnt)
            
            # вычисляем площадь эллипса
            area = int(math.pi * ellipse[1][0] * ellipse[1][1] / 4)
            
            # если эллипс соответствует условиям
            if area > 1200 and math.fabs(area - area_a) < 470:
                # находим центр эллипса
                center = (int(ellipse[0][0]), int(ellipse[0][1]))
                
                # отображаем контур на изображении
                cv2.drawContours(img, [cnt], 0, (200, 100, 25), 4)
                
                # отображаем эллипс на изображении
                cv2.ellipse(img, ellipse, (200, 100, 25), 4)
                
                # добавляем подпись к контуру
                cv2.putText(img, f"Center: {center}", (center[0] + 20, center[1] - 20), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
else:
    print("контуры не найдены")

# выводим результаты на изображение
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Сообщение, что контуры не найдены, выдается только если вообще никаких контуров нет, но найденные контуры потом еще по 2 условиям просеиваются. Попробуйте поиграться с hsv_min и hsv_max. Например:

hsv_min = np.array((150, 0, 120), np.uint8)
hsv_max = np.array((220, 30, 200), np.uint8)