我得到一個帶有對象和旋轉矩形的二進制圖像,在cv2.findContours
和cv2.minAreaRect
中找到。圖像被標準化爲[0; 1] 在邊界矩形內計算非零區域的最有效方法是什麼?在區域旋轉矩形中計算非零像素
1
A
回答
2
- 創建新的零值有原始圖像的大小相同墊。
- 在(fillConvexPoly中使用RotatedRect頂點)在其上繪製旋轉的矩形。
- Bitwise_and與你原來的面具
- 這個圖像應用findnonzero功能結果圖像
。您也可申請在圖像的ROI前面的步驟,因爲你有你的旋轉矩形的邊框。
2
據,私自Helfawi的答案,我調整了一下建議的步驟,所以下面的代碼似乎在做什麼,我需要:
rectangles = [(cv2.minAreaRect(cnt)) for cnt in contours]
for rect in rectangles:
rect = cv2.boxPoints(rect)
rect = np.int0(rect)
coords = cv2.boundingRect(rect)
rect[:,0] = rect[:,0] - coords[0]
rect[:,1] = rect[:,1] - coords[1]
area = cv2.contourArea(rect)
zeros = np.zeros((coords[3], coords[2]), np.uint8)
cv2.fillConvexPoly(zeros, rect, 255)
im = greyscale[coords[1]:coords[1]+coords[3],
coords[0]:coords[0]+coords[2]]
print(np.sum(cv2.bitwise_and(zeros,im))/255)
1
contours
是一個點的列表。您可以使用cv2.fillConvexPoly
在相同尺寸的空白二進制圖像上填充此形狀,然後使用cv2.countNonZero
或numpy.count_nonzero
來獲取佔用像素的數量。
相關問題
- 1. Opencv:旋轉矩形的感興趣區域之外的零像素?
- 2. 旋轉矩形時計算角度
- 3. 計算旋轉矩形的頂點
- 4. 旋轉矩形和計算角
- 5. Custon UISlider非矩形區域
- 6. 畫布像矩形輪旋轉矩形
- 7. 約計與旋轉矩形
- 8. Android Opencv計算矩形內旋轉圖像的大小
- 9. 計算旋轉矩陣
- 10. 如何從.NET中的矩形源區域複製到非矩形/非並行區域目標區域?
- 11. 在lwuit中旋轉非方形圖像
- 12. 在Java中旋轉矩形
- 13. 旋轉矩形?
- 14. 從圖像中提取一個矩形像素區域
- 15. 旋轉多邊形計算
- 16. 圓形區域中的旋轉文字
- 17. 計算多邊形區域
- 18. 多邊形區域計算
- 19. 如何用不相交的旋轉矩形填充矩形區域?
- 20. 如何從圓形區域計算矩形topx,topy,bottomx,bottomy android
- 21. 對非矩形圖像區域使用滑動圖像
- 22. 識別圖像中的矩形區域
- 23. 如何在特定區域找到非零像素Mat
- 24. OpenGL 2D非矩形區域剪輯
- 25. 非矩形「可點擊」區域
- 26. 計算數組矩形區域中的數值總和
- 27. 如何計算並在矩形區域上放置圓圈?
- 28. 旋轉的2D矩形的交叉點或區域
- 29. 如何計算像素區域的Windows區域(HRGN)?
- 30. 如何提取視頻的矩形和非矩形區域?
如果您需要更高的性能,請調整drawContours代碼來計算像素而不是繪圖。 – Micka