首页 > 代码库 > vs2015下通过opencv使用hdf5

vs2015下通过opencv使用hdf5

因为使用Kinect SDK编程,又需求高速文件I/O,所以通过opencv接口使用hdf5。

(opencv 3.1以上版本,在其Extra Modules中支持hdf5)


 

一、 环境

OS: Windows 10

IDE: Visual Studio 2015 (vc14)

SDK: hdf5-1.8.19, opencv-3.2, opencv-contrib-3.2

Other Tools: CMake 3.9.0-rc5

二、 安装(Win64)

1. 安装hdf5 1.8.19

2. cmake安装opencv+contrib 3.2,参见官方文档:

http://docs.opencv.org/master/d3/d52/tutorial_windows_install.html

https://github.com/opencv/opencv_contrib

注意:

加入opencv_contrib后再按下cmake-gui的config键。

在VS编译的时候,不要忘了分别编译Debug和Release版本,之后再编译INSTALL的Debug和Release版本(相当于Linux里的make install)。

3. 设置OPENCV_DIR环境变量,%OPENCV_DIR%\bin加入到Path里(以便程序运行时可以找到DLL文件)。

三、 VS编程

这里使用C++语言。

1. 设置opencv到INCLUDE和LIB目录,参见官方文档:

http://docs.opencv.org/master/d6/d8a/tutorial_windows_visual_studio_Opencv.html

2. 项目属性->链接器->输入-附加依赖项,加入:

opencv_core320d.lib
opencv_hdf320d.lib

(带d的是Debug版lib,这里也在属性管理器里可以分别设置Release版的lib)

3. 示例代码如下:

#include "stdafx.h"
#include <opencv2/core.hpp>
#include <opencv2/hdf.hpp>

int main()
{
    int count = 0;
    // dual channel hilbert matrix
    cv::Mat H(100, 100, CV_64FC2);
    for (int i = 0; i < H.rows; i++)
    {
        for (int j = 0; j < H.cols; j++)
        {
            H.at<cv::Vec2d>(i, j)[0] = 1. / (i + j + 1);
            H.at<cv::Vec2d>(i, j)[1] = -1. / (i + j + 1);
            count++;
        }
    }

    // open / autocreate hdf5 file
    cv::Ptr<cv::hdf::HDF5> h5io = cv::hdf::open("mytest.h5");
    // write / overwrite dataset
    h5io->dswrite(H, "hilbert");
    //release
    h5io->close();
    return 0;

 

vs2015下通过opencv使用hdf5