Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
生成共享python库表单.cpp文件时缺少opencv库 我有一个C++文件,我想从中构建一个共享库(.so文件)。以下是.cpp文件: #include "extract_features.hpp" boost::python::object hog_feature_extract(boost::python::object &gray, boost::python::object &pts2d, boost::python::object &pts3d) { static Mat m_gray, m_pts2d, m_pts3d, m_feature_vector; // Convert into opencv land... pyopencv_to(gray.ptr(), m_gray, "info", true); pyopencv_to(pts2d.ptr(), m_pts2d, "info", true); pyopencv_to(pts3d.ptr(), m_pts3d, "info", true); // Function call hog_feature_extractor::shared_extractor().extract(m_gray, m_pts2d, m_pts3d, m_feature_vector); // Output PyObject *p_feature_vector = pyopencv_from(m_feature_vector); boost::python::object boostPyObjFrame(boost::python::handle<>((PyObject*)p_feature_vector)); return boostPyObjFrame; }_Python_C++_Opencv_Boost - Fatal编程技术网

生成共享python库表单.cpp文件时缺少opencv库 我有一个C++文件,我想从中构建一个共享库(.so文件)。以下是.cpp文件: #include "extract_features.hpp" boost::python::object hog_feature_extract(boost::python::object &gray, boost::python::object &pts2d, boost::python::object &pts3d) { static Mat m_gray, m_pts2d, m_pts3d, m_feature_vector; // Convert into opencv land... pyopencv_to(gray.ptr(), m_gray, "info", true); pyopencv_to(pts2d.ptr(), m_pts2d, "info", true); pyopencv_to(pts3d.ptr(), m_pts3d, "info", true); // Function call hog_feature_extractor::shared_extractor().extract(m_gray, m_pts2d, m_pts3d, m_feature_vector); // Output PyObject *p_feature_vector = pyopencv_from(m_feature_vector); boost::python::object boostPyObjFrame(boost::python::handle<>((PyObject*)p_feature_vector)); return boostPyObjFrame; }

生成共享python库表单.cpp文件时缺少opencv库 我有一个C++文件,我想从中构建一个共享库(.so文件)。以下是.cpp文件: #include "extract_features.hpp" boost::python::object hog_feature_extract(boost::python::object &gray, boost::python::object &pts2d, boost::python::object &pts3d) { static Mat m_gray, m_pts2d, m_pts3d, m_feature_vector; // Convert into opencv land... pyopencv_to(gray.ptr(), m_gray, "info", true); pyopencv_to(pts2d.ptr(), m_pts2d, "info", true); pyopencv_to(pts3d.ptr(), m_pts3d, "info", true); // Function call hog_feature_extractor::shared_extractor().extract(m_gray, m_pts2d, m_pts3d, m_feature_vector); // Output PyObject *p_feature_vector = pyopencv_from(m_feature_vector); boost::python::object boostPyObjFrame(boost::python::handle<>((PyObject*)p_feature_vector)); return boostPyObjFrame; },python,c++,opencv,boost,Python,C++,Opencv,Boost,我试图为其他.cpp文件和库(包括opencv和boost库)添加所有必需的路径。但它给了我一些错误,似乎无法加载opencv库,下面是错误日志的一部分: /tmp/ccVzk9cx.o: In function `pyopencv_to(_object const*, cv::Mat&, char const*, bool)': python_helper.cpp:(.text+0xb54): undefined reference to `cv::Mat::Mat(int, int

我试图为其他.cpp文件和库(包括opencv和boost库)添加所有必需的路径。但它给了我一些错误,似乎无法加载opencv库,下面是错误日志的一部分:

/tmp/ccVzk9cx.o: In function `pyopencv_to(_object const*, cv::Mat&, char const*, bool)':
python_helper.cpp:(.text+0xb54): undefined reference to `cv::Mat::Mat(int,  int const*, int, void*, unsigned long const*)'
python_helper.cpp:(.text+0xc04): undefined reference to `cv::_OutputArray::_OutputArray(cv::Mat&)'
python_helper.cpp:(.text+0xc1a): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
python_helper.cpp:(.text+0xc2d): undefined reference to `cv::transpose(cv::_InputArray const&, cv::_OutputArray const&)'
如果我在上面的命令中删除“-Wl,-z,defs”选项,它将生成.so文件而不会出现任何错误,但是当我想在python脚本中导入它时,它无法加载库

我错过了什么?有什么建议吗

下面是

pkg-config --cflags --libs opencv 
命令:

-I/share/sw/free/opencv/2.4.9/include/opencv 

-I/share/sw/free/opencv/2.4.9/include

/share/sw/free/opencv/2.4.9/lib/libopencv_calib3d.so

/share/sw/free/opencv/2.4.9/lib/libopencv_contrib.so 

/share/sw/free/opencv/2.4.9/lib/libopencv_core.so

/share/sw/free/opencv/2.4.9/lib/libopencv_features2d.so 

/share/sw/free/opencv/2.4.9/lib/libopencv_flann.so 

/share/sw/free/opencv/2.4.9/lib/libopencv_gpu.so 

/share/sw/free/opencv/2.4.9/lib/libopencv_highgui.so 

/share/sw/free/opencv/2.4.9/lib/libopencv_imgproc.so 

/share/sw/free/opencv/2.4.9/lib/libopencv_legacy.so 

/share/sw/free/opencv/2.4.9/lib/libopencv_ml.so 

/share/sw/free/opencv/2.4.9/lib/libopencv_nonfree.so 

/share/sw/free/opencv/2.4.9/lib/libopencv_objdetect.so 

/share/sw/free/opencv/2.4.9/lib/libopencv_ocl.so 

/share/sw/free/opencv/2.4.9/lib/libopencv_photo.so 

/share/sw/free/opencv/2.4.9/lib/libopencv_stitching.so 

/share/sw/free/opencv/2.4.9/lib/libopencv_superres.so 

/share/sw/free/opencv/2.4.9/lib/libopencv_ts.a 

/share/sw/free/opencv/2.4.9/lib/libopencv_video.so 

/share/sw/free/opencv/2.4.9/lib/libopencv_videostab.so 

/usr/lib64/libXext.so /usr/lib64/libX11.so

 /usr/lib64/libICE.so /usr/lib64/libSM.so 

/usr/lib64/libGL.so /usr/lib64/libGLU.so 

-lcufft -lcublas -lnpps -lnppi -lnppc -lcudart -lrt -lpthread -lm -ldl  

命令行缺少通过pkg config添加的opencv链接选项:
$(pkg配置--libs opencv)

添加此选项时,共享库将正确编译:

g++ -std=gnu++11 -lstdc++ -fPIC -shared -Wl,-z,defs -o /projects/glass_development/lib/linux/extract_features.so  extract_features/extract_features.cpp processing/sift_feature_extractor.cpp processing/hog_feature_extractor.cpp processing/pre_extraction_helper.cpp helpers/python_helper.cpp processing/base_feature_extractor.cpp -lpython2.6 -lboost_python -I/share/sw/free/boost/1.41.0/include/ -I/share/sw/free/opencv/2.4.9/include/ -I/projects/glass_development/src/native/processing/ -I/projects/glass_development/src/native/helpers/ -I/usr/include/python2.6 $(pkg-config --libs opencv)

命令行缺少通过pkg config添加的opencv链接选项:
$(pkg配置--libs opencv)

添加此选项时,共享库将正确编译:

g++ -std=gnu++11 -lstdc++ -fPIC -shared -Wl,-z,defs -o /projects/glass_development/lib/linux/extract_features.so  extract_features/extract_features.cpp processing/sift_feature_extractor.cpp processing/hog_feature_extractor.cpp processing/pre_extraction_helper.cpp helpers/python_helper.cpp processing/base_feature_extractor.cpp -lpython2.6 -lboost_python -I/share/sw/free/boost/1.41.0/include/ -I/share/sw/free/opencv/2.4.9/include/ -I/projects/glass_development/src/native/processing/ -I/projects/glass_development/src/native/helpers/ -I/usr/include/python2.6 $(pkg-config --libs opencv)

我猜你不是在链接libopencv。尝试将
-lopencv
添加到您的命令行。感谢您的评论,我也添加了该库,现在它给了我以下错误:“找不到-lopencv”。我还为opencv库添加了路径,但仍然给出了相同的错误?你能把这个命令打印的选项添加到你的命令行吗?它给了我很多选项,我尝试了其中的大部分,但仍然得到相同的错误。你能至少发布
pkg config--libs opencv
的输出吗?你显然没有链接到opencv库。我猜你没有链接到libopencv。尝试将
-lopencv
添加到您的命令行。感谢您的评论,我也添加了该库,现在它给了我以下错误:“找不到-lopencv”。我还为opencv库添加了路径,但仍然给出了相同的错误?你能把这个命令打印的选项添加到你的命令行吗?它给了我很多选项,我尝试了其中的大部分,但仍然得到相同的错误。你能至少发布
pkg config--libs opencv
的输出吗?您显然没有链接到opencv库。
g++ -std=gnu++11 -lstdc++ -fPIC -shared -Wl,-z,defs -o /projects/glass_development/lib/linux/extract_features.so  extract_features/extract_features.cpp processing/sift_feature_extractor.cpp processing/hog_feature_extractor.cpp processing/pre_extraction_helper.cpp helpers/python_helper.cpp processing/base_feature_extractor.cpp -lpython2.6 -lboost_python -I/share/sw/free/boost/1.41.0/include/ -I/share/sw/free/opencv/2.4.9/include/ -I/projects/glass_development/src/native/processing/ -I/projects/glass_development/src/native/helpers/ -I/usr/include/python2.6 $(pkg-config --libs opencv)