关于#opencv#的问题,如何解决?

本人初学opencv使用4.6,写demo时遇到一点问题,还请各位帮忙解答

import numpy as np
import cv2
import math

font = cv2.FONT_HERSHEY_SIMPLEX

def cv_show(name,img):
   cv2.imshow(name, img)
   cv2.waitKey(0)
   cv2.destroyAllWindows()

def open_image(image):
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
    image = cv2.dilate(image, kernel)
    image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)

    # image = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)
    return image

warped = cv2.imread(r"D:\Pictures\picture\photo3.jpg")
hsv_img = cv2.cvtColor(warped, cv2.COLOR_BGR2HSV)
white_circle_num = 0
white_rect_num = 0
lower_white = np.array([75, 0, 158])  # 颜色范围低阈值
upper_white = np.array([118, 64, 247])  # 颜色范围高阈值
mask_white = cv2.inRange(hsv_img, lower_white, upper_white)  # 根据颜色范围删选
mask_white = cv2.GaussianBlur(mask_white, (5, 5), 0)  # 中值滤波
mask_white = open_image(mask_white)
print(mask_white.shape)
# mask_white = cv2.threshold(mask_white, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]

# cv2.imwrite('mask_white.jpg', mask_white)
mask_white = cv2.Canny(mask_white, 75, 200)
cv_show('mask_white', mask_white)

print(1)
contours4 = cv2.findContours(mask_white, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)[0]
# contours4 = sorted(contours4, key=cv2.contourArea, reverse=True)[:7]
print(2)
for cnt4 in range(len(contours4)):
    print(5)
    area = cv2.contourArea(cnt4)
    print(3)
    center, radius = cv2.minEnclosingCircle(cnt4)  # 圆心半径
    print(4)
    print(radius)
    rate = area / (math.pi * radius * radius)
    if radius > 100 and radius < 160:
        print(radius)
        if rate >= 0.9:
            cv2.circle(warped, (int(center[0]), int(center[1])), int(radius), (255, 255, 0), 2)
            cv2.putText(warped, 'white_circle', (int(center[0]), int(center[1])), font, 1, (0, 255, 0), 2)
            white_circle_num += 1
        elif rate > 0.6 and rate < 0.9:
            rect = cv2.minAreaRect(cnt4)
            box = cv2.boxPoints(rect)
            box = np.int0(box)
            # cv2.circle(img,(int(center[0]),int(center[1])),int(radius),(255,0,255),5)
            warped = cv2.drawContours(warped, [box], 0, (255, 255, 0), 2)
            cv2.putText(warped, 'white_rect', (int(center[0]), int(center[1])), font, 1, (0, 255, 0), 2)
            white_rect_num += 1
            cv_show("white_dect", warped)



img