C++ 核心转储中的OpenCV示例编译结果
我正在使用以下代码为OpenCV编译一个示例:C++ 核心转储中的OpenCV示例编译结果,c++,opencv,C++,Opencv,我正在使用以下代码为OpenCV编译一个示例: #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> using namespace cv; using namespace std; int main( int argc, char** argv ) { if( argc != 2) { cout &l
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
if( argc != 2)
{
cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}
Mat image;
image = imread(argv[1], CV_LOAD_IMAGE_COLOR); // Read the file
if(! image.data ) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}
namedWindow( "Display window", WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", image ); // Show our image inside it.
waitKey(0); // Wait for a keystroke in the window
return 0;
}
如果我省略了另外添加的一个库,就会出现链接错误。当试图运行程序时,我得到一个“无效的机器代码”错误。如何解决这个问题?您正在链接到
-L/usr/local/share/OpenCV/3rdparty/lib/
,我认为您应该链接到-L/usr/local/lib/
。第三方LIB用于某些图像编解码器。。。。此外,我通常不使用-lopencv\u imgcodecs
,在这种情况下,如果我省略-lopencv\u imgcodecs
,您就不会使用-lopencv\u功能2d
,我得到/usr/bin/ld:/tmp/cc2raORo.o:对符号“\u ZN2cv6imreadERKNS\u 6StringEi”的未定义引用/usr/local/lib/libopencv\u imgcodecs.so:添加符号时出错:命令行中缺少DSO
,如果我省略了其他链接路径,我得到/usr/bin/ld:找不到-lippicv
。对不起,我习惯于opencv 2.4。。。在3.x中,他们将imread移动到imgcodecs。别忘了包括#包括“opencv2/imgcodecs.hpp”
另外,-I/usr/local/include/opencv2
这应该没有opencv2。(您已经在每个include中包含了该部分)。对于,-lippicv
您必须使用该链接路径(不要忘了链接另一个)或使用该选项编译opencv(参见此)
g++ -I/usr/local/include/opencv2 `pkg-config --cflags --libs opencv` -L /usr/local/share/OpenCV/3rdparty/lib/ opencv.cpp -o opencv -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_features2d -lopencv_imgcodecs