我用c++编写了一个opencv库。然后用增强.python. 但无法从生成的共享库导入此模块。(PS.我在C++中构建C++项目,运行良好) 错误信息列表如下:
root@boris-GL553VD:~/workspace/feature_matching/src# python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from libfeatMatch import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: ./libfeatMatch.so: undefined symbol: _ZN2cv14findHomographyERKNS_11_InputArrayES2_idRKNS_12_OutputArrayEid
>>>
错误消息show libopencv\u calib3d.so无法正确链接。
我使用LDD命令显示featMatch模块的所有链接库。列出的库没有libopencv\u calib3d.so!!!你知道吗
root@boris-GL553VD:~/workspace/feature_matching/src# ldd libfeatMatch.so | grep opencv
libopencv_core.so.2.4 => /usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4 (0x00007fa218076000)
libopencv_imgproc.so.2.4 => /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4 (0x00007fa217beb000)
libopencv_highgui.so.3.2 => /usr/local/lib/libopencv_highgui.so.3.2 (0x00007fa2179da000)
libopencv_imgcodecs.so.3.2 => /usr/local/lib/libopencv_imgcodecs.so.3.2 (0x00007fa2174a1000)
libopencv_xfeatures2d.so.3.2 => /usr/local/lib/libopencv_xfeatures2d.so.3.2 (0x00007fa216fd7000)
libopencv_features2d.so.2.4 => /usr/lib/x86_64-linux-gnu/libopencv_features2d.so.2.4 (0x00007fa216d3a000)
libopencv_imgproc.so.3.2 => /usr/local/lib/libopencv_imgproc.so.3.2 (0x00007fa210954000)
libopencv_core.so.3.2 => /usr/local/lib/libopencv_core.so.3.2 (0x00007fa20f5bd000)
libopencv_features2d.so.3.2 => /usr/local/lib/libopencv_features2d.so.3.2 (0x00007fa20e296000)
libopencv_flann.so.2.4 => /usr/lib/x86_64-linux-gnu/libopencv_flann.so.2.4 (0x00007fa20e02d000)
libopencv_flann.so.3.2 => /usr/local/lib/libopencv_flann.so.3.2 (0x00007fa2088ec000)
我的makefile是:
INCLUDE_FLAGS = \
-I/usr/include/python2.7 -I/usr/local/include -I/usr/local/include/opencv -I/usr/local/include/opencv2
LIB_PATH = \
-L/usr/lib/x86_64-linux-gnu -L/usr/local/lib
LIB_FLAGS = \
-lpython2.7 -lboost_python -lboost_python-py27 -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs -lopencv_xfeatures2d -lopencv_features2d -lopencv_calib3d
SOURCE = \
./json/jsoncpp.cpp ./utils.cpp ./feature_matching.cpp
all:${SOURCE}
g++ ${INCLUDE_FLAGS} -fPIC ${SOURCE} -std=c++11 -shared -o libfeatMatch.so ${LIB_PATH} ${LIB_FLAGS}
clean:
rm -f libfeatMatch *.o *.out *.so
C++项目文件列表如下:
class FeatureMatching
{
public:
explicit FeatureMatching(const char* img_obj_name, const char* img_scn_name,
const FeatureMatchingOptions& feat_match_opts, const bool js_flag = true);
explicit FeatureMatching(const Rect& rect_obj, const char* img_scn_name,
const FeatureMatchingOptions& feat_match_opts, const bool js_flag = true);
~FeatureMatching();
bool process();
....
}
using namespace boost::python;
BOOST_PYTHON_MODULE(libfeatMatch)
{
class_<FeatureMatchingOptions>("FeatureMatchingOptions")
.def(init<const FeatureMatchingOptions &>())
;
class_<FeatureMatching>("FeatureMatching", init<const char*, const char*, const FeatureMatchingOptions&, const bool>())
.def(init<const Rect&, const char*, const FeatureMatchingOptions&, const bool>())
.def("process", &FeatureMatching::process)
;
}
目前没有回答
相关问题 更多 >
编程相关推荐