Opencv轮廓之:矩(更新版)+重心

昨天我公布了Opencv轮廓之:矩的源码,源码中有错误,今天我找到了错误完美运行。

发布下源码:

# -*- coding:utf-8 -*-
"""
Created on Mon Apr 3 17:13:17 2017

@author: Y

"""

import cv2
import numpy as np

img = cv2.imread('C:\Users\Administrator\Desktop\opencvimg\orginalp.png')
imgray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

ret,thresh = cv2.threshold(imgray,127,255,0)
print "   "
#try:
    #contours,hierarchy = cv2.findContours(thresh,1,2)
#im2,contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
#昨天就是差在这里,im2再Opencv3.x.x中不能默认存在
im2,contours, hierarchy = cv2.findContours(thresh, 1,2)
#except Exception,ex:
    #print Exception,":",ex
print "   "
cnt = contours[0]
M = cv2.moments(cnt)
print M
print "   "
#计算重心
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])
print cx
print cy

 

那么我们可以根据M的值计算出对象的重心:

我们用这个公式:

重心公式
重心公式

在程序中该如何表示呢?

我们可以这么写:

  • cx = int(M[‘m10’]/M[‘m00’])
  • cy = int(M[‘m01’]/M[‘m00’])

我们把它放到程序中输出一下就得到了cx和cy

Opencv轮廓之重心
这就是我们得到的M的值,求得重心 cx与cy

真高兴自己找到了错误并纠正了它,也许这就是幸福~

大家可以加群交流,我是Y,欢迎大家来我的博客~

 

《Opencv轮廓之:矩(更新版)+重心》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注