Opencv 如何获得精确的深度图? 使用名称空间std; 使用名称空间cv; int main(int argc,字符**argv) { 长lframecount=0; //加载视频 视频捕获捕获1(argv[1]); 视频捕获捕获2(argv[2]); 我建议你使用这个函数
但是首先:你校准过你的相机吗?Opencv 如何获得精确的深度图? 使用名称空间std; 使用名称空间cv; int main(int argc,字符**argv) { 长lframecount=0; //加载视频 视频捕获捕获1(argv[1]); 视频捕获捕获2(argv[2]); 我建议你使用这个函数,opencv,image-processing,Opencv,Image Processing,但是首先:你校准过你的相机吗? 也许您应该查看有关如何使用OpenCv校准相机的教程,以及关于如何计算深度贴图(也称为视差贴图)的教程.请发布您的图像。我无法发布我的图像。如何做???将其放在其他服务器上,并在那里发布一个指向它的链接。请参见此答案:无需校准,我们也可以正确地进行图像校正??我使用surf功能获得基本矩阵,然后找到校正后的图像。现在我正在尝试获取视差图。我使用cvB: Fig StudioRealdBasm BM,但我不能得到正确的结果。图像中有很多噪音。在拍摄图像时有没有考虑?
也许您应该查看有关如何使用OpenCv校准相机的教程,以及关于如何计算深度贴图(也称为视差贴图)的教程.请发布您的图像。我无法发布我的图像。如何做???将其放在其他服务器上,并在那里发布一个指向它的链接。请参见此答案:无需校准,我们也可以正确地进行图像校正??我使用surf功能获得基本矩阵,然后找到校正后的图像。现在我正在尝试获取视差图。我使用cvB: Fig StudioRealdBasm BM,但我不能得到正确的结果。图像中有很多噪音。在拍摄图像时有没有考虑?/你是用立体视觉来校正一个图像吗?如果是的话,也许你应该考虑修改你的问题并包括确切的问题。
using namespace std;
using namespace cv;
int main(int argc, char**argv)
{
long lframecount=0;
//load the videos
VideoCapture capture1(argv[1]);
VideoCapture capture2(argv[2]);
cout << argv[1] << endl;
cout << argv[2] << endl;
if(!capture1.isOpened()||!capture2.isOpened())
{
cout<<"cant load stereo video";
return -1;
}
Mat frame1,frame2;
capture1>> frame1;
capture2>> frame2;
long framecount1= capture1.get(CV_CAP_PROP_FRAME_COUNT);
long framecount2= capture2.get(CV_CAP_PROP_FRAME_COUNT);
namedWindow("depthmap",cv::WINDOW_NORMAL);
cv::Mat disp;
cv::Mat vdisp;
for(long i=1;i<5;i++)
{
lframecount++;
int number=lframecount;
string frame;
std::ostringstream convert;
convert<<number;
frame = convert.str();
//cout<<lframecount<<"\n";
capture1 >> frame1;
capture2 >> frame2;
cv::StereoVar stereo;
stereo.minDisp=-80;
stereo.maxDisp=80;
stereo(frame1,frame2,disp);
double min, max;
minMaxLoc(disp, &min, &max);
disp.convertTo(vdisp, CV_8U, -255.0/max, 255);
std::cout<<"framecount :"<< frame<<std::endl;
imshow("depthmap",vdisp);
waitKey(30);
write << vdisp;
//waitKey(30);
//if(waitKey(0))
//break;
}
write.release();
cv::destroyAllWindows();
return 0;
}