我有一個使用單個數值構建的元組元組
maxcontour = ( (minx,miny),(maxx,miny),(maxx,maxy),(minx,maxy) )
并且確實是一個元組
print (maxcontour)
((374, 0), (2553, 0), (2553, 3999), (374, 3999))
但是在需要元組的地方使用它時
cv2.polylines(img, maxcontour, True, (0,0,255), 5 )
我收到這個錯誤
錯誤:OpenCV(4.5.3):-1:錯誤:(-5:錯誤引數)函式“折線”多載決議失敗:
- pts 不是數字元組
- 引數“pts”的預期 Ptr<cv::UMat>
我顯然忽略了一些非常基本的東西,但我看不到什么;錯誤訊息“Expected Ptrcv::UMat for argument 'pts'”沒有多大幫助。
創建有效的“數字元組”的方法是cv.polylines()什么?
uj5u.com熱心網友回復:
正如@Nathaniel Ford 所說,這些點必須是一個 numpy 陣列
要繪制多邊形,首先需要頂點坐標。將這些點變成一個形狀為 ROWSx1x2 的陣列,其中 ROWS 是頂點數,它的型別應該是 int32。
所以
maxcontour = np.array( [[minx,miny],[maxx,miny],[maxx,maxy],[minx,maxy]],np.int32)
maxcontour = maxcontour.reshape((-1,1,2))
cv2.polylines(img, [maxcontour], True, (0,0,255))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/313204.html
上一篇:使用二進制掩碼裁剪影像時出錯
