在OpenCV中以PLY格式计算三维模型上的ORB描述符的问题 我的任务是用C++将摄像机的图像登记到场景的点云。 我的直觉是计算相机图像和场景点云上的ORB描述符,这样我就可以通过它们获得点对应关系,并应用SolvePnP函数来估计相机姿势。 我跟在后面。我以PLY格式将场景的点云加载到cv::Mat,并尝试在其上计算ORB描述符。结果Mat对象具有单个通道。这是我的密码: Mat scene_mat = loadPLYSimple("a_cloud.ply", 1); vector<KeyPoint> kp1, kp2; Mat des1, des2; Ptr<Feature2D> orb = ORB::create(); orb->detectAndCompute(scene_mat, Mat(), kp2, des2); Mat scene\u Mat=loadPLYSimple(“a_cloud.ply”,1); 向量kp1,kp2; Mat des1、des2; Ptr orb=orb::create(); orb->detectAndCompute(场景_mat,mat(),kp2,des2);

在OpenCV中以PLY格式计算三维模型上的ORB描述符的问题 我的任务是用C++将摄像机的图像登记到场景的点云。 我的直觉是计算相机图像和场景点云上的ORB描述符,这样我就可以通过它们获得点对应关系,并应用SolvePnP函数来估计相机姿势。 我跟在后面。我以PLY格式将场景的点云加载到cv::Mat,并尝试在其上计算ORB描述符。结果Mat对象具有单个通道。这是我的密码: Mat scene_mat = loadPLYSimple("a_cloud.ply", 1); vector<KeyPoint> kp1, kp2; Mat des1, des2; Ptr<Feature2D> orb = ORB::create(); orb->detectAndCompute(scene_mat, Mat(), kp2, des2); Mat scene\u Mat=loadPLYSimple(“a_cloud.ply”,1); 向量kp1,kp2; Mat des1、des2; Ptr orb=orb::create(); orb->detectAndCompute(场景_mat,mat(),kp2,des2);,c++,opencv,mesh,3d-reconstruction,C++,Opencv,Mesh,3d Reconstruction,当运行此代码时,我得到一个错误 OpenCV错误:cvtColor中的断言失败(scn==3 | | scn==4), 文件/home/vladimir/opencv/modules/imgproc/src/color.cpp,第7564行 在引发“cv::Exception”的实例后调用terminate 这个代码有什么问题?这是计算点云上ORB描述符的正确方法吗?除非您在某处调用了cvtcolor。然后我会假设CVT颜色位于计算机内部。意味着输入场景不是他们期望的CV_8UC3。Cout S

当运行此代码时,我得到一个错误

OpenCV错误:cvtColor中的断言失败(scn==3 | | scn==4), 文件/home/vladimir/opencv/modules/imgproc/src/color.cpp,第7564行 在引发“cv::Exception”的实例后调用terminate


这个代码有什么问题?这是计算点云上ORB描述符的正确方法吗?

除非您在某处调用了cvtcolor。然后我会假设CVT颜色位于计算机内部。意味着输入场景不是他们期望的CV_8UC3。Cout Scene_mat.channels进行更多调试infomation@DrYuanShenghai谢谢你的回复。库特