个人资料,仅供学习使用
学习课程:OpenCV4 C++ 快速入门视频30讲——贾志刚
04 图像像素的读写操作
opencv知识点:
- 获取/改变图像的某个像素 - Mat::at
- 图像像素 - 数组遍历
- 图像像素 - 指针遍历
本课所解决的问题:
- 如何获取/改变图像的某个像素?
- 如何利用数组遍历图像像素?
- 如何利用指针遍历图像像素?
1.获取某个像素
我们获取/改变图像的某个像素,要用到Mat::at< >( )
image.at<uchar>(row, col);
/*
获取指定位置的像素值
这里只是at方法的一种演示,一共6种传参方式,具体可查看文档
说明:
at<>中必须标明矩阵的数据类型,一般图像是uchar(8位无符号整型)类型
这里我们采用二维度坐标的方式传参
*/
2.图像像素的数组遍历
为了演示图像像素遍历,我们在遍历的同时进行一个反色处理
//函数定义
void pixel_visit_demo(Mat& image);
//函数实现
void QuickDemo::pixel_visit_demo(Mat& image) {
int h = image.rows;
int w = image.cols;
int dims = image.channels();
/*
灰度图像——通道为1
彩色图像——通道为3
*/
for(int row = 0; row < h; row++) {
for (int col = 0; col < w; col++) {
if (dims == 1) {