【问题标题】:Crop image based on largest quadrilateral contour OpenCV基于最大四边形轮廓OpenCV的裁剪图像
【发布时间】:2014-04-24 19:29:44
【问题描述】:

我正在上高中,我正在做一个项目来构建一个 iOS 应用程序,让用户扫描名片,目前我正在研究名片上的边缘检测。我相信我的工作正常,它正在绘制卡片的轮廓和其他一些阴影等。

这是我在扫描时返回的示例图像,我可能应该转换为灰度,我也会这样做。

如何找到最大的四边形并将图像裁剪为仅包含卡片?我所有的轮廓都存储在vector<vector<cv::Point> > 中,绿线似乎是我感兴趣的。

【问题讨论】:

    标签: c++ ios opencv


    【解决方案1】:

    要找到最大的四边形,您可以遍历所有四边形并检查它们的尺寸/面积。

    可以使用 find findHomographywarpPerspective 完成投影。您将需要四边形的四个角点和重投影中的四个对应点(即图像的角点)。

    【讨论】:

      【解决方案2】:

      这并不能直接回答这个问题,但在 python 中,要找到最大的轮廓,你会这样做:

      contours, hierarchy = cv2.findContours(image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
      contours.sort(key=cv2.contourArea, reverse=True)
      

      cv2.contourArea 是一个计算轮廓面积的 lambda reverse=True:降序(最大在前)

      那么contours的第0个元素就是最大的contours。绘制:

      cv2.drawContours(image, contours, 0, (255, 0, 0), 2)
      

      【讨论】:

      • 谢谢。我不知道这种方法,对我的问题很有帮助。
      猜你喜欢
      • 1970-01-01
      • 2016-10-21
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 2021-07-12
      • 1970-01-01
      相关资源
      最近更新 更多