【问题标题】:How to use Mat_ template in swig?如何在 swig 中使用 Mat_ 模板?
【发布时间】:2019-12-22 01:12:43
【问题描述】:

所以我有一个 .hpp 文件,我打算在 swig 中使用,但该文件有一个模板(确切地说是 Mat_<float>),但每当我运行 swig 时,我最终会得到:

example.hpp::30: Error: Syntax error in input(1).

第 30 行是:

Mat_<float> measurement(8,1);

我对 c++ 不是很熟悉(并且对于这个特定项目使用 cv2 是不可能的),并且从我发现我需要在我的 .i 文件中定义模板,但是寻找通过这些例子,我不太确定我应该如何去做。有什么帮助吗?

我的 .i 文件:

%module example

%include <opencv.i>
%cv_instantiate_all_defaults

%{
    #include "example.hpp"
%}

%include "example.hpp"

(我在 OpenCV 部分使用opencv-swig

编译/构建命令:

swig -I/home/me/Documents/.../opencv-swig/lib/ -I/usr/include -python -c++ example.i

g++ -shared -std=c++1z -fpic example_wrap.cxx $(pkg-config --cflags --libs python3) $(pkg-config --libs opencv) -o _example.so

【问题讨论】:

  • 你能分享更多你的file.hpp文件吗?和example.hpp是同一个文件吗?
  • @Fifi 哦,我的错,它们是同一个文件,文件/示例只是占位符名称。已编辑。
  • 你试过没有第 30 行吗?我已经收到了相同的错误消息,它与指示的行无关,但很快就出现了问题
  • @Fifi 是的。我 100% 确定这只是定义模板的问题。
  • 它是否适用于其他类型? (例如Mat_&lt;double&gt;

标签: c++ python-3.x opencv swig cv2


【解决方案1】:

Swig documentation on templates

您可能需要使用类似的东西 %template(Mat_float_) Mat_&lt;float&gt;; 在 .i 文件的末尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    相关资源
    最近更新 更多