2011-12-03 71 views
5

Tôi cố gắng sử dụng hàm checkContour() trong api python mới (cv2) và nó do hoạt động nếu tôi tạo đường viền để kiểm tra bằng cách sử dụng findContours ví dụ:Kiểm tra vùng đường viền trong opencv bằng python

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

tuy nhiên khi tôi tạo đường viền trên của riêng tôi đoạn mã sau không làm việc

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

và lợi nhuận "lỗi: (-215) contour.checkVector (2)> = 0 & & (contour.depth() == CV_32F || contour.depth() == CV_32S) trong chức năng contourArea"

khi tôi thay đổi để

contour = numpy.array([[0,0], [10,0], [10,10], [5,4]], dtype=numpy.int32) 
.210

tôi đã "lỗi: (-210) Ma trận có thể không được chuyển đổi sang chỉ tự vì loại yếu tố không phù hợp trong chức năng cvPointSeqFromMat"

Làm thế nào để làm cho đoạn mã sau trong C++ từ tài liệu

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); 

hoạt động trong API python mới nhất (2.3)?

Trả lời

10

Điều này phải hoạt động:

contour = numpy.array([[[0,0]], [[10,0]], [[10,10]], [[5,4]]]) 
area = cv2.contourArea(contour) 
Các vấn đề liên quan