用python写一个给轮廓标号的函数
以下是一个简单的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
该函数接受一个输入图像,并在图像中找到所有的轮廓。然后,它遍历每个轮廓,计算轮廓的中心坐标,并在轮廓上绘制带有标号的文本。最终返回带有标号的图像。
原文地址: https://www.cveoy.top/t/topic/bqFj 著作权归作者所有。请勿转载和采集!