- 1
- 0
- 约2.06千字
- 约 6页
- 2019-01-11 发布于广东
- 举报
计算机视觉第二次作业
左图像:
右图像:
视差算法(GC算法):
#include highgui.h
#include cv.h
#include cxcore.h
#include iostream
using namespace std;
using namespace cv;
#include opencv2/opencv.hpp
#include opencv2/imgproc/imgproc.hpp
#include opencv2/core/core.hpp
#include opencv2/highgui/highgui.hpp
#include opencv2/calib3d/calib3d.hpp
#include opencv2/features2d/features2d.hpp
#include opencv2/legacy/legacy.hpp
int main()
{
//IplImage * img1 = cvLoadImage(left.png,0);
//IplImage * img2 = cvLoadImage(right.png,0);
//IplImage * img1 = cvLoadImage(tsukuba_l.png,0);
//IplImage * img2 = cvLoadImage(tsukuba_r.png,0);
IplImage * img1 = cvLoadImage(left.png,0);
IplImage * img2 = cvLoadImage(right.png,0);
CvStereoGCState* GCState=cvCreateStereoGCState(64,3);
assert(GCState);
coutstart matching using GCendl;
CvMat* gcdispleft=cvCreateMat(img1-height,img1-width,CV_16S);
CvMat* gcdispright=cvCreateMat(img2-height,img2-width,CV_16S);
CvMat* gcvdisp=cvCreateMat(img1-height,img1-width,CV_8U);
int64 t=getTickCount();
cvFindStereoCorrespondenceGC(img1,img2,gcdispleft,gcdispright,GCState);
t=getTickCount()-t;
coutTime elapsed:t*1000/getTickFrequency()endl;
//cvNormalize(gcdispleft,gcvdisp,0,255,CV_MINMAX);
//cvSaveImage(GC_left_disparity.png,gcvdisp);
cvNormalize(gcdispright,gcvdisp,0,255,CV_MINMAX);
cvSaveImage(GC_right_disparity.png,gcvdisp);
cvNamedWindow(GC_disparity,0);
cvShowImage(GC_disparity,gcvdisp);
cvWaitKey(0);
cvReleaseMat(gcdispleft);
cvReleaseMat(gcdispright);
cvReleaseMat(gcvdisp);
return 0;}
编译环境:
Ubuntu 14.04
Opencv 2.4.8
Cmake 2.8.3
具体流程:
第一步:新建一个homework目录
第二步:将左右两图像放入该目录下,并且在该目录下新建两个文档,分别命名为GC.cpp和CMakeLists.txt。
第三步:在GC.cpp文档中写入上面GC算法的代码。
第四步:在CMakeLists.txt中写入以下代码:
cmake_minimum_required(VERSION 2.8)
project(homework)
find_package( OpenCV REQUIRED)
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( homework GC.cpp )
target_link_libraries(homework ${OpenCV_LIBS} )
第五步:执行cmake .
第六步:执行make,生成homework可执行文件
第七步:运行homework
最后得到视差图:
原创力文档

文档评论(0)