opencv读取鱼眼双目图像并校正+保存为左右视图

来源:互联网 发布:便宜php空间 编辑:程序博客网 时间:2024/06/04 00:46
#include"stdafx.h"
#include <iostream>  
#include <cv.h>  
#include <cxcore.h>  
#include <highgui.h>  
using namespace cv;
using namespace std;
void main()
{
VideoCapture capture(0);
capture.set(CV_CAP_PROP_FRAME_WIDTH, 1280);
capture.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
if (!capture.isOpened())
{
return;
}


Mat frame;
Mat frame_L, frame_R;
char imgL[64];
char imgR[64];
int i = 0;
Mat rmap[2][2];
FileStorage fs("remap.yml", CV_STORAGE_READ);
if (fs.isOpened())
{
fs["MapLx"] >> rmap[0][0];
fs["MapLy"] >> rmap[0][1];
fs["MapRx"] >> rmap[1][0];
fs["MapRy"] >> rmap[1][1];
fs.release();
}
else
cout << "Error: can not save the intrinsic parameters\n";
char key = ' ';
while (key!='q')
{
//读取下一帧
/*if (!capture.read(frame))
{
cout << "读取视频失败" << endl;
return;
}*/
capture>>frame;
cout << frame.cols << "======" << frame.rows << endl;
frame_L = frame.rowRange(0, 480).colRange(0, 640);
frame_R = frame.rowRange(0, 480).colRange(640, 1280);
remap(frame_L, frame_L, rmap[0][0], rmap[0][1], CV_INTER_LINEAR);
remap(frame_R, frame_R, rmap[1][0], rmap[1][1], CV_INTER_LINEAR);
sprintf(imgL,"D:\\image\\L%d.pgm", i);
sprintf(imgR,"D:\\image\\R%d.pgm", i);
imwrite(imgL, frame_L);
imwrite(imgR, frame_R);
i += 1;
imshow("L", frame);  
imshow("R", frame_R);
waitKey(100);
}
}
1 0
原创粉丝点击