我可以在 OpenCV 中使用重映射获取点位置吗
Can I get the point position using remap in OpenCV
我用 RGB 相机拍摄了一张照片 A
。而且我知道照片 A
中一个点 g
的位置。相机需要进行相机校准。现在我想知道校准后点 g
的位置。我正在使用如下代码,但我想获取点位置,而不是图像。我怎样才能做到这一点?你能给我一些建议吗?
initUndistortRectifyMap(
cameraMatrix,
distCoeffs,
Mat(),
Mat(),
Size(640, 480),
CV_32FC1,
map1, map2);
remap(A, B, map1, map2, cv::INTER_LINEAR);
Point2f g = Point2f(...,...);//i want to get the new position of the point not image B
只需使用地图获取坐标:
x,y - 之后(不是之前)的坐标,正如 pasbi 在评论、映射中正确注意到的那样。
(map1(y,x),map2(y,x)) - 映射前的坐标
换句话说:
map1.at<float>(y,x)
包含每个目标点的源 x 坐标
p(x,y).
map2.at<float>(y,x)
包含每个目标点的源 y 坐标
p(x,y).
请参阅有关 remap 函数的文档。
我发现的最佳方法是重新创建一个具有倒置参数的相机矩阵。在一定程度上工作,具有类似的基本图像修改
我用 RGB 相机拍摄了一张照片 A
。而且我知道照片 A
中一个点 g
的位置。相机需要进行相机校准。现在我想知道校准后点 g
的位置。我正在使用如下代码,但我想获取点位置,而不是图像。我怎样才能做到这一点?你能给我一些建议吗?
initUndistortRectifyMap(
cameraMatrix,
distCoeffs,
Mat(),
Mat(),
Size(640, 480),
CV_32FC1,
map1, map2);
remap(A, B, map1, map2, cv::INTER_LINEAR);
Point2f g = Point2f(...,...);//i want to get the new position of the point not image B
只需使用地图获取坐标:
x,y - 之后(不是之前)的坐标,正如 pasbi 在评论、映射中正确注意到的那样。
(map1(y,x),map2(y,x)) - 映射前的坐标
换句话说:
map1.at<float>(y,x)
包含每个目标点的源 x 坐标 p(x,y).map2.at<float>(y,x)
包含每个目标点的源 y 坐标 p(x,y).
请参阅有关 remap 函数的文档。
我发现的最佳方法是重新创建一个具有倒置参数的相机矩阵。在一定程度上工作,具有类似的基本图像修改