OpenCV从入门到精通:OpenCV安装、配置、依赖安装、基本语法、常用方法详解

OpenCV从入门到精通:OpenCV安装、配置、依赖安装、基本语法、常用方法详解

引言

OpenCV(Open Source Computer Vision Library)是一个开源的跨平台计算机视觉库,提供了丰富的图像和视频处理算法接口,支持 Python、C++、Java 等多种语言。它在工业检测、人脸识别、智能驾驶、视觉 SLAM 等领域得到了广泛应用。本文将带领你从安装和配置开始,逐步掌握 OpenCV 的基本语法和常用方法,帮助你快速从入门迈向精通。

在这里插入图片描述


目录

  1. 引言
  2. 环境准备
    1. 系统需求
    2. 安装依赖
  3. OpenCV安装
    1. Python 环境安装
    2. C++ 环境安装(源码编译)
  4. OpenCV 配置
    1. Python 配置
    2. C++ 配置(CMake、IDE)
  5. 基本语法
    1. 包含头文件与命名空间
    2. Mat 类详解
    3. 读取与显示图像
    4. 视频读写
  6. 常用方法详解
    1. 色彩空间转换
    2. 图像阈值处理
    3. 滤波与平滑
    4. 边缘检测
    5. 形态学操作
    6. 轮廓检测
    7. 几何变换
    8. 绘制函数
  7. 进阶技巧
    1. ROI 与模板匹配
    2. 特征检测(ORB/SIFT/SURF)
    3. 摄像头标定与透视变换
  8. 常见问题与解决方案
  9. 总结与建议


作者简介

猫头虎是谁?

大家好,我是 猫头虎,AI全栈工程师,某科技公司CEO,猫头虎技术团队创始人,也被大家称为虎哥。我目前是COC北京城市开发者社区主理人COC西安城市开发者社区主理人,以及云原生开发者社区主理人,在多个技术领域如云原生、前端、后端、运维和AI都有超多内容更新。

感谢全网三十多万粉丝的持续支持,我希望通过我的分享,帮助大家更好地掌握和使用各种技术产品,提升开发效率与体验。


作者名片 ✍️

  • 博主猫头虎
  • 全网全平台搜索关键词 猫头虎 即可与我建联
  • 作者微信号Libin9iOak
  • 作者公众号猫头虎技术团队
  • 更新日期2025年04月22日
  • 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能!

加入我们AI共创团队 🌐

加入猫头虎的AI共创变现圈,一起探索编程世界的无限可能! 🚀


正文

环境准备

系统需求

  • 操作系统:Windows 10/11、Ubuntu 18.04 及以上、macOS 10.14 及以上
  • 硬件:内存 ≥ 4GB,建议 8GB 以上;CPU 支持 SSE4.2 优化;若使用深度学习模块,建议配备 NVIDIA GPU
  • 软件
    • Python 3.6 及以上
    • CMake 3.14 及以上(若源码编译)
    • Visual Studio 2019/2022(Windows 下 C++ 编译)

安装依赖

在构建和使用 OpenCV 前,需要安装以下常见依赖:

  • CMake:跨平台构建工具
  • Git:用于克隆源码
  • FFmpeg(可选):视频编解码支持
  • GTK / Qt(Linux/macOS,可选):高级 GUI 支持
  • NumPy(Python):矩阵运算

在 Ubuntu 上,你可以执行:

sudo apt update
sudo apt install -y build-essential cmake git libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev python3-dev python3-numpy

在 macOS(使用 Homebrew):

brew update
brew install cmake pkg-config git gtk+3 ffmpeg

OpenCV 安装

Python 环境安装

最便捷的方法是通过 pip

pip install opencv-python           # 核心模块
pip install opencv-contrib-python    # 包含额外模块(如 xfeatures2d)
  • opencv-python:主要包含核心功能
  • opencv-contrib-python:包含额外的贡献模块

验证安装:

import cv2
print(cv2.__version__)

C++ 环境安装(源码编译)

  1. 克隆源码
    git clone https://github.com/opencv/opencv.git
    git clone https://github.com/opencv/opencv_contrib.git
    
  2. 创建构建目录
    cd opencv
    mkdir build && cd build
    
  3. 使用 CMake 配置
    cmake -D CMAKE_BUILD_TYPE=Release \
          -D CMAKE_INSTALL_PREFIX=/usr/local \
          -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
          -D BUILD_EXAMPLES=ON ..
    
  4. 编译与安装
    make -j$(nproc)     # Linux/macOS
    # 或 在 Windows 上使用 Visual Studio 打开生成的 .sln 文件进行编译
    sudo make install
    
  5. 验证
    pkg-config --modversion opencv4
    

OpenCV 配置

Python 配置

  • 确保 pythonpip 指向同一版本
  • 若有多个虚拟环境,推荐使用 virtualenvconda 管理
  • 在代码开头统一导入:
    import cv2
    import numpy as np
    

C++ 配置(CMake、IDE)

CMakeLists.txt 中添加:

cmake_minimum_required(VERSION 3.14)
project(MyOpenCVProject)

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})

在 Visual Studio 中,安装 OpenCV 后,配置 VC++ 目录 中的包含目录和库目录,并在链接器中添加 .lib 文件。


基本语法

包含头文件与命名空间

  • C++
    #include <opencv2/opencv.hpp>
    using namespace cv;
    
  • Python
    import cv2
    

Mat 类详解

cv::Mat(Python 中为 numpy.ndarray)是 OpenCV 中最核心的图像容器,包含数据指针、尺寸、类型、通道数等信息。

Mat img(480, 640, CV_8UC3, Scalar(0, 0, 255));  // 创建红色图像
img = np.zeros((480, 640, 3), dtype=np.uint8)
img[:] = (0, 0, 255)  # BGR 红色

读取与显示图像

  • 读取imread
  • 显示imshow, waitKey
Mat img = imread("test.jpg");
imshow("原图", img);
waitKey(0);
img = cv2.imread("test.jpg")
cv2.imshow("原图", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

视频读写

  • VideoCapture:读取摄像头或视频文件
  • VideoWriter:保存视频
cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640,480))

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    out.write(frame)
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
out.release()
cv2.destroyAllWindows()

常用方法详解

色彩空间转换

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
hsv  = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

图像阈值处理

_, th = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
ad_th = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
                              cv2.THRESH_BINARY, 11, 2)

滤波与平滑

blur      = cv2.blur(img, (5,5))
gaussian  = cv2.GaussianBlur(img, (5,5), 0)
median    = cv2.medianBlur(img, 5)
bilateral = cv2.bilateralFilter(img, 9, 75, 75)

边缘检测

edges = cv2.Canny(gray, 50, 150)

形态学操作

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
eroded  = cv2.erode(th, kernel, iterations=1)
dilated = cv2.dilate(th, kernel, iterations=1)
opened  = cv2.morphologyEx(th, cv2.MORPH_OPEN, kernel)

轮廓检测

contours, _ = cv2.findContours(th, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0,255,0), 2)

几何变换

resized = cv2.resize(img, (320,240))
M       = cv2.getRotationMatrix2D((cx,cy), 45, 1.0)
rotated = cv2.warpAffine(img, M, (w,h))

绘制函数

cv2.line(img, (0,0), (100,100), (255,0,0), 2)
cv2.rectangle(img, (50,50), (200,200), (0,255,0), 3)
cv2.circle(img, (300,300), 50, (0,0,255), -1)
cv2.putText(img, "OpenCV", (10,450),
            cv2.FONT_HERSHEY_SIMPLEX, 1.2, (255,255,255), 2)

进阶技巧

ROI 与模板匹配

  • ROI(Region of Interest):图像切片
    roi = img[100:200, 150:300]
    
  • 模板匹配matchTemplate + minMaxLoc

特征检测(ORB/SIFT/SURF)

orb  = cv2.ORB_create()
kp, des = orb.detectAndCompute(gray, None)
img2 = cv2.drawKeypoints(img, kp, None)

摄像头标定与透视变换

  • 相机标定calibrateCamera
  • 畸变校正undistort
  • 透视变换getPerspectiveTransform + warpPerspective

常见问题与解决方案

  1. 安装后 ImportError: libGL.so.1
    • Ubuntu:sudo apt install -y libgl1-mesa-glx
  2. CMake 找不到 OpenCV
    • 检查 OPENCV_DIR 环境变量或 CMake 中的 OpenCV_DIR 指定路径
  3. 编译速度慢
    • Linux/macOS:make -j$(nproc);Windows 在 CMake GUI 中增加并行构建
  4. Python 版本不兼容
    • 使用虚拟环境隔离不同 Python 版本

总结与建议

本文全面介绍了从环境依赖、安装配置,到 OpenCV 基本语法与常用方法的使用。建议你在学习过程中结合实际项目,不断实践:

  • 尝试不同滤波器与阈值方法,掌握参数调优
  • 利用视频处理接口,实现实时检测或识别
  • 深入探索贡献模块(opencv_contrib),如人脸识别、深度学习模块

祝你在计算机视觉的道路上不断精进,早日实现从“入门”到“精通”!

文末粉丝专属福利


👉 更多信息:有任何疑问或者需要进一步探讨的内容,欢迎点击文末名片获取更多信息。我是猫头虎,期待与您的交流! 🦉💬

¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥88/月¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

粉丝福利 GO ! GO ! Go !
cursor随便用!
GPT4.5和GPT4.1 粉丝特享 88园子/🈷️

万粉变现入口:https://gitcode.com/qq_44866828/CSDNWF
AI编程工具特惠入口:https://yeka.ai/i/CHATVIP
GPT4.5/GPT4.1 粉丝特享 88园子/🈷️


¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥88/月¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

联系我与版权声明 📩

  • 联系方式
    • 猫头虎微信号: Libin9iOak
    • 万粉变现经纪人微信号:CSDNWF
    • 公众号: 猫头虎技术团队
  • 版权声明
    本文为原创文章,版权归作者所有。未经许可,禁止转载。更多内容请访问猫头虎的博客首页

点击✨⬇️下方名片⬇️✨,加入猫头虎AI共创社群,交流AI新时代变现的无限可能。一起探索科技的未来,共同成长。🚀

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫头虎

一分也是爱,打赏博主成就未来!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值