以下是一个简单的Python函数,用于给轮廓标号:

import cv2

def contour_numbering(image, color=(0, 255, 0), thickness=2, font_scale=0.5):
    """
    给轮廓标号

    :param image: 输入图像
    :param color: 标号颜色,默认为绿色
    :param thickness: 标号线宽,默认为2
    :param font_scale: 标号字体大小,默认为0.5
    :return: 带有标号的图像
    """
    # 将图像转换为灰度图
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # 进行边缘检测
    edged = cv2.Canny(gray, 30, 200)

    # 寻找轮廓
    contours, hierarchy = cv2.findContours(edged, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

    # 遍历轮廓并标号
    for i, c in enumerate(contours):
        # 计算轮廓中心坐标
        M = cv2.moments(c)
        cX = int(M["m10"] / M["m00"])
        cY = int(M["m01"] / M["m00"])

        # 在轮廓上绘制标号
        cv2.putText(image, str(i + 1), (cX, cY), cv2.FONT_HERSHEY_SIMPLEX,
                    font_scale, color, thickness)

    return image

该函数接受一个输入图像,并在图像中找到所有的轮廓。然后,它遍历每个轮廓,计算轮廓的中心坐标,并在轮廓上绘制带有标号的文本。最终返回带有标号的图像。

用python写一个给轮廓标号的函数

原文地址: https://www.cveoy.top/t/topic/bqFj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录