像素是图像构成的基本单位,像素处理是图像处理的基本操作,可以通过位置索引的形式对图像内的元素进行访问、处理。
二值图像: 是一种特殊的灰度图像,在OPENCV中,将黑定义为0,255定义为白。 在OPENCV中,二值图像/灰度图像以二维数组形式进行存放彩色图像以三维数组形式进行存放(X*Y*3, 通道存放顺序为BGR,X,Y为图像x,y轴向上的像素点个数)。
为了方便理解,我们首先来生成一个8×8大小的数组,用来模拟一个黑色图像,并对其进行简单处理。
【例1】使用OpenCV库来创建一个8x8的黑色图像,所有元素的值都是0,然后修改其中一个像素点的值,并显示修改后的图像。根据题目要求及分析,编写代码如下:
#include <iostream>
#include <opencv2/opencv.hpp>
int main() {
cv::Mat img = cv::Mat::zeros(8, 8, CV_8UC1);
std::cout << "img=\n" << img << std::endl;
cv::imshow("one", img);
std::cout << "读取像素点img[0,3]=" << img.at<uchar>(0, 3) << std::endl;
img.at<uchar>(0, 3) = 255;
std::cout << "修改后img=\n" << img << std::endl;
std::cout << "读取修改后像素点img[0,3]=" << img.at<uchar>(0, 3) << std::endl;
cv::imshow("two", img);
cv::waitKey();
cv::destroyAllWindows();
return 0;
}
代码分析如下。