python获取图片的轮廓及其中心坐标

python获取图片的轮廓及其中心坐标

import cv2
#读取图片,该图在此代码的同级目录下
bgr_img = cv2.imread("test2.jpg")
#二化值
gray_img = cv2.cvtColor(bgr_img, cv2.COLOR_BGR2GRAY)
th, binary = cv2.threshold(gray_img, 0, 255, cv2.THRESH_OTSU)
#获取轮廓的点集
contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

#取最大的边缘轮廓点集
contours = max(contours, key=cv2.contourArea)

#求取轮廓的矩
M = cv2.moments(contours)

#画出轮廓
cv2.drawContours(bgr_img, contours, -1, (0, 0, 255), 3)
bounding_boxes = [cv2.boundingRect(cnt) for cnt in contours]

#在图片上画出矩形边框
for bbox in bounding_boxes:
    [x, y, w, h] = bbox
    cv2.rectangle(bgr_img, (x, y), (x + w, y + h), (0, 255, 0), 2)
#通过矩来计算轮廓的中心坐标
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])
print(f"({cx},{cy})")
cv2.imshow("name", bgr_img)
cv2.waitKey(0)

原图在这里插入图片描述
运行结果
在这里插入图片描述
本人小白一枚,若有不足,望大佬多多指正(主要是用于记录学习)
在此鸣谢
https://blog.csdn.net/ei1990/article/details/78395917
https://blog.csdn.net/qq_41427568/article/details/100897746

  • 15
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值