一、图像的三种模式
在计算机看来,图像只是一些亮度各异的点,一副M*N的图片可以用M*N的矩阵来表示,矩阵的值表示这个位置上像素的亮度,他可以被表示为多种模式。
1.位图模式
位图模式是1位深度的图像。它只是黑和白两种颜色。它可以由扫描或置入黑色的矢量线条图像生成,也能由灰度模式转换而成。其他图像模式不能直接转换为位图模式。
2.灰度模式
灰度模式是8位深度的图像模式,在全黑和全白之间插有254个(2^8)灰度等级的颜色来描绘灰度模式的图像,所有模式的图像都能换成灰度模式。
3.RGB模式
RGB模式是数码图像中最重要的一个模式,它不是用数码而是用电平来描述的。扫描仪和数码相机都是捕捉RGB图像信息的。RGB模式是24位颜色深度。它共有三个通道,每个通道都有8位深度。三个通道合成一起可生成1677万种颜色,我们也称之为“真彩色”。
二、图片操作
以下都是在QT5.8.0操作的
头文件准备
#include <iostream>
#include <opencv2/opencv.hpp>//opencv的
using namespace std;
using namespace cv;//opencv的
1.读图片--imread
函数原型:
Mat cv::imread(char filename,int flag);
/*
参数1:图片路径名
参数2:cv::IMREAD_COLOR:读入一副彩色图像。图像的透明度会被忽略,
这是默认参数。--可以写成1
cv::IMREAD_GRAYSCALE:以灰度模式读入图像--可以写成0
cv::IMREAD_UNCHANGED:读入一幅图像,并且包括图像的 alpha 通道---可以写成-1
*/
返回值:Mat可以理解为一个存储数据的容器,定义了一个img对象来存图片的数据。
2.显示图片--imshow
imshow根据窗口名称显示图像到指定的窗口上去,
参数一:窗口名称,参数二:图片显示对象
下面是图片读取并显示的示例:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char *argv[])
{
Mat img=imread("C:/Users/15123/Pictures/Camera Roll/4.jpg",1);//路径不要有中文。
imshow("img",img);//参数一:界面标题,参数二:图片显示对象
waitKey(0);//等待按键0,加上这句,否则界只会一闪而过
return 0;
}
效果: