VS+Opencv 新库导入过程(以AVS视频解码库导入为例)
来源:互联网 发布:淘宝首页模板怎么制作 编辑:程序博客网 时间:2024/06/06 01:35
环境:VS2010+opencv2410
这里只要VS与Opencv能配置起来就行,在Opencv配置VS的时候,不是所有opencv版本与所有vs版本都能配置成功的。安装好Opencv之后,在安装目录下的opencv/build/x86(这个是跟你电脑系统版本有关的,如果你的电脑是64位的,就该选择x86,同理,32位的该选x64),在这个文件夹里,找与你vs匹配的文件,比如:vc10—>vs2010, vc11—>vs2012, vc12—>vs2103,这里在配置环境变量的时候,一定不能搞错,不要抱侥幸心理,在安装的opencv文件的没有找到对应vs的版本,就随便凑合选择一个vc文件,这样安装好后,你会发现你的opencv库是没用的!!
假如,现在环境已经搭好了,接下来进入正题。
一 新库导入步骤:
(1)新建一个项目,将要导入的库文件放在与该项目同目录的文件夹中。比如:
我新建了一个AVS1的项目,则在我vs的projects中就会自动生成一个AVS1文件,该文件里面就有存储所有新建项目的相关内容。此时,将要导入的新库文件全部放在一个文件夹中,放在此目录下,我都放在了ku文件中了。
此外还要将库文件的.lib文件放在另一个文件中,我放在了Dubug文件中了。
(2)配置项目属性,将新库文件加载到你的项目中。
①将你新库文件路径添加到附加包含目录中。
②将新库的.lib文件路径添加到附加库目录中。
③将新库的.lib文件添加到附加依赖项中。
(3)将头文件与源文件都添加进来。
(4)将新库导进来,编写程序,实现功能。
#include "stdafx.h"#include "VideoCaptureBase.h"#include "AVSVideoCapture.h"#include <iostream>#include <fstream>#include <string>#include "highgui.h"using namespace cv;using namespace std;int main(){ AVSVideoCapture capture; VideoCaptureBase* videoCapture=&capture; if (-1 == videoCapture->open(("C:/Users/jia/Desktop/1.avs"))) { //cout << "Can not open video: " << path << endl; return -1; } int frame=0; namedWindow("show"); while(1) { cv::Mat oneFrame; std::cout<<frame<<endl; if(videoCapture->getNextFrame(oneFrame)==-1) break; cv::imshow("show",oneFrame); cvWaitKey(1); frame++; } //return 1; capture.close(); destroyWindow("show"); return 1;}
二 新库导入过程中的坑,以及解决:
(1)fatal error C1010: 在查找预编译头时遇到意外的文件结尾,是否忘记了向源中添加“#include “StdAfx.h””?如下图所示:
而此时,你在头文件中明明已经添加了#include “StdAfx.h”(最好放在第一位)。
Solve:设置新加的库的.cpp文件属性中的预编译头。将使用(/Yu)改为不使用预编译头。
因为,一般新加的库.cpp文件中,并不是由#include “StdAfx.h”当开头的头文件,所以,这种情况下,就应当将预编译头设置成不使用,不然就会与使用预编译头文件为#include “StdAfx.h”冲突,以致报错。
(2)error LNK2019: 无法解析的外部符号_avsGetCaptureProperty,该符号在函数”public: virtual int __thiscall AVSVideoCapture::open(class std::basic_string…) 中被调用
如下图所示:
Solve:这种情况生成的原因有多种,得因情况而定。这里我就只分析我遇到的这一种。根据报错,很容易理解,这是因为变量在未声称前被调用的情况。然后根据报错,找到报错的函数,以及对应函数报错的变量,选中该变量,右击选择转到定义,如果能转过去就不会报错了。
而这里报错的这四个变量,是因为这四个变量在C文件中声明过,而现在用在了C++文件中,所以,不能直接用int avsCreateCapture()调用,要写成extern “C” int avsCreateCapture(),所以,这里的C文件,需要放到与库文件一个目录下,在我这也就是要放在ku文件夹中,然后需要加载到头文件中,才能起作用。
(3)fatal error C1853: “°Debug\AVS1.pch”预编译头文件来自编译器的早期版本,或者预编译头为C++而在C中使用(或相反)。
Solve:解决方法与(1)一样,新添加的C文件的预编译有也要设置为不使用(换言之,只要是预编译头不是#include “StdAfx.h”的,都要设置成不使用)。
- VS+Opencv 新库导入过程(以AVS视频解码库导入为例)
- pydev导入扩展模块出现红叉 (以opencv为例)
- Android Studio导入JAR包(以ButterKnife为例)
- sqlldr导入数据(以PostgreSql--->Oracle为例)
- Compass中导入插件(以Normalize为例)
- 导入模块,以模块math为例
- 以OpenCV库为例讲解如何在VS中配置第三方动态库
- 大数据量高效导入数据库(以excel导入sqlserver为例)
- 大数据量高效导入数据库(以excel导入sqlserver为例)
- vs编译库 导入库
- [Android]Android Studio导入第三方工程库,以PullToRefreshViewLibrary为例
- android studio导入第三方库(以SlidingMenu、xUtils为例)
- Android Studio 第三方库的导入「以 Volley 为例」
- vs配置各种库(以opencv3.1为例)
- mex如何调用外部库(以OpenCV为例)
- ]如何在myeclipse中导入jar包?(以导入mysql-connector-java-5.1.29-bin.jar)为例
- Android studio导入第三方项目(以Volley为例)
- zabbix导入模版_以nginx为例
- 3D游戏社区内双人交互实现
- 一阶段-FifteenthWork-3-HashMap对象
- 一阶段-SeventeenWork-3-用户和密码信息保存到test.txt文件中
- Android圆形按钮,点击可以变色
- 1030. 完美数列(25)
- VS+Opencv 新库导入过程(以AVS视频解码库导入为例)
- RIP理论知识梳理
- 一阶段-SeventeenWork-4-读取txt文件
- arxiv每周速报第二期
- 一阶段-SixteenthWork-读写文件
- 一阶段-TwelveThWork-2-随机整数
- 一阶段-TwelveThWork-1-回文串
- 4种黑帽SEO手法
- 一阶段-fourteenWork-4-Calendar类