Assertion failed (_tvec.getMat().isContinuous() && _rvec.getMat().isContinuous()) in projectPoints

在鱼眼相机标定项目中遇到OpenCV的projectPoints函数报错,错误信息为_Assertion failed (_tvec.getMat().isContinuous() && _rvec.getMat().isContinuous())_。问题根源可能在于rvec和tvec矩阵在声明时分配了过多内存,但在projectPoints调用中被截取,导致内存不连续。解决方案包括在声明时指定为vec类型或在使用前创建新的Mat并复制数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

最近在对鱼眼相机标定,只标外参,然后计算重投影误差。

问题描述:

使用projectPoints函数时一直报错,OpenCV Error: Assertion failed (_tvec.getMat().isContinuous() && _rvec.getMat().isContinuous()) in projectPoints,相关报错在网上没有找到,这里记录一下

int main(){
   
    vector<Point2f> corners; // the detected corners
    vector<Point3d> obj_temp;// real objects' point in one image
    cv::Mat intrinsics, distCoeffs;//input your intrinsics coefficients
    cv::Mat rvec, tvec;
//    Vec3d rvec, tvec;
    Mat img1 = imread("C:/Clion Projects/fisheye_calibration-master/test_image/2pattern25_12_9/test/1.jpg",1); //source image
    bool patternfound = findChessboardCorners(img1, patternsize, corners,CALIB_CB_ADAPTIVE_THRESH | CALIB_CB_FAST_CHECK | CALIB_CB_NORMALIZE_IMAGE);
    Mat gray;
    cvtColor(img1, gray, CV_BGR2GRAY);
    if(patternfound){
   
        // detect subpixel corner , cornerSubPix只接收单通道图像
        cornerSubPix(gray, corners, Size(11, 11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值