2. OpenCV基础与环境搭建:OpenCV简介、安装配置(Windows/Mac/Linux)、第一个OpenCV程序(读取与显示图像)
好,咱们正式开始动手了。
这一章,说白了就是“磨刀不误砍柴工”。我见过太多同学,一上来就急着跑代码,结果环境没配好,报错报得怀疑人生。我自己刚入行那会儿,也干过这种蠢事——花了一整天在Mac上编译OpenCV,最后发现一个命令就能搞定。嗯,今天咱们就把这些坑都填平。
2.1 OpenCV是什么?
OpenCV,全称Open Source Computer Vision Library。翻译过来就是“开源计算机视觉库”。
它不是一个软件,而是一个工具包。里面装满了各种图像处理、视频分析、机器学习相关的函数。你想想看,如果让你从零开始写一个“人脸检测”算法,那得写多少行代码?但用OpenCV,几行就搞定。
我个人的习惯是,把它理解成“图像世界的瑞士军刀”。
核心特点:
- 跨平台:Windows、Mac、Linux、Android、iOS,全都能跑
- 多语言支持:C++、Python、Java、MATLAB……我推荐你用Python,上手最快
- 模块化设计:核心模块、图像处理、视频分析、特征检测、深度学习……各管各的
- 开源免费:BSD许可证,商用也没问题
为什么选OpenCV?说白了,就是社区大、资料多、坑少。你遇到的大部分问题,StackOverflow上早就有人问过了。
2.2 安装配置:别怕,真的很简单
我建议你用Python + pip的方式安装。这是目前最省心的方案。
2.2.1 Windows环境
Windows下安装,其实就三步:
- 安装Python(建议3.8以上版本)
- 打开命令提示符(cmd)
- 输入命令:
pip install opencv-python
等进度条跑完,就装好了。是不是很简单?
小提示:如果你需要用到OpenCV的额外模块(比如特征匹配、人脸识别等),可以装opencv-contrib-python。我一般直接装这个,省得后面缺东西。
2.2.2 Mac环境
Mac用户注意了,这里有个坑。我曾经在Mac上折腾了一下午,最后发现是Homebrew的问题。
正确的做法是:
- 确保你已经安装了Python和pip
- 终端里直接运行:
pip3 install opencv-python
避坑指南:我曾经试过用Homebrew安装OpenCV,结果版本冲突,搞得我整个Python环境都崩了。后来我学乖了——直接用pip,干净又省心。
2.2.3 Linux环境(以Ubuntu为例)
Linux下有两种方式:
- 方式一(推荐):
pip install opencv-python - 方式二:
sudo apt-get install python3-opencv
我个人更推荐方式一。为什么?因为apt-get安装的版本通常比较旧,而pip能拿到最新的。
2.3 验证安装:看看是不是真的装好了
装完之后,咱们得验证一下。打开你的Python环境(终端、IDLE、或者VS Code都行),输入:
import cv2
print(cv2.__version__)
如果输出了类似 4.8.0 这样的版本号,恭喜你,环境搭好了!
如果报错 ModuleNotFoundError: No module named 'cv2',别慌。检查一下:
- 你是不是在正确的Python环境里?
- pip安装的时候有没有报红?
- 试试重启一下终端或者IDE
2.4 第一个OpenCV程序:读取与显示图像
好,环境搭好了,咱们来写第一个程序。这个程序很简单:读取一张图片,然后在窗口里显示出来。
import cv2
# 读取图像
img = cv2.imread('lena.jpg')
# 显示图像
cv2.imshow('My First Image', img)
# 等待按键
cv2.waitKey(0)
# 关闭所有窗口
cv2.destroyAllWindows()
这段代码干了四件事:
- 读取:
cv2.imread()把图片从硬盘读到内存里 - 显示:
cv2.imshow()创建一个窗口,把图片放进去 - 等待:
cv2.waitKey(0)让程序停住,等你按键盘 - 清理:
cv2.destroyAllWindows()关掉窗口,释放资源
注意:如果你运行后窗口一闪而过,那多半是忘了加 cv2.waitKey(0)。这个函数的作用就是“等用户按键”。参数0表示无限等待,直到你按下任意键。
2.5 知识体系结构图
下面这张图,帮你理清本章的核心逻辑:
2.6 常见问题与避坑
我整理了几个新手最容易踩的坑,你记一下:
| 问题 | 原因 | 解决方案 |
|---|---|---|
| import cv2 报错 | 没安装,或者装错了环境 | 检查pip list,确认在正确的Python环境里 |
| 图片路径不对 | imread()找不到文件 | 用绝对路径,或者把图片放在代码同目录下 |
| 窗口一闪而过 | 忘了加waitKey() | 加上 cv2.waitKey(0) |
| 图片显示出来是None | 图片损坏或者格式不支持 | 换一张标准jpg图片试试 |
我曾经踩过的坑:有一次我死活读不出图片,检查了半天,发现是文件名写错了——我把 lena.jpg 写成了 lena.jpeg,而实际文件是 .jpg 后缀。嗯,这种低级错误,谁还没犯过呢?
2.7 小结
这一章咱们干了三件事:
- 搞清楚了OpenCV是什么——一个强大的计算机视觉工具包
- 把环境搭好了——Windows、Mac、Linux,总有一款适合你
- 跑通了第一个程序——读取并显示一张图片
别小看这个“显示图片”的程序。你想想看,后面所有的深度感知技术,什么目标检测、人脸识别、姿态估计……它们的起点,都是这一行 cv2.imread()。
好了,环境搭好了,代码跑通了。接下来咱们就可以真正开始玩深度感知了。
公众号:蓝海资料掘金营,微信deep3321