Linux下编译OpenCV程序:一步步教你安装配置 (linux下编译opencv程序)
OpenCV是一个开源的计算机视觉库,它是一种跨平台的计算机视觉和机器学习软件开发库。OpenCV支持C++、Python、Java等多种编程语言的应用,可以使用它来实现许多功能,如目标检测、人脸识别、图像处理等。如果您想要在Linux下编译OpenCV程序,本文将一步步教您安装配置。
安装OpenCV依赖库
在安装OpenCV之前,我们需要安装一些依赖库。这些依赖库将帮助您编译和运行OpenCV。在Ubuntu或Debian发行版上,您可以使用以下命令安装这些依赖库:
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
安装OpenCV
现在,我们来安装OpenCV。您可以从OpenCV官方网站下载最新版本的源代码。下载链接:https://opencv.org/releases/
将下载的源代码解压缩到您的计算机中,并在解压缩后的目录中创建一个build目录。
接下来,我们将使用cmake来构建OpenCV。
打开终端,输入以下命令:
cd opencv-
mkdir build
cd build
cmake ..
此命令将进入解压缩后的OpenCV目录,创建一个build目录,并进入该目录。 Cmake会根据您的电脑的环境变量为您配置OpenCV的安装。然后,Cmake将告诉您OpenCV所需的库是否已经满足要求。如果一切正常,您将在终端中看到以下结果:
— Configuring done
— Generating done
— Build files have been written to: /path/to/opencv/build
现在,我们可以使用下面的命令编译和安装OpenCV:
make -j $(nproc)
sudo make install
该命令将使用make和已安装的nproc命令来为您的计算机上的所有内核构建OpenCV,以利用充分利用计算机的性能。然后,这个命令将把OpenCV安装到您的计算机上。
配置OpenCV环境变量
接下来,您需要将OpenCV的路径添加到系统路径中。这可以通过编辑/etc/environment文件来完成。打开终端,输入以下命令:
sudo nano /etc/environment
在打开的文件中,添加以下行:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
LD_LIBRARY_PATH=/usr/local/lib
您可以将以上两行添加至文件底部。然后,按Ctrl + X,然后按Y和Enter保存更改。
现在,您需要更新您的环境变量,以使更改生效。打开终端,输入以下命令:
source /etc/environment
现在,您可以通过运行下面的命令检查OpenCV是否正确安装和配置:
pkg-config –modversion opencv
如果OpenCV正确安装和配置,您会在终端中看到安装的OpenCV版本。
测试OpenCV
我们测试一下OpenCV的安装。我们将编写一个简单的OpenCV程序来读取一张图片,并在图片上使用cv::Canny函数边缘检测。
在终端中,输入以下命令创建一个简单的OpenCV C++程序cpp文件:
nano test.cpp
将以下代码复制并粘贴到test.cpp文件中:
#include
#include
using namespace cv;
using namespace std;
int mn(int argc, char** argv) {
if(argc != 2) {
cout ”
return -1;
}
Mat img = imread(argv[1], IMREAD_GRAYSCALE);
if(img.empty()) {
cout
return -1;
}
Mat edges;
Canny(img, edges, 50, 150);
namedWindow(“Display Image”, WINDOW_AUTOSIZE);
imshow(“Display Image”, edges);
wtKey(0);
return 0;
}
按Ctrl + X,然后按Y和Enter保存更改。
现在,我们将编译这个程序:
g++ test.cpp -o test `pkg-config –cflags –libs opencv4`
该命令将使用g++编译器编译test.cpp文件,并使用pkg-config命令添加必需的OpenCV库。
现在,我们来使用./test命令运行编译后的程序。您将看到一张图片,在图像上使用了边缘检测算法。
结论