本文共 1355 字,大约阅读时间需要 4 分钟。
本博客旨在实现两大核心功能:
在处理图像之前,必须对其进行预处理,以确保后续操作的准确性。常用的步骤包括:
完成图像预处理后,下一步是进行轮廓检测。通过以下方法可以实现:
import argparseimport imutilsimport cv2# 定义命令行参数ap = argparse.ArgumentParser()ap.add_argument("-i", "--image", required=True, help="输入图像路径")args = vars(ap.parse_args())# 加载图像并进行预处理image = cv2.imread(args["image"])gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)blurred = cv2.GaussianBlur(gray, (5, 5), 0)thresh = cv2.threshold(blurred, 60, 255, cv2.THRESH_BINARY)[1]# 检测轮廓cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)cnts = imutils.grab_contours(cnts)# 遍历每个轮廓for c in cnts: M = cv2.moments(c) cX = int(M["m10"] / M["m00"]) cY = int(M["m01"] / M["m00"]) # 绘制轮廓边缘及质心 cv2.drawContours(image, [c], -1, (0, 255, 0), 2) cv2.circle(image, (cX, cY), 7, (255, 255, 255), -1) cv2.putText(image, "center", (cX - 20, cY - 20), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2)# 显示结果cv2.imshow("Image", image)cv2.waitKey(0) 通过上述方法,我们成功实现了图像中的轮廓检测与质心计算。这种技术在计算机视觉和图像处理领域具有广泛的应用价值,尤其是在需要分析和识别图像中形状特性的场景中。
转载地址:http://xxai.baihongyu.com/