1. OpenCV图像处理核心函数深度解析
在计算机视觉和图像处理领域,OpenCV作为开源计算机视觉库,提供了丰富的图像处理功能。本文将基于RK3568硬件平台,深入剖析OpenCV中几个关键图像处理函数的使用方法和实际应用场景。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 颜色空间转换:cvtColor函数详解
2.1 函数基础与参数解析
cvtColor函数是OpenCV中进行颜色空间转换的核心函数,其基本语法如下:
cpp复制void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0);
- src:输入图像矩阵,可以是8位无符号、16位无符号或单精度浮点型
- dst:输出图像矩阵,大小和深度与输入图像相同
- code:颜色空间转换代码,决定了转换的类型
- dstCn:可选参数,指定输出图像的通道数,0表示自动确定
在实际项目中,我经常使用这个函数进行BGR到灰度的转换,特别是在处理摄像头采集的图像时,这个转换可以显著减少后续处理的计算量。
2.2 常见颜色空间转换类型
OpenCV支持多种颜色空间转换,以下是几种最常用的转换类型:
-
BGR↔灰度转换:
COLOR_BGR2GRAY:将BGR彩色图像转换为灰度图像COLOR_RGB2GRAY:将RGB彩色图像转换为灰度图像
-
BGR↔HSV转换:
COLOR_BGR2HSV:将BGR图像转换为HSV颜色空间COLOR_HSV2BGR:将HSV图像转换回BGR颜色空间
-
BGR↔其他颜色空间:
COLOR_BGR2YCrCb:BGR到YCrCb颜色空间转换COLOR_BGR2Lab:BGR到Lab颜色空间转换COLOR_BGR2Luv:BGR到Luv颜色空间转换
注意事项:在进行颜色空间转换时,输入图像的数据类型和范围非常重要。例如,HSV颜色空间的H通道通常使用0-180的范围表示,而S和V通道使用0-255。
2.3 实际应用示例
下面是一个完整的BGR到灰度转换的代码示例:
cpp复制#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
// 读取原始图像
Mat imgOriginal = imread("input.jpg");
// 定位显示区域(假设已实现locateDisplayRegion函数)
Rect displayRect = locateDisplayRegion(imgOriginal);
// 提取显示区域
Mat displayRegionColor = imgOriginal(displayRect);
// 转换为灰度图像
Mat gray;
