图像编程入门理论与操作

#include <iostream>
//核心功能模块
#include <opencv2/core.hpp>
// 读写图像和视频的函数以及一些用户交互函数模块
#include <opencv2/highgui.hpp>
// 包含主要的图像处理函数模块
#include <opencv2/imgproc.hpp>

using namespace std;

int main()
{
	// 创建一个空图像对象
	cv::Mat image;
	/*
	 * @param const cv:String 文件名称
	 * @param int flags 读入图像时转换成三通道彩色图像或灰度图
	 */
	image= cv::imread("test.bmp", cv::IMREAD_GRAYSCALE);
        // 等待按键
	cv::waitKey(0);

}

使用灰度图可以提高运行速度并减少内存使用。

cv::Mat类是用来存放图像和及其他矩阵数据的数据结构,它有两个必不可少的组成部分:一个头部和一个数据块。

OpenCV中使用cv::Point结构来表示像素的坐标,使用cv::Scalar结构表示图像的颜色值。

感兴趣区域:Region Of Interest,ROI

处理小矩阵使用模板类cv::Matx和它的子类,例:

cv::Matx33d matrix(3.0, 2.0, 1.0,
                   2.0, 1.0, 3.0,
                   1.0, 2.0, 3.0);

开始索引到结束索引的连续序列可以用cv::Range结构来表示这个概念,矩形区域使用cv::Rect,深层次复制可以使用cv::Mat对象的copyTo方法或clone方法。

OpenCV用像素值来创建图像,例如:CV_8U,CV_8UC3,CV_32U,CV_32S等等

椒盐噪声(salt-and-pepper noise)是一个专门的噪声类型,它随机选择一些像素,把它们的颜色替换成白色或黑色。