zoukankan      html  css  js  c++  java
  • 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++接口。




  • 相关阅读:
    【Quartz】工作原理
    【Quartz】基本原理
    【Quartz】一个小Demo
    【转载】基于Redis实现分布式锁
    【转载】Java 9 新特性——模块化
    【转载】一致性哈希
    大型网站架构演进
    分布式系统概述
    加入tkmybatis,进行批量插入
    mysql,SqlServer批量插入
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6753853.html
Copyright © 2011-2022 走看看