Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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
Opencv 来自终端的示例程序无法运行_Opencv_Ubuntu - Fatal编程技术网

Opencv 来自终端的示例程序无法运行

Opencv 来自终端的示例程序无法运行,opencv,ubuntu,Opencv,Ubuntu,我是ubuntu中opencv的新手。我已经按照中的教程在linux中设置opencv。但是,我没有成功。在我键入以下内容之后 $ g++ DisplayImage.cpp 出现这些错误 /tmp/cc3GTOtQ.o: In function `main': DisplayImage.cpp:(.text+0x53): undefined reference to `cv::imread(std::basic_string<char, std::char_traits<char&

我是ubuntu中opencv的新手。我已经按照中的教程在linux中设置opencv。但是,我没有成功。在我键入以下内容之后

$ g++ DisplayImage.cpp
出现这些错误

/tmp/cc3GTOtQ.o: In function `main':
DisplayImage.cpp:(.text+0x53): undefined reference to `cv::imread(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
DisplayImage.cpp:(.text+0xe5): undefined reference to `cv::namedWindow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
DisplayImage.cpp:(.text+0x113): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
DisplayImage.cpp:(.text+0x147): undefined reference to `cv::imshow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)'
DisplayImage.cpp:(.text+0x169): undefined reference to `cv::waitKey(int)'
/tmp/cc3GTOtQ.o: In function `cv::Mat::~Mat()':
DisplayImage.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x39): undefined reference to `cv::fastFree(void*)'
/tmp/cc3GTOtQ.o: In function `cv::Mat::operator=(cv::Mat const&)':
DisplayImage.cpp:(.text._ZN2cv3MataSERKS0_[cv::Mat::operator=(cv::Mat const&)]+0x111): undefined reference to `cv::Mat::copySize(cv::Mat const&)'
/tmp/cc3GTOtQ.o: In function `cv::Mat::release()':
DisplayImage.cpp:(.text._ZN2cv3Mat7releaseEv[cv::Mat::release()]+0x47): undefined reference to `cv::Mat::deallocate()'
collect2: ld returned 1 exit status
/tmp/cc3GTOtQ.o:在函数'main'中:
DisplayImage.cpp:(.text+0x53):对“cv::imread(std::basic_string const&,int)”的未定义引用
DisplayImage.cpp:(.text+0xe5):对“cv::namedWindow(std::basic_string const&,int)”的未定义引用
DisplayImage.cpp:(.text+0x113):对“cv::\u InputArray::\u InputArray(cv::Mat const&)”的未定义引用
DisplayImage.cpp:(.text+0x147):对“cv::imshow(std::basic_string const&,cv:_inputarrayconst&)”的未定义引用
DisplayImage.cpp:(.text+0x169):对“cv::waitKey(int)”的未定义引用
/tmp/cc3GTOtQ.o:在函数“cv::Mat::~Mat()”中:
DisplayImage.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x39):对'cv::fastFree(void*)的未定义引用
/tmp/cc3GTOtQ.o:在函数“cv::Mat::operator=(cv::Mat const&)”中:
DisplayImage.cpp:(.text.\u ZN2cv3MataSERKS0.[cv::Mat::operator=(cv::Mat const&)]+0x111):对“cv::Mat::copySize(cv::Mat const&)”的未定义引用
/tmp/cc3GTOtQ.o:在函数'cv::Mat::release()'中:
DisplayImage.cpp:(.text._ZN2cv3Mat7releaseEv[cv::Mat::release()]+0x47):对“cv::Mat::deallocate()”的未定义引用
collect2:ld返回了1个退出状态

您需要链接opencv库:可能您需要将至少
-lcv
-lcxcore
-lhighgui
添加到命令行中。看到这个。

这里是带有OpenCV库的完整命令行构建C++程序。
g++ -I/usr/local/include/opencv -I/usr/local/include/opencv2 -L/usr/local/lib/ -g -o binaryName  main.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy
如果在不同的位置安装了OpenCV,则应将“include”和lib“directory”的路径更改为适当的位置

编辑:-


不要每次都运行此命令,只需在项目目录中创建一个文件
build.sh
,而是通过运行
chmod 777 build.sh
将其权限更改为可执行,而要构建项目,只需运行此文件。

它仍然不起作用。为了供您参考,我在桌面上创建了一个文件夹,.cpp位于那里。我以前使用它VS2008,在这里我需要链接库、环境变量以及包含依赖项。我想尝试从终端编译,但我无法。这个很好用。每次创建新项目时我都必须键入所有这些内容吗?您可以创建一个包含此内容的文件,并将其权限更改为可执行,只要您需要构建项目并运行它。