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++接口。

时间: 2024-12-25 10:08:25

opencv的C语言接口和C++接口差别(入门篇)的相关文章

opencv的C语言接口和C++接口区别(入门篇)

opencv是一个开源的图像处理库,最经典的1.0版本提供的接口都是C语言接口.后来的opencv2.x版本保留了C语言接口,但是提供了C++接口,其中的C语言接口只是为了向后兼容,而C++接口才是大势所趋.那么这两者有什么区别呢?今天介绍一下配置过程中的区别. 以opencv2.3.0和vs2008为例,配置时,先要配置包含文件和库文件,然后在系统变量path中添加dll文件,最后再项目属性中添加附加依赖库.我平时用的功能不多,一般添加这几项opencv_core230.lib,opencv_

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

目录 方法,接口及并发 方法 接口 并发 信道 结束语 前言: go语言的第四篇文章,主要讲述go语言中的方法,包括指针,结构体,数组,切片,映射,函数闭包等,每个都提供了示例,可直接运行. 方法,接口及并发 方法 方法就是一类带特殊的接收者(struct)参数的函数 通过 结构体.方法 调用 示例: type city struct { name, address string } func (c city) sysCity() { c.name = "帝都" fmt.Println

go语言碎片整理之接口

接口 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节. 接口类型 在Go语言中接口(interface)是一种类型,是一种抽象的类型.interface是一组method的集合,是duck-type programming的一种体现.接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机.不关心属性(数据),只关心行为(方法).为了保护你的Go语言职业生涯,请牢记接口(interface)是一种类型. 为什么

Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇

Javascript面向对象特性实现(封装.继承.接口) Javascript作为弱类型语言,和Java.php等服务端脚本语言相比,拥有极强的灵活性.对于小型的web需求,在编写javascript时,可以选择面向过程的方式编程,显得高效:但在实际工作中,遇到的项目需求和框架较大的情况下,选择面向对象的方式编程显得尤其重要,Javascript原生语法中没有提供表述面向对象语言特性的关键字和语法(如extends.implement).为了实现这些面向对象的特性,需要额外编写一些代码,如下.

Java基础之集合框架(Collection接口和List接口)

首先我们说说集合有什么作用. 一.集合的作用 1.在类的内部,对数据进行组织: 2.简单而快速的搜索大数量的条目: 3.有的集合接口,提供一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素: 例如:做广播操的时候,可以将学生插入到某排某列,反之也可以叫某排某列中的学生出列. 4.有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型. 例如:在吃饭的时候,众多铝饭盒中如何区别是自己的呢?在饭盒上刻独有的标志或贴纸条,这个标志和

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

http接口.api接口.RPC接口.RMI.webservice.Restful等概念 收藏 Linux一叶 https://my.oschina.net/heavenly/blog/499661 发表于 1年前 阅读 1422 收藏 28 点赞 0 评论 0 摘要: 在这之前一定要好好理解一下接口的含义,我觉得在这一类中接口理解成规则很恰当 在这之前一定要好好理解一下接口的含义,我觉得在这一类中接口理解成规则很恰当.         http接口:基于HTTP协议的开发接口.这个并不能排除没

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

Java对象克隆(Clone)及Cloneable接口.Serializable接口的深入探讨 Part I 没啥好说的,直接开始Part II吧. Part II 谈到了对象的克隆,就不得不说为什么要对对象进行克隆.Java中所有的对象都是保存在堆中,而堆是供全局共享的.也就是说,如果同一个Java程序的不同方法,只要能拿到某个对象的引用,引用者就可以随意的修改对象的内部数据(前提是这个对象的内部数据通过get/set方法曝露出来).有的时候,我们编写的代码想让调用者只获得该对象的一个拷贝(也

http接口、api接口、RPC接口、RMI、webservice、Restful等概念

在这之前一定要好好理解一下接口的含义,我觉得在这一类中接口理解成规则很恰当.         http接口:基于HTTP协议的开发接口.这个并不能排除没有使用其他的协议.         api接口:API(Application Programming Interface)应用程序编程接口,应用也包括网络应用程序,就像api文档基本上就是使用说明书,API接口可以简单理解成"应用程序使用接口".          RPC接口:Remote Procedure Calls 远程过程调用

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

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第八十八章:接口中嵌套接口的应用场景 下一章 "全栈2019"Java第八十九章:接口中能定义内部类吗? 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习