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++接口差别(入门篇)的更多相关文章

  1. 【Go语言】面向对象扩展——接口

    简单地说 Interface是一组Method的组合,可以通过Interface来定义对象的一组行为.如果某个对象实现了某个接口的所有方法,就表示它实现了该借口,无需显式地在该类型上添加接口说明. I ...

  2. 初识 go 语言:方法,接口及并发

    目录 方法,接口及并发 方法 接口 并发 信道 结束语 前言: go语言的第四篇文章,主要讲述go语言中的方法,包括指针,结构体,数组,切片,映射,函数闭包等,每个都提供了示例,可直接运行. 方法,接 ...

  3. Go语言规格说明书 之 接口类型(Interface types)

    go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,介绍Go语言的  ...

  4. Go语言学习笔记(9)——接口类型

    接口 Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口. /* 定义接口 */ type interface_name in ...

  5. Go 语言接口及使用接口实现链表插入

    @ 目录 1. 接口定义 1.1 空接口 1.2 实现单一接口 1.3 接口多方法实现 2. 多态 2.1 为不同数据类型的实体提供统一的接口 2.2 多接口的实现 3. 系统接口调用 4. 接口嵌套 ...

  6. Go语言_方法和接口

    方法和接口 本节课包含了方法和接口,可以用这种构造来定义对象及其行为. Go 作者组编写,Go-zh 小组翻译. https://tour.go-zh.org/methods/1 方法 Go 没有类. ...

  7. 转载-- http接口、api接口、RPC接口、RMI、webservice、Restful等概念

     http接口.api接口.RPC接口.RMI.webservice.Restful等概念 收藏 Linux一叶 https://my.oschina.net/heavenly/blog/499661 ...

  8. Java对象克隆(Clone)及Cloneable接口、Serializable接口的深入探讨

    Java对象克隆(Clone)及Cloneable接口.Serializable接口的深入探讨 Part I 没啥好说的,直接开始Part II吧. Part II 谈到了对象的克隆,就不得不说为什么 ...

  9. “全栈2019”Java第八十八章:接口中嵌套接口的应用场景

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

随机推荐

  1. 51nod 1265 四点共面【计算几何+线性代数】

    1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共 ...

  2. Linux环境安装python3

    linux 安装Python3 1.python下载 请在终端输入如下命令: cd /home wget http://cdn.npm.taobao.org/dist/python/3.6.5/Pyt ...

  3. hihocoder1062 最近公共祖先·一

    #1062 : 最近公共祖先·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho最近发现了一个神奇的网站!虽然还不够像58同城那样神奇,但这个网站仍然让小Ho乐在 ...

  4. ASP.NET Core 2.2 基础知识(十一) ASP.NET Core 模块

    ASP.NET Core 应用与进程内的 HTTP 服务器实现一起运行.该服务器实现侦听 HTTP 请求,并在一系列请求功能被写到 HttpContext 时,将这些请求展现到应用中. ASP.NET ...

  5. 带WHERE子句的UPDATE语句

    目前演示的几个UPDATE语句都是一次性更新所有行的数据,这无法满足只更新符合特定条件的行的需求,比如“将Tom 的年龄修改为12 岁”.要实现这样的功能只要使用WHERE 子句就可以了,在WHERE ...

  6. SSH框架的简单含义

    典型的J2EE三层结构,分为表现层.中间层(业务逻辑层)和数据服务层.三层体系将业务规则.数据访问及合法性校验等工作放在中间层处理.客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与 ...

  7. [BZOJ3205][APIO2013]Robot(斯坦纳树)

    3205: [Apio2013]机器人 Time Limit: 15 Sec  Memory Limit: 128 MBSubmit: 1007  Solved: 240[Submit][Status ...

  8. codeforces 314E Sereja and Squares

    discription Sereja painted n points on the plane, point number i (1 ≤ i ≤ n) has coordinates (i, 0). ...

  9. IO 流(File)

    1.创建文件 package com.ic.demo01; import java.io.File; import java.io.IOException; public class FileDemo ...

  10. nginx+php简单配置环境

    首先我的需求是: 1. 需要有PHP的服务.web目录存放在各处. 2. 需要有多个端口. 步骤: 1. 安装nginx php,我的系统是mac 所以安装使用brew, 一键完成... 2. 开启p ...