在Linux系统中使用OpenCV是进行计算机视觉和图像处理的常见需求,OpenCV(Open Source Computer Vision Library)提供了丰富的函数库,支持C++、Python等多种编程语言,本文将从安装、配置、基本使用到高级应用,详细说明Linux环境下OpenCV的使用方法。
安装OpenCV
Linux下安装OpenCV有三种主要方式:系统包管理器安装、源码编译安装、pip安装(Python环境),不同方式适用于不同需求,系统包管理器安装最简单,但版本可能较旧;源码编译可定制功能,但过程复杂;pip安装适合Python开发者,版本较新。
系统包管理器安装
以Ubuntu/Debian为例,使用apt命令:
sudo apt update sudo apt install libopencv-dev python3-opencv
以CentOS/RHEL为例,使用yum命令:
sudo yum install opencv opencv-devel python3-opencv
优点:快速安装,自动处理依赖;缺点:版本可能滞后(如Ubuntu 20.04默认OpenCV 4.2)。
源码编译安装
适用于需要最新版本或自定义功能的情况,步骤如下:
- 安装依赖:
sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
- 下载源码:
git clone https://github.com/opencv/opencv.git cd opencv git checkout <版本号> # 如4.8.0
- 编译安装:
mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. make -j$(nproc) sudo make install
pip安装(Python环境)
若仅需Python支持,可直接安装opencv-python:
pip install opencv-python
或包含扩展模块的opencv-python-headless(无GUI依赖):
pip install opencv-python-headless
不同Linux发行版安装命令对比
| 发行版 | 包管理器 | 安装命令(C++库) | 安装命令(Python库) |
|————–|———-|————————|————————–|
| Ubuntu/Debian | apt | sudo apt install libopencv-dev
| sudo apt install python3-opencv
|
| CentOS/RHEL | yum | sudo yum install opencv-devel
| sudo yum install python3-opencv
|
| Fedora | dnf | sudo dnf install opencv-devel
| sudo dnf install python3-opencv
|
| 通用(Python)| pip | – | pip install opencv-python
|
配置环境变量
源码编译安装后,需配置LD_LIBRARY_PATH
以动态链接OpenCV库:
echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc
验证安装:
- C++:运行
pkg-config --modversion opencv4
,显示版本号则成功。 - Python:运行
python3 -c "import cv2; print(cv2.__version__)"
,显示版本号则成功。
基本使用示例
C++示例:读取并显示图片
#include <opencv2/opencv.hpp> using namespace cv; int main() { Mat image = imread("test.jpg", IMREAD_COLOR); // 读取图片 if (image.empty()) { std::cerr << "Could not read image!" << std::endl; return -1; } imshow("Display Window", image); // 显示图片 waitKey(0); // 等待按键 return 0; }
编译(需链接OpenCV库):
g++ -std=c++11 display_img.cpp -o display_img `pkg-config --cflags --libs opencv4` ./display_img
Python示例:图像灰度化
import cv2 # 读取图片 image = cv2.imread("test.jpg") if image is None: print("Could not read image!") exit() # 转换为灰度图 gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 显示图片 cv2.imshow("Gray Image", gray_image) cv2.waitKey(0) cv2.destroyAllWindows()
高级应用
视频处理
- 读取摄像头:
cap = cv2.VideoCapture(0) # 0为默认摄像头 while True: ret, frame = cap.read() if not ret: break cv2.imshow("Camera", frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
图像处理
边缘检测(Canny算子):
import cv2 import numpy as np image = cv2.imread("test.jpg", cv2.IMREAD_GRAYSCALE) edges = cv2.Canny(image, 100, 200) cv2.imshow("Edges", edges) cv2.waitKey(0)
DNN模块加载预训练模型
net = cv2.dnn.readNet("model.onnx") # 加载ONNX格式模型 blob = cv2.dnn.blobFromImage(image, scalefactor=1/255.0, size=(224, 224), mean=(0,0,0), swapRB=True) net.setInput(blob) output = net.forward()
常见问题与解决(FAQs)
Q1:Linux下OpenCV编译时报错“undefined reference to cv::imread”怎么办?
A:通常是由于链接库缺失导致,确保编译时正确链接OpenCV库:
- 使用CMakeLists.txt(推荐):
find_package(OpenCV REQUIRED) target_link_libraries(your_target ${OpenCV_LIBS})
- 或手动指定库路径:
g++ your_file.cpp -o your_app -I/usr/local/include/opencv4 -L/usr/local/lib -lopencv_core -lopencv_highgui
Q2:如何在Python中使用OpenCV处理视频并保存为MP4文件?
A:使用cv2.VideoCapture
读取视频,cv2.VideoWriter
保存,需设置编码格式(如MP4V)和帧率:
import cv2 cap = cv2.VideoCapture("input.mp4") fps = cap.get(cv2.CAP_PROP_FPS) frame_size = (int(cap.get(3)), int(cap.get(4))) # 初始化VideoWriter(MP4编码需支持,如MP4V) fourcc = cv2.VideoWriter_fourcc(*'mp4v') out = cv2.VideoWriter("output.mp4", fourcc, fps, frame_size) while True: ret, frame = cap.read() if not ret: break # 处理帧(如灰度化) processed_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) out.write(processed_frame) cap.release() out.release()
通过以上步骤,可在Linux系统中完成OpenCV的安装、配置及基础应用,并根据需求扩展至复杂的计算机视觉任务。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/16421.html