import cv2 import numpy as np # 读取图像并将其转换为灰度图像 img = cv2.imread('image.png') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 查找轮廓 contours, hierarchy = cv2.findContours(gray, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # 绘制轮廓 for contour in contours: # 计算轮廓长度 contour_length = cv2.arcLength(contour, True) # 定义线条粗细的列表,使其从1到10逐渐增加 thickness_list = np.linspace(1, 10, len(contour)) # 遍历轮廓上的每个点,并在图像中绘制线条 for i, point in enumerate(contour): # 计算当前点的线条粗细 thickness = int(thickness_list[i]) # 绘制线条 if i == 0: # 如果是起点,线条粗细为1 cv2.circle(img, tuple(point[0]), 1, (0, 0, 255), -1) else: # 如果不是起点,线条粗细为thickness prev_point = tuple(contour[i - 1][0]) curr_point = tuple(point[0]) cv2.line(img, prev_point, curr_point, (0, 0, 255), thickness) # 显示图像 cv2.imshow('image', img) cv2.waitKey(0) cv2.destroyAllWindows()