这一周似乎都在配置环境,安卓,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;
}