Opencv之轮廓的面积和周长(附完整源码)

昨天我们讲了如何实现Opencv轮廓之:矩+重心,今天我们来看看Opencv之轮廓的面积和周长吧~

什么是轮廓的面积和周长呢?

就是我们常说的面积和周长,没有其他的特别意思。

如何实现轮廓的面积呢?

我们用函数:

  • area = cv2.contourArea(cnt)

如何实现轮廓的周长呢?

我们用函数:

  • perimeter = cv2.arcLength(cnt,True)

这个True表示图像是闭合的。

大家是不是忘了我们用的图像轮廓是什么样的了?

Opencv之轮廓效果图
轮廓效果图

我放下原图像:

Opencv轮廓原图像
原图像

有关于源码,请点这里:源码

好了,这下我们准备好实现了,上源码~

# -*- coding:utf-8 -*-
"""
Created on Tue Apr 4 20:01:42 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 "   "

im2,contours, hierarchy = cv2.findContours(thresh, 1,2)

print "   "
cnt = contours[0]

#计算面积
print "    "
area = cv2.contourArea(cnt)
print "The area is:" , area

#计算周长
print "    "
perimeter = cv2.arcLength(cnt,True)
print "The perimeter is:" , perimeter

看看得到了什么结果吧~

Opencv之轮廓的面积和周长结果
得到的结果~

 

今天的内容就到这里啦,感谢各位小伙伴的陪伴,小伙伴们一定要加油,这条路不好走,希望坚定向前。我是Y,欢迎大家来我的博客做客,大家晚安啦~

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,欢迎大家来我的博客~