Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing OpenCV:立体声校正问题(使用本书中的示例代码)_Image Processing_Opencv_Stereo 3d - Fatal编程技术网

Image processing OpenCV:立体声校正问题(使用本书中的示例代码)

Image processing OpenCV:立体声校正问题(使用本书中的示例代码),image-processing,opencv,stereo-3d,Image Processing,Opencv,Stereo 3d,所以我对OpenCV有问题。我使用了《学习OpenCV》一书中的示例代码。我得到了计算两个摄像机的所有内部和外部的代码,但是当我重新映射图像时,我得到的只是一个空白图像。我使用了两台相机的6幅图像,带有一个9x6的棋盘。输入文件交替使用左右图像(lr=i%2使我认为…) 下面是我的代码。最后我只添加了cvRemap()函数 \undf\u GLIBCXX\u调试 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 使用名称空间std; // //给定棋盘图像列表,角数(nx,

所以我对OpenCV有问题。我使用了《学习OpenCV》一书中的示例代码。我得到了计算两个摄像机的所有内部和外部的代码,但是当我重新映射图像时,我得到的只是一个空白图像。我使用了两台相机的6幅图像,带有一个9x6的棋盘。输入文件交替使用左右图像(lr=i%2使我认为…)

下面是我的代码。最后我只添加了cvRemap()函数

\undf\u GLIBCXX\u调试
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
//
//给定棋盘图像列表,角数(nx,ny)
//在棋盘上,有一个标志:使用校准(0)或
//未校准(1:使用cvStereoCalibrate(),2:计算基础
//(矩阵)立体声。校准摄像头并显示屏幕
//校正结果和计算的视差图像。
//
静态空隙
StereoCalib(常量字符*图像列表,整数未校准)
{
IplImage*L_img1=cvLoadImage(“bad1.bmp”);
IplImage*R_img1=cvLoadImage(“good1.bmp”);
IplImage*固定=cvCloneImage(L\u img1);
IplImage*固定=cvCloneImage(R\u img1);
CvRect roi1,roi2;
int nx=0,ny=0;
int=1;
int未失真=1;
bool isVerticalStereo=false;//OpenCV可以处理左右方向
//或上下摄像机布置
常量int maxScale=1;
const float squareSize=1.f;//将其设置为实际的平方大小
文件*f=fopen(图像列表,“rt”);
inti,j,lr,nframes=0,n,n=0;
向量图像名称[2];
矢量目标点;
向量点[2];
向量温度点[2];
向量n点;
//向量活性[2];
int是[2]={0,0};
向量温度;
CvSize imageSize={0,0};
//阵列和矢量存储:
双M1[3][3]、M2[3][3]、D1[5]、D2[5];
双R[3][3]、T[3]、E[3][3]、F[3][3];
双Q[4][4];
CvMat _M1=CvMat(3,3,CV_64F,M1);
CvMat _M2=CvMat(3,3,CV_64F,M2);
CvMat _D1=CvMat(1,5,CV_64F,D1);
CvMat _D2=CvMat(1,5,CV_64F,D2);
CvMat _R=CvMat(3,3,CV_64F,R);
CvMat _T=CvMat(3,1,CV_64F,T);
CvMat _E=CvMat(3,3,CV_64F,E);
CvMat _F=CvMat(3,3,CV_64F,F);
CvMat _Q=CvMat(4,4,CV_64FC1,Q);
char-buf[1024];
如果(显示角)
CVD(“角落”,1);
//在棋盘列表中阅读:
如果(!f)
{
fprintf(stderr,“无法打开文件%s\n”,imageList);
睡眠(2000年);
返回;
}
如果(!fgets(buf,sizeof(buf)-3,f)| sscanf(buf,“%d%d”、&nx,&ny)!=2)
返回;
n=nx*ny;
温度调整(n);
温度点[0]。调整大小(n);
温度点[1]。调整大小(n);
对于(i=0;i++)
{
整数计数=0,结果=0;
lr=i%2;
向量&pts=temp_points[lr];//points[lr];
如果(!fgets(buf,sizeof(buf)-3,f))
打破
尺寸长度=标准长度(buf);
而(len>0&&isspace(buf[len-1]))
buf[--len]='\0';
if(buf[0]='#')
继续;
IplImage*img=cvLoadImage(buf,0);
如果(!img)
打破
imageSize=cvGetSize(img);
imageNames[lr]。推回(buf);
//在其中查找棋盘和角:
对于(int s=1;s1)
{
timg=cvCreateImage(
cvSize(内径->宽度*s,内径->高度*s),
img->深度,img->n通道
);
cvResize(img、timg、CV_INTER_CUBIC);
}
结果=cvFindChessboardCorners(
timg,cvSize(纽约州纽约州纽约市),
&温度[0],&计数,
CV_校准_CB_自适应_阈值|
CV_校准_CB_标准化_图像
);
如果(timg!=img)
cvReleaseImage(&timg);
如果(结果| | s==maxScale)
对于(j=0;j0?1:0;
//断言(结果!=0);
如果(结果)
{
//如果没有亚像素插值,校准将受到影响
cvFindCornerSubPix(
img,&temp[0],计数,
cvSize(11,11),cvSize(-1,-1),
cvterm标准(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,30,0.01)
);
复制(临时开始(),临时结束(),临时开始());
}
cvReleaseImage(&img);
if(lr)
{
如果(找到[0]==1&&is\u-found[1]==1)
{
断言(临时点[0].size()==临时点[1].size());
int current_size=点[0]。大小();
点[0]。调整大小(当前大小+临时点[0]。大小(),cvPoint2D32f(0.0,0.0));
点[1]。调整大小(当前大小+临时点[1]。大小(),cvPoint2D32f(0.0,0.0));
    R: !!opencv-matrix
       rows: 3
       cols: 3
       dt: d
       data: [ 9.9997887582765532e-001, 4.2746998112201760e-003,
   -4.8964109286960510e-003, -4.1317666335754111e-003,
   9.9957553950354616e-001, 2.8838677686057253e-002,
   5.0176092857428471e-003, -2.8817837665560161e-002,
   9.9957208635962669e-001 ]
    T: !!opencv-matrix
       rows: 3
       cols: 1
       dt: d
       data: [ -8.3141294302865210e-001, -3.2181226087457654e-001,
   -4.5924165239318537e-001 ]
    R1: !!opencv-matrix
       rows: 3
       cols: 3
       dt: d
       data: [ 8.3000228682826938e-001, 3.1110786082949388e-001,
   4.6293423160308594e-001, -3.1818678207964091e-001,
   9.4578880995670123e-001, -6.5120647036789381e-002,
   -4.5809756119155060e-001, -9.3249267508025396e-002,
   8.8399728423766677e-001 ]
    R2: !!opencv-matrix
       rows: 3
       cols: 3
       dt: d
       data: [ 8.2904793019998391e-001, 3.2089684317297251e-001,
   4.5793530708249980e-001, -3.1381823995200708e-001,
   9.4482404014772625e-001, -9.3944906367255512e-002,
   -4.6281491084940990e-001, -6.5823621903907531e-002,
   8.8400769741835628e-001 ]
    P1: !!opencv-matrix
       rows: 3
       cols: 4
       dt: d
       data: [ -4.4953673002726404e+001, 0., -1.3375267505645752e+001, 0.,
   0., -4.4953673002726404e+001, 2.4430860614776611e+002, 0., 0., 0.,
   1., 0. ]
    P2: !!opencv-matrix
       rows: 3
       cols: 4
       dt: d
       data: [ -4.4953673002726404e+001, 0., -1.3375267505645752e+001,
   4.5081911684079330e+001, 0., -4.4953673002726404e+001,
   2.4430860614776611e+002, 0., 0., 0., 1., 0. ]
    M1: !!opencv-matrix
       rows: 3
       cols: 3
       dt: d
       data: [ 4.3107336978610317e+002, 0., 3.4686501809547735e+002, 0.,
   4.3107336978610317e+002, 1.9221944996848421e+002, 0., 0., 1. ]
    D1: !!opencv-matrix
       rows: 1
       cols: 5
       dt: d
       data: [ -1.6825480517169825e-001, 1.0756945282000266e-001, 0., 0., 0. ]
    M2: !!opencv-matrix
       rows: 3
       cols: 3
       dt: d
       data: [ 4.3107336978610317e+002, 0., 3.5310162800332756e+002, 0.,
           4.3107336978610317e+002, 1.8963116073129768e+002, 0., 0., 1. ]
    D2: !!opencv-matrix
       rows: 1
       cols: 5
       dt: d
       data: [ -1.9546177300030809e-001, 1.7624631189915094e-001, 0., 0., 0. ]