【发布时间】:2014-05-30 06:11:36
【问题描述】:
我正在尝试创建一个用于在 labview 中使用 openCV 的 dll 包装器。我对他们两个也很陌生(openCV 和 Labview)。我想使用来自 labview 的 cvTriangulatePoints。现在我已经创建了一个 hpp 文件
#ifndef __OPENCV_PRECOMP_H__
#define __OPENCV_PRECOMP_H__
#include "cvconfig.h"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/core/internal.hpp"
#include "opencv2/features2d/features2d.hpp"
#include <vector>
#ifdef HAVE_TEGRA_OPTIMIZATION
#include "opencv2/calib3d/calib3d_tegra.hpp"
#else
#define GET_OPTIMIZED(func) (func)
#endif
#endif
(这是precomp.hpp,它包含在文件triangulate.cpp opencv\sources\modules\calib3d\src中)然后是我自己的hpp文件:
#ifdef WRAPPEROPENCV_EXPORTS
#define WRAPPEROPENCV_API __declspec(dllexport)
#else
#define WRAPPEROPENCV __declspec(dllimport)
#endif
#include "precomp.hpp"
namespace WrapperOpenCv
{
class WrapperOpenCv
{
public:
WRAPPEROPENCV_API void cvTriangulatePoints(CvMat* projMatr1, CvMat* projMatr2, CvMat* projPoints1, CvMat* projPoints2, CvMat* points4D);
WRAPPEROPENCV_API void cvCorrectMatches(CvMat *F_, CvMat *points1_, CvMat *points2_, CvMat *new_points1, CvMat *new_points2);
static WRAPPEROPENCV_API void triangulatePoints( InputArray _projMatr1, InputArray _projMatr2, InputArray _projPoints1, InputArray _projPoints2, OutputArray _points4D )
};
}
有了这个我应该能够在labview中导出这些方法。(我知道我仍然必须在cpp文件中实现这些功能)。问题:我在 InputArray 和 OutputArray 上有一个错误:
Error: identifier "InputArray" is undefined
有人知道我应该怎么做才能解决这个问题吗?感谢您的帮助
【问题讨论】:
-
请阅读 this paragraph 上 OpenCV 中使用的输入/输出数组,然后相应地更改您的方法。
-
您可能需要包含一些来自核心模块的头文件,例如 mat.hpp 等。尝试包含它们,然后再试一次。
-
@scap3y 是对的,文档说 通常,您不应该关心那些中间类型(并且您不应该显式声明这些类型的变量) 并使用其他数据类型. _projMatr1 和 _projmatr2 是我通过运行 opencv 示例中的程序“stereoCalib.exe”获得的一些矩阵:
-
其实opencv的sample文件夹里只有源码stereo_calib.cpp,需要自己编译。但是现在我的问题是如何使用stereo_calib生成的yml文件中的值。我应该为此创建另一个问题吗?