OPENCV3.0+VS2013配置问题+cmake配置

来源:互联网 发布:json格式怎么打开mac 编辑:程序博客网 时间:2024/05/17 04:41

主要是针对自己opencv配置过程做了记录,解决了一些配置的问题。

在codeblock和VS2013上配置了opencv,并进行了摄像头程序的测试。

主要配置方式与网上其他相同

下载opencv(官网http://opencv.org/)(这里使用opencv2.4.9)解压。

简单介绍一下配置运行库,看不懂就百度吧。

主要是环境变量添加  opencv/build/x86/vc12/bin  (32位,vs2013)

工程属性添加 运行库 bin (同上),include(opencv/build/include),lib目录(opencv/build/x86/vc12/lib

然后添加依赖库,就是lib文件

然后配置完成。(codeblock基本所有都是这么配置的,include目录,bin目录,lib目录,lib文件)

balalala。。。。。

遇到的问题 

1、lib目录只添加一个,动态链接用lib,静态链接用staticlib,不要同时添加,搜索会出错,网上很多都说这个,导致编译通不过,坑爹。因为这两个文件下有同名lib,搜索会出错的。

2、lib文件添加的时候注意debug和release模式分开,我似乎自动添加了,不过还是说明一下。

3、有人指出出现error  runtime问题要修改release和debug中属性->c/c++->代码生成中改runtime library中的选项,不过我是第一个问题解决后,就没出现过

————————————————————————

补充说明

1、vs中读取文件的当前目录是跟cpp文件相同的,如果直接放工程文件下会出错,比如imread,imshow出问题

2、codeblock的mingw可能无法使用c++接口,只能使用c接口,因为编译器问题,而vs相应的版本对应相应的编译器。主要要是编译器与opencv版本对应,最好使用借助cmake用codeblock中的mingw去编译opencv中的source文件,这样生成的文件就完美兼容了大笑,解决方法参见 http://blog.csdn.net/goomaple/article/details/45649305



更新内容 2016

利用cmake自己编译生成opencv3.0,基本步骤就是选取cmake的src和build文件,需要注意的是cmake选项,比如果你的编译器与cuda库不匹配(vs2015+cuda7.5不匹配),就会导致生成失败,还有python库注意一下。

之后生成生成release版本和debug版本即可,需要注意的是cmake中有一个选项叫opencv_world,选了这个就只有一个dll,现在一般推荐点上这个就不用一一引入了。

opencv3.0很强大,也可以关注一下github上opencv_contribute的内容,有一些比较有意思的开源未授权算法



最后贴一段代码,摄像头捕捉,做了一个简单的边缘提取

#include "stdafx.h"#include <iostream>#include <stdio.h>#include "opencv2/opencv.hpp"int _tmain(int argc, _TCHAR* argv[]){cvNamedWindow("Video", CV_WINDOW_AUTOSIZE);cvNamedWindow("Canny", CV_WINDOW_AUTOSIZE);CvCapture *capture = cvCreateCameraCapture(0);//摄像头,下面一个是读视频//CvCapture *capture = cvCreateFileCapture("test.wmv");IplImage *frame;IplImage *frame_gray;IplImage *frame_canny;while (1){frame = cvQueryFrame(capture);if (!frame)continue;//这里没用,如果为break,由于摄像头初始化还没数据就跳出循环,如果做判定,建议写在前面frame_gray = cvCreateImage(cvGetSize(frame), IPL_DEPTH_8U, 1);frame_canny = cvCreateImage(cvGetSize(frame), IPL_DEPTH_8U, 1);cvConvertImage(frame, frame_gray, 0);cvCanny(frame_gray, frame_canny, 10, 100, 3);cvShowImage("Video", frame);cvShowImage("Canny", frame_canny);char c = cvWaitKey(33);if (c == 27){break;}}cvReleaseCapture(&capture);cvDestroyAllWindows();return 0;}


1 0
原创粉丝点击