提取contourArea opencv(Python)的问题

Posted

技术标签:

【中文标题】提取contourArea opencv(Python)的问题【英文标题】:Problems extracting contourArea opencv (Python) 【发布时间】:2012-11-03 18:21:20 【问题描述】:

我正在尝试使用 OpenCV 和 Python 获取图像中最大的区域,代码如下:

#Loading image:
fuente=cv.LoadImage('train/fruit1.jpg')

#Converting to grayscale...
#Converting to binary...
#Apply canny method...
#Dilating borders...

#Trying obtain contours:
storage = cv.CreateMemStorage(0)
contours = cv.FindContours(bordes, storage, cv.CV_RETR_EXTERNAL, cv.CV_CHAIN_APPROX_SIMPLE,(0,0))

#Drawing Contours...
contornoimg=cv.CreateImage(cv.GetSize(fuente),fuente.depth,1)
cv.DrawContours(contornoimg,contours,cv.Scalar(255),cv.Scalar(0),2,1,8,(0,0));
cv.SaveImage("train/contornos.png",contornoimg);

如果现在我打开图像“contornos.png”,我可以看到不同的轮廓,不仅仅是一个,比如我想要最大的轮廓,我必须计算面积最大的轮廓

max_area = -1
best_cnt = None

for cnt in contours:
    area = cv.ContourArea(cnt,slice=cv.CV_WHOLE_SEQ)
    if area > max_area:
        max_area = area
        best_cnt = cnt

但是当我执行文件时,得到这个错误信息:

cv.ContourArea(cnt,cv.CV_WHOLE_SEQ)->AttributeError: 'module' object has no attribute 'CV_WHOLE_SEQ'

有什么帮助吗?谢谢大家!

【问题讨论】:

如果您能上传您正在使用的图片,那就太好了——这样我们可以更轻松地测试您的代码。此外,您可以使用 Python 的较新的cv2 接口让您的生活更轻松。最近换了,确实方便多了。 禁止新用户上传图片,我试过了,但我不得不删除它们,但是昨天我决定换成cv2,我有很多问题旧版本,所以我不得不将所有功能更改为 cv2,我可以毫无问题地提取区域,谢谢! 很高兴你成功了! 【参考方案1】:

我用这个:

导入 cv2

面积 = cv2.contourArea(cnt)

我在这里找到了它: http://opencvpython.blogspot.ru/2012/04/contour-features.html

【讨论】:

他已经在使用cv.countourArea()。和cv2有区别吗?

以上是关于提取contourArea opencv(Python)的问题的主要内容,如果未能解决你的问题,请参考以下文章

python使用opencv识别滑动验证码的缺口

python使用opencv识别滑动验证码的缺口

python使用opencv识别滑动验证码的缺口

使用 Contour Area-OpenCV 时出现断言错误

利用圆圈轮廓面积求取圆环半径:cv2.findContours, contourArea

填充轮廓OpenCV的外部