[英]tracking boundary using opencv
我正在嘗試從以下二進制圖像中順序跟蹤/跟蹤邊界點:
我正在使用OpenCV(python)。 我正在使用三種方式:
誰能幫我解決OpenCV輪廓的問題嗎? 為什么它沒有追蹤完整的邊界。 我正在檢測輪廓,如下所示:
contours, hierarchy = cv2.findContours(thresh1,cv2.RETR_TREE ,cv2.CHAIN_APPROX_SIMPLE)
thresh1是二進制映像
給定您簡單的輪廓,由於不確定嵌套輪廓,因此我不確定您為什么要使用RETR_TREE。 您是否嘗試過使用RETR_EXTERNAL?
從OpenCV文檔:
CV_RETR_TREE檢索所有輪廓,並重建嵌套輪廓的完整層次。
CV_RETR_EXTERNAL僅檢索極端的外部輪廓。
另外,請注意CHAIN_APPROX_SIMPLE 不會枚舉邊界上的所有點,而是會嘗試簡化輪廓,特別是它不會返回多個連續的水平,垂直或對角點。 如果需要所有點,請使用CV_CHAIN_APPROX_NONE,這將強制輪廓算法找到所有邊界點。
CV_CHAIN_APPROX_SIMPLE壓縮水平,垂直和對角線段,僅保留其端點。 例如,一個直立的矩形輪廓編碼有4個點。
CV_CHAIN_APPROX_NONE絕對存儲所有輪廓點。
以下代碼在您的圖像上起作用,並找到132點:
// Load original image as grey scale
Mat image = imread("imagename.png", IMREAD_GRAYSCALE);
vector<vector<Point>> contours;
Mat hierarchy;
findContours(image, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);
將CV_CHAIN_APPROX_SIMPLE交換為CV_CHAIN_APPROX_NONE會導致返回一個輪廓,並返回737點。
您尚未包括代碼的完整上下文,但是請注意,findContours確實會修改源圖像,因此,如果您使用同一源圖像連續進行多個調用,則可能需要注意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.