opengcv+opengl配置

这一周似乎都在配置环境,安卓,opencv+QT,opencv+vs,接着就是今天的opencv+opengl了,根据网上的介绍,也结合自己的实际操作来记录一下,还是挺曲折的,但是实际是很简单的。

1.有的VS没有gl,比如我的,不知为什么,我用的vs10,所以先安装了opengl

http://jingyan.baidu.com/article/b0b63dbfd1c08f4a4830703e.html,这里有教材很简单,比配置opencv简单多了。


2.编译WITH_OPENGL的opencv,这个和正常一样,用cmake编译,第一次配置时选择vs10编译,第二次配置时把WITH_OPENGL勾上后配置,之后生成,接着打开OpenCV.sln

按F5编译(release和Debug下都编译一下),之后得到一个在OpenCV.sln的同级目录下把bin和lib文件夹单独复制到一个新的文件中比如newopencv


3.把opencv安装包解压里面build里面的include文件夹复制到newopencv中,这样newopencv包含:bin,lib,include三个文件夹,bin和lib里面又分别各有Debug和Release文件夹,为了不麻烦,我直接就用Release里面的了,也就是

在环境变量Path里面添加:E:\newopencv\bin\Release

在vs工程配置里面,也就是VC++目录---》库目录添加:E:\newopencv\lib\Release


4.输入---》添加依赖项:E:\newopencv\lib\Release里面所有的lib文件名

5.把所有的E:\newopencv\bin\Release里面的dll文件复制到system32里面

6.VS配置中VC++---》包含的库目录中添加E:\newopencv\inlude;E:\newopencv\inlude\opencv;E:\newopencv\inlude\opencv2;

7.完成


注意:

1.电脑可能需要重启才行

2.头文件可能需要添加#include<windows.h>,网上很多都是在编译时opencv时添加进去了

3.cmake配置时可能需要联网下载东西,我之前没注意一直失败,后来看了cmake的输出文字才发现,后来联网后就可以了

4.个人猜测cmake配置时勾选的WITH_GL,WITH_NI等等肯能是需要先有这些东西否则可能配置失败。


测试代码:

#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/core/core.hpp>
#include<windows.h>
#include<iostream>
#include <gl/glu.h>
using namespace std;
using namespace cv;

void onDraw(void* param)  
{  
	
    // Draw something using OpenGL here
	glClear(GL_COLOR_BUFFER_BIT) ;
    glColor3f(1.0, 1.0, 1.0) ; 
    glPointSize(5.0f);
    glBegin(GL_POINTS);//必须是加上s,要不然显示不了
//for(int i=0,j=0;i<10;i++,j++)
//glVertex2f((GLfloat)i,(GLfloat)j);
   float start=0.0f;
   for(int i=0;i<30;i++)
   {
	start+=0.01;
	glVertex2f(start,start);
   }
   glEnd();
   glFlush() ;
   
}  
int main()
{
	Mat mat=imread("1.jpg");
	imshow("1",mat);
	
	string openGLWindowName = "OpenGL Test";  
    namedWindow(openGLWindowName, WINDOW_OPENGL);  
    resizeWindow(openGLWindowName, 640, 480);  
    setOpenGlContext(openGLWindowName);  
    setOpenGlDrawCallback(openGLWindowName, onDraw, NULL);  
  
    updateWindow(openGLWindowName); // when needed  

	waitKey(0);
	return 0;
}


你可能感兴趣的:(opengcv+opengl配置)