opencv的C语言接口和C++接口差别(入门篇)
opencv是一个开源的图像处理库,最经典的1.0版本号提供的接口都是C语言接口。
后来的opencv2.x版本号保留了C语言接口,可是提供了C++接口,当中的C语言接口仅仅是为了向后兼容,而C++接口才是大势所趋。
那么这两者有什么差别呢?今天介绍一下配置过程中的差别。
以opencv2.3.0和vs2008为例。配置时。先要配置包括文件和库文件,然后在系统变量path中加入dll文件。最后再项目属性中加入附加依赖库。我平时用的功能不多。一般加入这几项opencv_core230.lib。opencv_highgui230.lib。opencv_imgproc230.lib,opencv_video230.lib。须要说明的是,我使用的是C语言接口。什么是C语言接口,举个样例。读取视频文件的小程序。
#include <opencv2/opencv.hpp>
#include <iostream> using namespace std; int main()
{
CvCapture *pCapture=NULL;
pCapture=cvCreateFileCapture("50254000.avi");
IplImage *pFrame=NULL;
cvNamedWindow("sor",0);
while (pFrame = cvQueryFrame(pCapture))
{
cvShowImage("sor",pFrame);
cvWaitKey(10);
}
return 0;
}
请原谅我没有释放pCapture和显示窗体。反正呢,这里用到的opencv函数。就是C语言接口。
今天突发奇想,想要用C++接口写个程序,结果碰到了问题。我还是照曾经的方法进行配置。
代码例如以下:
#include <opencv2/opencv.hpp>
#include <iostream> using namespace std;
using namespace cv; int main()
{
VideoCapture capture("2014y12m17d08h21f58sYI.avi");
if (!capture.isOpened())
{
cout << "fail to open the vedio" << endl;
return 1;
}
Mat frame;
namedWindow("test",0);
while (capture.read(frame))
{
imshow("test",frame);
if (waitKey(10) == 27)
{
return 0;
} }
return 0;
}
相同是读取一段视频的程序,编译能通过,可是执行到第一句就出错。后来发现,是由于C语言接口和C++接口所用的库文件是不一样的。因此配置的时候。在项目属性的附加依赖性里应该换成这几项:opencv_core230d.lib,opencv_highgui230d.lib。opencv_imgproc230d.lib,opencv_video230d.lib,这样以后。执行正常。
当然,这仅仅是两者在配置时候的一点小小的差别,如今opencv的C++接口提供了很多其它更先进的算法,而且向比C语言接口改动了一些bug,因此在使用opencv的过程中。应该多用C++接口。
opencv的C语言接口和C++接口差别(入门篇)的更多相关文章
- 【Go语言】面向对象扩展——接口
简单地说 Interface是一组Method的组合,可以通过Interface来定义对象的一组行为.如果某个对象实现了某个接口的所有方法,就表示它实现了该借口,无需显式地在该类型上添加接口说明. I ...
- 初识 go 语言:方法,接口及并发
目录 方法,接口及并发 方法 接口 并发 信道 结束语 前言: go语言的第四篇文章,主要讲述go语言中的方法,包括指针,结构体,数组,切片,映射,函数闭包等,每个都提供了示例,可直接运行. 方法,接 ...
- Go语言规格说明书 之 接口类型(Interface types)
go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,介绍Go语言的 ...
- Go语言学习笔记(9)——接口类型
接口 Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口. /* 定义接口 */ type interface_name in ...
- Go 语言接口及使用接口实现链表插入
@ 目录 1. 接口定义 1.1 空接口 1.2 实现单一接口 1.3 接口多方法实现 2. 多态 2.1 为不同数据类型的实体提供统一的接口 2.2 多接口的实现 3. 系统接口调用 4. 接口嵌套 ...
- Go语言_方法和接口
方法和接口 本节课包含了方法和接口,可以用这种构造来定义对象及其行为. Go 作者组编写,Go-zh 小组翻译. https://tour.go-zh.org/methods/1 方法 Go 没有类. ...
- 转载-- http接口、api接口、RPC接口、RMI、webservice、Restful等概念
http接口.api接口.RPC接口.RMI.webservice.Restful等概念 收藏 Linux一叶 https://my.oschina.net/heavenly/blog/499661 ...
- Java对象克隆(Clone)及Cloneable接口、Serializable接口的深入探讨
Java对象克隆(Clone)及Cloneable接口.Serializable接口的深入探讨 Part I 没啥好说的,直接开始Part II吧. Part II 谈到了对象的克隆,就不得不说为什么 ...
- “全栈2019”Java第八十八章:接口中嵌套接口的应用场景
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
随机推荐
- Git命令使用指南
继续git相关的东西,网上很多讲解的,但是还是喜欢这个图:(爱屋及乌,当然内容也很好,文章链接:http://me.iblogc.com/2015/01/16/Git命令使用指南/) Git是软件开发 ...
- 洛谷 P1577 切绳子【二分答案】
题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位. 输入输出格式 输入格式: 第一行两个整数N和K,接下来N行,描 ...
- AMQ学习笔记 - 03. 消息的接收方式
概述 消息有两种接收方式:同步接收和异步接收. 同步接收:主线程阻塞式等待下一个消息的到来,可以设置timeout,超时则返回null. 异步接收:主线程设置MessageListener,然后继续做 ...
- POJ2032 Building a Space Station(Kruskal)(并查集)
Building a Space Station Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 7469 Accepte ...
- sed 很棒的介绍
选项与参数:-n :使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作) ...
- 和java面试不得不说的故事
一直都没有想到,可以有机会可以面试他人,很感谢现在的公司,给我不少的机会可以尝试从不同方面尝试一些工作,在入职现公司之前也作为面试者参加过不少面试,不过还好,面试通过率都还好,大部分是待遇谈不拢.现在 ...
- [BZOJ 2208] 连通数
Link: BZOJ 2208 连通数 Solution: 传递闭包模板题 传递闭包是集合中最小的二元关系,其实就是对二元关系的不断拓展,一般用$floyd$求解 这里要先跑一遍$tarjan$求出$ ...
- [BZOJ 3144] 切糕
Link: BZOJ 3144 传送门 Solution: 发现要把点集分成不连通的两部分,最小割的模型还是很明显的 首先我们将原图转化为$R+1$层,从而将点权化为边权 关键还是在于建图是怎么保证$ ...
- Codeforces 785E Anton and Permutation(分块)
[题目链接] http://codeforces.com/contest/785/problem/E [题目大意] 一个1到n顺序排列的数列,每次选择两个位置的数进行交换,求交换后的数列的逆序对数 [ ...
- iOS开发-设置在使用NavigateController时View的顶部位置
最近我在开发中遇到了一个问题,在使用NavigationController时内部的ViewController的View总是与屏幕顶部对齐,而我们有时候不需要这种效果: 在开发过程中,我们可能会 ...