Emgucv 使用EMGU获取;“真实世界”;像素值的坐标

Emgucv 使用EMGU获取;“真实世界”;像素值的坐标,emgucv,Emgucv,在EMGU(OpenCV)中,有许多校准教程用于校准棋盘的相机图像。它们最终都会对图像进行校准,然后再对图像进行去失真显示。这很酷,但我需要做机器视觉,在那里我拍摄图像,识别图像中的角点、斑点或特征的位置,然后将该特征的位置(以像素为单位)转换为真实世界的X、Y坐标 像素->毫米 EMGU有可能做到这一点吗?如果是,怎么做?我不愿意花大量时间学习EMGU,然后就不能完成这个关键功能。是的,这当然有可能成为OpenCV的“面包和黄油” 在消除失真方面,您描述的校准是此过程的先决条件。在此之后,以下

在EMGU(OpenCV)中,有许多校准教程用于校准棋盘的相机图像。它们最终都会对图像进行校准,然后再对图像进行去失真显示。这很酷,但我需要做机器视觉,在那里我拍摄图像,识别图像中的角点、斑点或特征的位置,然后将该特征的位置(以像素为单位)转换为真实世界的X、Y坐标

像素->毫米


EMGU有可能做到这一点吗?如果是,怎么做?我不愿意花大量时间学习EMGU,然后就不能完成这个关键功能。

是的,这当然有可能成为OpenCV的“面包和黄油”

在消除失真方面,您描述的校准是此过程的先决条件。在此之后,以下内容适用:

固有校准或“摄像机矩阵”是两个必需矩阵中的第一个。第二个是摄像机的外部校准,它本质上是6自由度变换,描述了传感器中心相对于坐标参考框架的物理位置

Emgu.CV中的一个函数提供了所有失真系数、内部和外部校准:我相信,您所描述的众多教程中的一个可以很好地解释这个过程

之后,就可以简单地应用上面的变换并从2D像素位置生成3D坐标


成功做到这一点的关键在于提供全面的
IInputArray对象点
IInputArray图像点
CvInvoke.calibleCamera
。一定要从多个不同的角度使用许多图像来引起“兴奋”。

感谢您的清晰详细的解释。听起来CvInvolk.ProjectPoints完全符合我的需要,只要我进行校准。完美的确实如此:)好的校准可能是一件痛苦的事情,但一旦完成,它就完成了。如果您有任何问题,请告诉我,并请不要忘记投票:P