从 python 调用 cv::cuda::HOG

Posted

技术标签:

【中文标题】从 python 调用 cv::cuda::HOG【英文标题】:Calling cv::cuda::HOG from python 【发布时间】:2017-04-17 05:28:40 【问题描述】:

我需要从 python 访问 C++ 中 opencv 的 cuda 模块。我尝试使用 Boost 包装 c++ 函数,但出现以下错误。

ImportError: ../build/lib.linux-x86_64-2.7/pyBoostHOG.so: 未定义 符号:_ZN2cv4cuda6Stream4NullEv。

有什么方法可以让我从 python 访问 opencv cuda 模块? 提前谢谢..

【问题讨论】:

好吧,我可以解决它。符号本身描述了使用的模块。所以我们应该确保包含所有必需的模块。 【参考方案1】:

我有同样的错误。

我发现我必须包含 opencv2/core/cuda.hpp 文件(符号 _ZN2cv4cuda6Stream4NullEv 指的是:cv::cuda::Stream::Null()

但这并不能解决问题,因为当我尝试让 wrapthought swig 并包含这些文件时,出现新错误:

.../include/opencv2/core/cuda.hpp:317: Error: Syntax error in input(1).

显示。 使用 cv::cuda::Stream::Null() 编译另一个程序不会导致错误。

【讨论】:

【参考方案2】:

我遇到了同样的错误。这就是我编译 .so 文件的方式:

g++ `pkg-config opencv4 --cflags --libs` -fPIC -c flow.cpp
g++ -Wall -O3 -shared -o flow.so flow.o `pkg-config opencv4 --cflags --libs`

当我将 make 文件更改为以下内容时,错误已解决:

g++ `pkg-config opencv4 --cflags --libs` -fPIC -c flow.cpp
g++ -Wall -O3 -shared flow.o -o flow.so `pkg-config opencv4 --cflags --libs`

【讨论】:

以上是关于从 python 调用 cv::cuda::HOG的主要内容,如果未能解决你的问题,请参考以下文章

从 Python 调用 Java

Python 绑定:从 Python 调用 C 或 C++

从 C++ 调用 Python

从 Java 调用 python 函数的不同/更好的方法

Python 绑定:从 Python 调用 C 或 C++

从 python 调用 C# 库