Tôi đang cố vẽ một đa giác bằng giao diện python tới opencv, cv2. Tôi đã tạo ra một hình ảnh trống, chỉ là một mảng numpy 640x480. Tôi có một danh sách các đa giác (bốn điểm tứ giác) mà tôi muốn vẽ trên hình ảnh, tuy nhiên, tôi dường như không thể định dạng đúng hướng dẫn cv2 nơi tứ giác nên và tôi vẫn gặp lỗi này:Giao diện python để opencv2.fillPoly muốn làm đầu vào là gì?
OpenCV Error: Assertion failed (points.checkVector(2, CV_32S) >= 0) in fillConvexPoly, file .../OpenCV-2.4.0/modules/core/src/drawing.cpp, line 2017
mã của tôi bao gồm chủ yếu như sau:
binary_image = np.zeros(image.shape,dtype='int8')
for rect in expected:
print(np.array(rect['boundary']))
cv2.fillConvexPoly(binary_image, np.array(rect['boundary']), 255)
fig = pyplot.figure(figsize=(16, 14))
ax = fig.add_subplot(111)
ax.imshow(binary_image)
pyplot.show()
nơi danh sách của tôi dễ phân biệt trong dự kiến có 'ranh giới' chứa giá trị của một danh sách (x, y) điểm. Mã in:
[[ 91 233]
[419 227]
[410 324]
[ 94 349]]
Tôi nhận thấy đây là danh sách điểm cho đa giác, nhưng dường như danh sách đó có giá trị points.checkvector
không hợp lệ, bất kể đó là gì. Tìm kiếm trên google cho lỗi đó không có gì hữu ích.
Tôi đã thử cả hai cv2.fillPoly và cv2.fillConvexPoly đây, và cả hai ném lỗi tương tự ... – DaveA
lưu ý, OpenCV muốn 'uint8' cho hình ảnh. Trong khi tôi xuất hiện để có thể nhận được ngay với 'int8' ở đây, nó gây ra rắc rối cho tôi sau này ... – DaveA