[英]How do I find a rectangle in a photo using iphone?
我需要從 iPhone 拍攝的照片中識別、旋轉和裁剪矩形(名片)。 我相信這可以通過使用 OpenCV 來完成,但我之前沒有使用過。 任何人都可以提供一些提示嗎?
從iOS 8 開始,您現在可以使用返回CIRectangleFeature 的新檢測器 CIDetectorTypeRectangle 。 您可以添加選項:
縱橫比:例如,如果您只想找到正方形,則為 1.0
CIImage *image = // your image NSDictionary *options = @{CIDetectorAccuracy: CIDetectorAccuracyHigh, CIDetectorAspectRatio: @(1.0)}; CIDetector *rectangleDetector = [CIDetector detectorOfType:CIDetectorTypeRectangle context:nil options:options]; NSArray *rectangleFeatures = [rectangleDetector featuresInImage:image]; for (CIRectangleFeature *rectangleFeature in rectangleFeatures) { CGPoint topLeft = rectangleFeature.topLeft; CGPoint topRight = rectangleFeature.topRight; CGPoint bottomLeft = rectangleFeature.bottomLeft; CGPoint bottomRight = rectangleFeature.bottomRight; }
更多信息請參閱WWDC 2014核心映像進展,Session 514。
請參閱 opencv 示例代碼OpenCV2.2\samples\cpp\squares.cpp
。 他們執行以下操作:
使用 Canny 檢測邊緣
通過findContours
檢索輪廓
對於每個輪廓
使用approxPolyDP
近似輪廓以減少頂點數
如果輪廓有 4 個頂點並且每個角度約為 90 度,則生成一個矩形
為了讓您開始,您應該查看 OpenCV 的特征檢測api。 尤其
cv::Canny
(用於邊緣檢測),cv::cornerHarris
(用於角點檢測),cv::HoughLines
(用於在邊緣圖像中查找直線)。HTH
根據視點的不同,卡片最終可能不是矩形,而是更多的梯形。 您可以使用OpenCV中的 HoughLines2 來識別圖像中的邊緣,並嘗試識別最有可能是名片邊緣的 4 條邊緣。
如果您知道矩形的大致高度和寬度,則可以執行以下步驟:
上述所有步驟都可以使用 OpenCV 或 Aforge.Net 完成,我個人使用 Aforge.Net 完成。
我認為goodFeaturesToTrack()
更容易用於 Harris-Corner 檢測。 CornerHarris()
需要將輸出圖像設置為特定類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.