如何使用iPhone在照片中找到矩形?

| 我需要从iPhone拍摄的照片中识别,旋转和裁剪矩形(名片)。我相信可以通过使用OpenCV来完成,但是我以前从未使用过。有人可以给一些提示吗?     
已邀请:
参见opencv示例代码
OpenCV2.2\\samples\\cpp\\squares.cpp
。他们执行以下操作: 使用Canny检测边缘 用
findContours
检索轮廓 对于每个轮廓 使用
approxPolyDP
近似轮廓以减少顶点数量 如果轮廓具有4个顶点,并且每个角度均为〜90度,则产生一个矩形     
从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核心映像高级知识》第514节中的更多信息。 来自shinobicontrols.com的示例     
要开始使用,您应该查看OpenCV的功能检测API。特别
cv::Canny
(用于边缘检测), 也许
cv::cornerHarris
(用于拐角检测), 和
cv::HoughLines
(用于在边缘图像中查找直线)。 高温超导     
根据不同的观点,该卡最终可能不是矩形,而是更多的梯形。您可以在OpenCV中使用HoughLines2识别图像中的边缘,并尝试识别最有可能是名片边缘的4条边缘。     
如果知道矩形的大约高度和宽度,则可以执行以下步骤: 对象检测:使用轮廓跟踪标记组件。 在标记所有对象之后,然后通过计算矩形的周长来过滤检测到的组件。 P = 2 *(高+宽) 大小小于或大于P的任何分量都将被忽略,仅保留尺寸更接近P的分量。 从轮廓点找到矩形的角点。 从原始图像中提取矩形。 以上所有步骤都可以使用OpenCV或Aforge.Net来完成,我亲自使用Aforge.Net来完成。     
我认为
goodFeaturesToTrack()
更易于用于Harris-Corner检测。
CornerHarris()
需要将输出图像设置为特定类型。     

要回复问题请先登录注册