【计算机视觉学习】OpenCV基础(一)简单的图像处理

前言

本文为本系列第一篇文章,涉及有关opencv中图像处理的基本概念及操作,用于快速入门。

像素与通道

基本概念

相比起人眼所看到的色彩斑斓的画面,在数理世界中,图像仅仅被表示为一个个矩阵。

矩阵的x-y坐标所表示位置对应的区域被称为像素,比如上图中橙色区域所示。

色彩是由不同颜色通道组合而成的。上图有三个颜色通道,分别是三原色红(pixel[2])、绿(pixel[1])、蓝(pixel[0])。

  • 对于黑白图像,仅需要一个通道,存储的是0/1值,所以也被称为二进制图像
  • 对于灰度图像,需要两个通道
  • 对于彩色图像,则需要三个通道

OpenCV相关实现

在Opencv中有一个矩阵(Matrix)类------Mat,它可用来表示任意类型和大小的矩阵。

  • cv::Mat::at<typenamet>(row,col)可用于获取单个像素。
    • 灰度图像的typenamet可使用任何数字格式
    • 彩色图像的typenamet对应Vec3b类(名称释义:向量,三个组件,一个字节)

图像灰度处理

示例代码

cpp 复制代码
#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
#include <string>
#include <sstream>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{
    Mat gray = imread("图片路径.jpg", IMREAD_GRAYSCALE);

    //此处默认在当前项目路径下生成一张名为Gray.jpg的灰度图片,也可自定义路径
    imwrite("Gray.jpg", gray);
    //用于展示图片的框体名字叫Gray pic
    imshow("Gray pic", gray);
    //等待用户按下按键后退出
    waitKey(0);
    return 0;
}

关于imread中的可选参数:

  • 上述代码中使用的IMREAD_GRAYSCALE将图像转为8位无符号的灰度图像
  • IMREAD_COLOR将图像转为8位无符号的彩色图像
  • IMREAD_UNCHANGED如果原图是16位/32位的,返回对应深度的图像;如果不是,返回8位图像

参考资料

  • 《Learn Opencv 4 by Building Projects Second Edition》David Millan Escriva等著
相关推荐
caoz8 小时前
AI的春节档
大数据·人工智能·深度学习·机器学习·计算机视觉
硅谷秋水8 小时前
用于机器人控制的因果世界建模
深度学习·机器学习·计算机视觉·语言模型·机器人
jay神13 小时前
基于 YOLOv11 的人脸表情识别系统
人工智能·深度学习·yolo·目标检测·计算机视觉
【赫兹威客】浩哥14 小时前
半导体芯片缺陷检测数据集分享及多版本YOLO模型训练验证
人工智能·计算机视觉·目标跟踪
向哆哆17 小时前
高压电线电力巡检六类目标的图像识别数据集分享(适用于目标检测任务)
人工智能·目标检测·计算机视觉
格林威18 小时前
Baumer相机橡胶O型圈直径测量:用于密封件入库检验的 6 个关键技术,附 OpenCV+Halcon 实战代码!
人工智能·opencv·计算机视觉·视觉检测·工业相机·智能相机·堡盟相机
格林威18 小时前
Baumer相机印刷标签二维码可读性评估:优化打码工艺的 7 个实用技巧,附 OpenCV+Halcon 实战代码!
人工智能·opencv·计算机视觉·视觉检测·工业相机·智能相机·堡盟相机
Lyan-X18 小时前
鲁鹏教授《计算机视觉与深度学习》课程笔记与思考 ——13. 生成模型 VAE:从无监督学习到显式密度估计的建模与实现
人工智能·笔记·深度学习·计算机视觉
向哆哆19 小时前
七种常见虫子的图像识别数据集分享(适用于目标检测任务)
人工智能·目标检测·计算机视觉
清风与日月19 小时前
OpenCV imgproc图像处理模块常用算子及示例
图像处理·opencv·计算机视觉