gpt4 book ai didi

c++ - OpenCV:projectPoints 可以返回负值吗?

转载 作者:太空宇宙 更新时间:2023-11-03 23:01:04 32 4
gpt4 key购买 nike

我正在使用 cv::projectPoints 获取 3D 点 vector 的相应像素。

这些点都离得很近。

问题是,对于某些点,我得到了正确的像素坐标,但对于其他点,我得到了奇怪的负值,例如 -22599...

cv::projectPoints 返回负值是正常的还是我的代码中存在错误?

void SingleCameraTriangulator::projectPointsToImage2(const std::vector< cv::Vec3d >& pointsGroup, const double scale, std::vector< Pixel >& pixels)
{
cv::Vec3d
t2, r2;

decomposeTransformation(*g_12_, r2, t2);

cv::Mat imagePoints2;

cv::projectPoints(pointsGroup, r2, t2, *camera_matrix_, *distortion_coefficients_, imagePoints2);

for (std::size_t i = 0; i < imagePoints2.rows; i++)
{
cv::Vec2d pixel = imagePoints2.at<cv::Vec2d>(i);
Pixel p;
p.x_ = pixel[0];
p.y_ = pixel[1];
if ( (p.x_ < 0) || (p.x_ > ((1 / scale) * img_1_->cols)) || (p.y_ < 0) || (p.y_ > ((1/scale) * img_1_->rows)))
{
cv::Vec3d point = pointsGroup[i];
std::cout << point << " - " << pixel << " - " << pixel*scale << "problema" << std::endl;
}
p.i_ = getBilinearInterpPix32f(*img_2_, scale * p.x_, scale * p.y_);

pixels.push_back(p);
}
}

预先感谢您提出任何建议。

最佳答案

reprojectImageTo3D(你用它来获取 3D 点吗?)为离群点提供大的 z 坐标 (10000),所以我认为你的问题就在这里。

关于c++ - OpenCV:projectPoints 可以返回负值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18193398/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com