【OpenCV】基本数据类型及常见图像模式

是什么?能做什么?解决什么问题?为什么用它?

OpenCV:是一个基于开源发行的跨平台计算机视觉库,实现

一、应用场景:

  • 目标识别:人脸、车辆、车牌...
  • 自动驾驶
  • 医学影像分析
  • 视频内容理解与分析:文字识别、公众人物识别、物品分类...

二、opencv基本数据类型:

1. 点和向量类型
  • 二维点,如:
    • Point2i(或Point):整数坐标点(x, y)。
    • Point2f:浮点数坐标点。
    • Point2d:双精度坐标点。
  • 三维点,如:
    • Point3f:三维浮点数点(x, y, z)。
2. 标量类型(多通道值)
  • 多通道值,常用于表示颜色或像素值(顺序为BGR

** Scalar(a, b, c):**对于 BGR 图像,表示蓝色(B=a)、绿色(G=b)、红色(R=c)

Scalar green(0, 255, 0); // 绿色

  • 单通道值,使用ucharScalar(val)表示

Scalar(val) 所有通道赋值为val(如灰度图像)

uchar grayValue = 128; // 中灰度值

Scalar gray(128); // 等效表示

三、图像模式:

图像: 一些亮度各异的点

  • 位图模式:是1位二进制深度的图像,黑和白两种颜色
  • 灰度模式:1个通道
  • RGB模式:3个通道

(1)雪花屏:

Mat noise = cv::Mat::zeros(img.size(), CV_8UC1);

randu(noise, cv::Scalar::all(0), cv::Scalar::all(255));

  1. 第一个参数 (noise)

    • 这是一个输出参数,表示生成的随机数将存储在这个矩阵中。noise 是一个 cv::Mat 类型的变量,它预先定义了大小和类型(在这个例子中是 CV_8UC1,即8位无符号整型),用于存储生成的随机数。
  2. 第二个参数 (cv::Scalar::all(0))

    • 这是生成随机数的最小值。cv::Scalar::all 是一个方便的函数,用于创建一个所有元素都相同的 cv::Scalar 对象。这里它创建了一个所有元素都是0的 cv::Scalar 对象。
  3. 第三个参数 (cv::Scalar::all(255))

    • 这是生成随机数的最大值。同样使用 cv::Scalar::all 函数,创建了一个所有元素都是255的 cv::Scalar 对象。这意味着生成的随机数范围是从0到255。

(2)高斯模糊:

Mat gao_img;
GaussianBlur(img, gao_img, cv::Size(17,17), 0, 0);

参数说明

  • src:输入图像(源图像)
  • dst:输出图像(结果),必须与输入图像有相同的尺寸和类型
  • ksize :高斯核大小,例如 Size(5, 5),必须为奇数
  • sigmaX:X 方向的高斯核标准差
  • sigmaY:Y 方向的高斯核标准差(默认 0,表示与 sigmaX 相同)

(3)中值滤波:

cv::medianBlur(img, imgBack, 53);

参数说明:第三个参数必须为奇数

(4)毛玻璃:

Mat glass_img;

blur(img, glass_img, cv::Size(15, 15));

(5)灰度

cv::Mat gray;

cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY);

第三个参数:

  • COLOR_BGR2GRAY:BGR → 灰度图
  • COLOR_BGR2RGB:BGR → RGB
  • COLOR_BGR2HSV:BGR → HSV
  • COLOR_GRAY2BGR:灰度图 → BGR

(6)方向模糊

void bilateralFilter(InputArray src, OutputArray dst, int d,

double sigmaColor, double sigmaSpace, int borderType = BORDER_DEFAULT);
Mat direction_img;

cv::bilateralFilter(img, direction_img, 29, 75, 75); // 常用参数组合

参数:

  • src:输入图像(8 位或浮点型,单通道或三通道)。
  • dst:输出图像,与输入图像大小和类型相同。
  • d:滤波时使用的像素邻域直径。若为负数,则自动从 sigmaSpace 计算。
  • sigmaColor:颜色空间滤波器的标准差,值越大表示越远的颜色会被混合。
  • sigmaSpace:坐标空间滤波器的标准差,值越大表示越远的像素会相互影响。
  • borderType:边界处理方式,默认 BORDER_DEFAULT
相关推荐
文心快码BaiduComate6 小时前
百度云与光本位签署战略合作:用AI Agent 重构芯片研发流程
前端·人工智能·架构
风象南7 小时前
Claude Code这个隐藏技能,让我告别PPT焦虑
人工智能·后端
Mintopia8 小时前
OpenClaw 对软件行业产生的影响
人工智能
陈广亮8 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬8 小时前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia9 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区9 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两12 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
前端付豪12 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain