Lab1-1 OpenCV入门与实践——从基础操作到实时视频处理(一)
参考自同济大学蒋磊老师编写的IPMV实验说明
同济大学自动化专业IMPV课程学习记录 (包含知识点以及实验)
Lab0 实验环境准备与OpenCV Hello World
Lab1-1 OpenCV入门与实践——从基础操作到实时视频处理(一)
Lab1-2 OpenCV入门与实践——从基础操作到实时视频处理(二)
Lab2-1 从零玩转Eigen库:掌握线性代数与OpenCV互操作的神器!(一)
Lab2-2 从零玩转Eigen库:掌握线性代数与OpenCV互操作的神器!(二)
Lab4 Blending 线性混合与拉普拉斯金字塔混合对比
…
待更新
文章目录
引言:OpenCV(Open Source Computer Vision Library)是一个功能强大的计算机视觉库,广泛应用于图像处理、视频分析、机器学习等领域。本文将带你从OpenCV的基础操作入手,逐步实现实时视频处理,帮助你快速掌握OpenCV的核心功能。
0 任务
- 基础OpenCV操作
- 创建和操作图像数组(
Mat
) - 读取和显示图像(
imread
、imshow
) - 保存图像(
imwrite
) - 绘图和文本添加(
line
、circle
、putText
)
- 创建和操作图像数组(
- 实时视频处理
- 配置虚拟机以使用摄像头
- 获取并显示实时视频流
- 添加实时处理功能(如灰度转换、边缘检测等)
1 基础OpenCV操作
1.1 创建图像数组(Mat
)
Mat
是 OpenCV 中用于存储图像和矩阵的核心数据结构。通过Mat
,我们可以创建、操作和保存图像。
基本用法:
cv::Mat (int rows, int cols, int type, const Scalar &s);
- rows:图像的行数(高度)
- cols:图像的列数(宽度)
- type:图像的数据类型(如CV_8UC3表示8位无符号3通道图像)
- Scalar(color):初始化颜色(BGR格式)
示例:
// 创建一个320x240的绿色图像
cv::Mat image(240, 320, CV_8UC3, cv::Scalar(0, 255, 0));
参数说明
参数顺序 | 参数示例 | 含义 |
---|---|---|
1 | 240 | 图像高度 240 px |
2 | 320 | 图像宽度 320 px |
3 | CV_8UC3 | 8位无符号3通道图像 |
4 | cv::Scalar(0, 255, 0) | B = 0, G = 255, R = 0 |
初始颜色为绿色 |
1.2 显示图像(imshow
)
imshow
用于在窗口中显示图像。
基本用法:
cv::imshow("窗口名称", image);
- 窗口名称:显示窗口的标题
- image:要显示的图像数组
任务
创建一个320x240的绿色图像,并在窗口中显示它。
如果你还不太熟悉如何创建OpenCV项目、编写CMakeLists.txt文件(用于编译控制)以及在VSCode中使用CMake,可以参考
Lab0 中的环境验证部分
下面直接给出了该任务main.cpp
的示例:
#include "opencv2/opencv.hpp"
int main(){
cv::Mat image(320, 240, CV_8UC3, cv::Scalar(0,255,0));
cv