2011-12-03 19 views
5

CheckContour() işlevini yeni python api (cv2) 'de kullanmayı denerim ve do bulContours kullanarak denetlenecek konturlar oluşturursam çalışır. ((-215) contour.checkVector (2)> = 0 & &: başıma kontur oluştururkenPython kullanarak opencv'de kontur alanını denetleme

contours, hierarchy = cv2.findContours(imgGray, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) 
cv2.contourArea(contours[0]) 

ancak aşağıdaki kod

contour = numpy.array([[0,0], [10,0], [10,10], [5,4]]) 
area = cv2.contourArea(contour) 

ve getiri "hatası çalışmıyor fonksiyon contourArea" in contour.depth() == CV_32F || contour.depth() == CV_32S)

Ben

contour = numpy.array([[0,0], [10,0], [10,10], [5,4]], dtype=numpy.int32) 
için değiştirdiğinizde

aldığım "hatası: (-210) matris için işlev cvPointSeqFromMat uygun olmayan eleman türü dizisini işaret dönüştürülemez"

belgelerine C++ aşağıdaki kodu nasıl yapılır

vector<Point> contour; 
contour.push_back(Point2f(0, 0)); 
contour.push_back(Point2f(10, 0)); 
contour.push_back(Point2f(10, 10)); 
contour.push_back(Point2f(5, 4)); 

double area0 = contourArea(contour); 

en son python API'sinde (2.3) çalışıyor mu?

cevap

10

Bu seferki çalışması gerekir:

contour = numpy.array([[[0,0]], [[10,0]], [[10,10]], [[5,4]]]) 
area = cv2.contourArea(contour)