对于一个应用程序,我有一个想法,该应用程序在每个角上都带有四个正方形的打印页面,并且如果可见至少两个正方形,则可以让您测量纸张上的对象。我希望能够让用户从不完美的角度拍摄照片,同时仍然能够准确地测量物体。
由于我对该领域缺乏知识,因此我无法确切地找到如何找到有关此主题的信息。我已经能够找到进行一些有趣的转换之类的opencv代码示例,但是我还没有弄清楚我要问的问题。
有人知道我可以查找的论文或数学概念以进一步深入该项目吗?
除了在这个论坛上的其他人之外,我不太确定如何或向谁问其他问题。
答案 0 :(得分:2)
您描述的内容非常让人联想到增强现实标记跟踪。也许您可以从您选择的搜索引擎中搜索这些单词开始。
如果正确完成,则可以使用单个标记进行识别,而不会与其他标记混淆。 AND 可以确定如何将表面放置在相机前面的3D空间中。
但这都是非常困难和高级的内容,我强烈建议不要尝试实现类似的东西,这需要多年的研究...唯一的方法是使用现成的开源库输出您的应用所需的数据。
它甚至可能不存在。在这种情况下,您将必须购买一个。考虑到您问题的根源,这是完全合理的。
答案 1 :(得分:1)
在这里,我仅向您提供编程方面的信息,如果您愿意,您可以从这些示例中找到有关数学方面的信息。您需要的大多数功能都可以使用OpenCV完成。这是python中的一些示例:
要检测打印的纸张,可以使用cv2.findContours
功能。最外面的轮廓可能是纸张,但是您需要对实际图像进行测试。 https://docs.opencv.org/3.1.0/d4/d73/tutorial_py_contours_begin.html
如果倾斜(不是完美的角度),则可以通过cv2.minAreaRect
找到该角度,该角度返回您在上面找到的轮廓的角度。 https://docs.opencv.org/3.1.0/dd/d49/tutorial_py_contour_features.html(第7b部分)。
如果要旋转纸张,请使用cv2.warpAffine
。 https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_geometric_transformations/py_geometric_transformations.html
要检测纸张中的物体,有一些方法。最简单的方法是使用上面的轮廓。如果对象具有某些颜色,则可以使用滤色器对其进行检测。 https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_colorspaces/py_colorspaces.html