python输入坐标求面积_opencv-轮廓面积和中心点的计算(python)

1.矩

矩本来是个统计学概念,定义为f(x)*P(x)关于x的定积分,在二值化图形中,其零阶矩的定义如下:

V(i,j)是(i,j)点的灰度值,这个定义的本意是,所有像素的灰度值的总和,但因为在二值化图形中,白色都为1,黑色都为0,所以M00的结果是所有白色区域的像素值的和,也可以当作白色区域的面积使用。

其一阶矩定义如下:

i,j分别是每个像素的x,y坐标,这个定义本质所有像素点的x,y坐标分别和像素值相乘的积,然后求和得到的,同样M10的结果就是所有白色区域像素的x坐标的和,M01是所有白色区域y坐标的和。

利用一阶矩,我们可以求出图形的重心坐标,其公式为:

2、求面积和重心

如上面所示,利用矩可以求出图形的面积和重心

opencv提供cv2.moments(轮廓)来求出图形的矩,这个函数只要提供Contours参数就可以。

例子:

M= cv2.moments(contours[0]) #求矩

cx = int(M[‘m10’]/M[‘m00’]) # 求x坐标

cy = int(M[‘m01’]/M[‘m00’]) # 求y坐标

img=cv2.circle(img ,(cx,cy),2,(0,0,255),4) #画出重心

屏幕剪辑的捕获时间:2018/4/15 21:19

对于面积,本来图形的矩里面M00就是表示面积,但opencv同时也提供cv2.ContourArea(轮廓)

来计算面积,两者并没有什么区别

例子:

area = cv2.contourArea(contours[0])

print “area = %f”%area

print “M00 = %f”%M[“m00”]

注:cv2.moments这个函数返回的结果是一个字典类型的数据,零阶矩的键值是m00,一阶矩的键值分别是m10和m01

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值