我在高中,我正在開發一個項目,以構建一個可讓用戶掃描名片的iOS應用程序,目前我正在開發卡上的邊緣檢測。我相信我的工作正常,它正在繪製卡的輪廓和其他一些陰影等。基於最大四邊形輪廓的裁剪圖像OpenCV
這裏是我掃描時得到的示例圖像,我應該可以轉換爲灰度,我也會這樣做。
我怎樣才能找到最大的四邊形和裁剪我的形象,只包括卡?我所有的輪廓都存儲在一個vector<vector<cv::Point> >
綠線似乎是一個我很感興趣的
我在高中,我正在開發一個項目,以構建一個可讓用戶掃描名片的iOS應用程序,目前我正在開發卡上的邊緣檢測。我相信我的工作正常,它正在繪製卡的輪廓和其他一些陰影等。基於最大四邊形輪廓的裁剪圖像OpenCV
這裏是我掃描時得到的示例圖像,我應該可以轉換爲灰度,我也會這樣做。
我怎樣才能找到最大的四邊形和裁剪我的形象,只包括卡?我所有的輪廓都存儲在一個vector<vector<cv::Point> >
綠線似乎是一個我很感興趣的
要找到你可以只遍歷所有,並檢查它們的尺寸最大的四邊形/區。
該投影可以通過查找findHomography
和warpPerspective
完成。您將需要四邊形的四個角點和再投影中的四個對應點(即圖像的角落)。
這並不直接回答這個問題,但是在Python,找到最大的輪廓,你會做這樣的事情:
contours, hierarchy = cv2.findContours(image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
contours.sort(key=cv2.contourArea, reverse=True)
cv2.contourArea是計算輪廓 地區的拉姆達reverse = True:降序(最大的第一個)
那麼等高線的第0個元素就是最大的等高線。借鑑:
cv2.drawContours(image, contours, 0, (255, 0, 0), 2)
感謝您的支持。我沒有意識到這種方法,對我的問題會很有幫助。 –