Ubuntu如何调用opencv静态库
时间: 2023-11-09 19:11:51 浏览: 63
要在Ubuntu中调用OpenCV静态库,需要进行以下步骤:
1. 安装OpenCV库:在Ubuntu上安装OpenCV库,可以使用apt-get命令或者编译源代码安装。如果使用apt-get命令,可以使用以下命令:
```
sudo apt-get install libopencv-dev
```
2. 创建一个新的C++项目:创建一个新的C++项目,并包含OpenCV头文件和库文件。
3. 编译并链接:使用gcc编译器编译和链接项目。编译时需要指定OpenCV的静态库路径,并将其链接到项目中。
例如,假设我们有一个名为“test.cpp”的C++文件,我们可以使用以下命令编译和链接它:
```
g++ -o test test.cpp -I/usr/include/opencv4/ -L/usr/lib/x86_64-linux-gnu/ -lopencv_core -lopencv_highgui -lopencv_imgcodecs
```
其中,“-I”指定OpenCV头文件路径,“-L”指定OpenCV库文件路径,“-lopencv_core”,“-lopencv_highgui”和“-lopencv_imgcodecs”是需要链接的静态库文件。
4. 运行项目:使用以下命令运行项目:
```
./test
```
这样就可以在Ubuntu中调用OpenCV静态库了。
相关问题
Ubuntu交叉编译链接opencv静态库
1. 安装交叉编译工具链
首先需要安装交叉编译工具链,可以根据目标平台的架构选择相应的工具链。以ARM架构为例,可以使用ARM的官方工具链或者使用Ubuntu提供的工具链:
```bash
sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
```
2. 下载并编译opencv
下载opencv源码,解压后进入源码目录,执行以下命令:
```bash
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/arm-linux-gnueabihf ..
make -j4
```
其中,`-DCMAKE_TOOLCHAIN_FILE`指定了交叉编译工具链,`-DOPENCV_EXTRA_MODULES_PATH`指定了opencv_contrib的路径,`-DBUILD_SHARED_LIBS=OFF`表示编译静态库,`-DBUILD_TESTS=OFF`、`-DBUILD_PERF_TESTS=OFF`、`-DBUILD_EXAMPLES=OFF`表示不编译测试和示例程序,`-DCMAKE_BUILD_TYPE=RELEASE`表示编译优化,`-DCMAKE_INSTALL_PREFIX`指定了安装目录。
编译完成后,执行以下命令安装opencv:
```bash
sudo make install
```
3. 链接静态库
在编译自己的程序时,需要链接opencv的静态库。以CMake为例,可以在`CMakeLists.txt`中添加以下代码:
```cmake
set(OpenCV_STATIC ON)
find_package(OpenCV REQUIRED)
target_link_libraries(your_target ${OpenCV_LIBS})
```
其中,`set(OpenCV_STATIC ON)`指定链接静态库,`find_package(OpenCV REQUIRED)`查找opencv库,`target_link_libraries(your_target ${OpenCV_LIBS})`链接静态库。需要注意的是,交叉编译时需要指定正确的库路径和头文件路径。
交叉编译的opencv静态库怎么调用
要调用交叉编译的OpenCV静态库,需要在编译时链接该库,以及在代码中包含相关的头文件。
以下是一个使用交叉编译的OpenCV静态库的示例代码:
```cpp
#include <opencv2/opencv.hpp>
int main() {
cv::Mat image = cv::imread("example.jpg");
cv::imshow("Image", image);
cv::waitKey(0);
return 0;
}
```
在编译时,需要使用以下命令进行链接:
```
g++ -o example example.cpp -lopencv_core -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc
```
其中,`-lopencv_core -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc` 分别对应OpenCV静态库中的核心模块、GUI模块、图像编解码模块和图像处理模块。
请注意,上述示例代码仅供参考,实际使用时需要根据具体情况进行修改。