2014-07-11 42 views
10

我用下面的教程OpenCV的努力分水嶺算法: https://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_imgproc/py_watershed/py_watershed.html#watershedOpenCV的Python的 - AttributeError的:「模塊」對象有沒有屬性「connectedComponents」

我已經修正了錯誤,現在的代碼看起來像這樣的:

import numpy as np 
import cv2 
from matplotlib import pyplot as plt 
from sys import argv 

img = cv2.imread(argv[1]) 
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
ret, thresh = cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU) 

# noise removal 
kernel = np.ones((3,3),np.uint8) 
opening = cv2.morphologyEx(thresh,cv2.MORPH_OPEN,kernel, iterations = 2) 

# sure background area 
sure_bg = cv2.dilate(opening,kernel,iterations=3) 

# Finding sure foreground area 
dist_transform = cv2.distanceTransform(opening,cv2.cv.CV_DIST_L2,5) 
ret, sure_fg = cv2.threshold(dist_transform,0.7*dist_transform.max(),255,0) 

# Finding unknown region 
sure_fg = np.uint8(sure_fg) 
unknown = cv2.subtract(sure_bg,sure_fg) 

# Marker labelling 
ret, markers = cv2.connectedComponents(sure_fg) 

# Add one to all labels so that sure background is not 0, but 1 
markers = markers+1 

# Now, mark the region of unknown with zero 
markers[unknown==255] = 0 

markers = cv2.watershed(img,markers) 
img[markers == -1] = [255,0,0] 

cv2.imwrite("watershed_img.png",img) 
cv2.imwrite("watershed_markers.png",markers) 

當我嘗試運行它,我收到以下錯誤(文件名是 「watersh.py」):

Traceback (most recent call last): 
File "watersh.py", line 26, in <module> 
ret, markers = cv2.connectedComponents(sure_fg) 
AttributeError: 'module' object has no attribute 'connectedComponents' 

我FO

http://docs.opencv.org/trunk/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=connected

我的問題是,是有它的實現另一個名字,或不使用Python都存在:存在於OpenCV中的C++庫中的函數UND?如果不是,我該如何解決這個錯誤?

編輯:我使用的OpenCV 2.4.9

回答

12

對於任何搜索這一點,答案是我的OpenCV 2.9從Sourceforge,但我需要從他們的回購3.0版本上的git此功能工作。

+2

你的opencv仍然像cv2一樣行事?或需要使用cv3? – user391339

+3

有沒有一種方法可以和2.9一起使用,以實現相同的目標?我不想花一個下午的時間設置3.0來完成一個嘖嘖... – kuanb

相關問題