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