博客
关于我
OpenCV(1)读写图像
阅读量:800 次
发布时间:2023-02-23

本文共 947 字,大约阅读时间需要 3 分钟。

OpenCV中,图像是以矩阵形式存储为数字序列,图像中的每个点称为像素。每个像素可以存储一个或多个值。二进制图像仅包含黑、白、灰三色,因此每个像素只需一个值(0或1)。而彩色图像则可以存储三个值,通常是介于0到255之间的整数,或者在某些情况下是0到1之间的浮点数。

OpenCV中,矩阵由Mat类实现,用于存储图像和其他类型的矩阵。Mat不仅支持图像,还能存储任意大小的不同类型矩阵,并支持代数矩阵操作。矩阵在内存中按行和列顺序存储为数组或序列。

要访问BGR格式图像中的特定像素,可以使用以下公式:

Value = row * total_columns * color_channels + column + color_channel

学习如何读取和写入图像。首先需要包含必要的头文件:

#include 
#include

通过imread函数读取图像,默认情况下返回彩色图像。如果需要灰度图像,可以指定参数CV_LOAD_IMAGE_GRAYSCALEimwrite函数用于保存矩阵图像,默认保存在与源文件同一目录。

使用.cols.rows属性获取图像的列和行数。要获取特定像素,可以使用Mat::at方法。例如:

Vec3b pixel = color.at
(myRow, myCol);

显示图像时,可以使用imshow函数创建窗口。等待键盘输入可以使用waitKey(0)

在实际应用中,灰度图像和彩色图像处理方式略有不同。灰度图像直接使用像素值,而彩色图像需要分别处理红、绿、蓝三个通道。

通过OpenCV函数可以轻松获取一个像素的值。例如:

int myRow = color.rows - 1;int myCol = color.cols - 1;Vec3b pixel = color.at
(myRow, myCol);cout << "Pixel value (B,G,R):(" << pixel[0] << "," << pixel[1] << "," << pixel[2] << ")" << endl;

在实际应用中,可以灵活选择是否显示图像窗口,根据需求决定是否等待用户按键。

转载地址:http://pwpfk.baihongyu.com/

你可能感兴趣的文章
OpenCV与AI深度学习 | 使用YOLOv8做目标检测、实例分割和图像分类(包含实例操作代码)
查看>>
OpenCV与AI深度学习 | 使用单相机对已知物体进行3D位置估计
查看>>
OpenCV与AI深度学习 | 基于GAN的零缺陷样本产品表面缺陷检测
查看>>
OpenCV与AI深度学习 | 基于OpenCV和深度学习预测年龄和性别
查看>>
OpenCV与AI深度学习 | 基于Python和OpenCV将图像转为ASCII艺术效果
查看>>
OpenCV与AI深度学习 | 基于PyTorch实现Faster RCNN目标检测
查看>>
OpenCV与AI深度学习 | 基于PyTorch语义分割实现洪水识别(数据集 + 源码)
查看>>
OpenCV与AI深度学习 | 基于YOLO11的车体部件检测与分割
查看>>
OpenCV与AI深度学习 | 基于YOLOv8的停车对齐检测
查看>>
OpenCV与AI深度学习 | 基于机器视觉的磁瓦表面缺陷检测方案
查看>>
OpenCV与AI深度学习 | 实战 | 使用YoloV8实例分割识别猪的姿态(含数据集)
查看>>
Opencv中KNN背景分割器
查看>>
OpenCV中基于已知相机方向的透视变形
查看>>
opencv之namedWindow,imshow出现两个窗口
查看>>
opencv之模糊处理
查看>>
opencv保存图片路径包含中文乱码解决方案
查看>>
opencv图像分割2-GMM
查看>>
opencv图像分割3-分水岭方法
查看>>
OpenCV学习(13) 细化算法(1)(转)
查看>>
OpenCV探索
查看>>