Opencv 图像数字化 Mat
灰度图像数字化
灰度图像的位深度为8位,图像中的每一个像素点灰度的深浅由256个数字来衡量,所以灰度图在计算机面前就是一个单通道数字矩阵。通过设置imread函数中的flag参数为IMREAD_GRAYSCALE即可将灰度图转化为Mat
# include <opencv2\core\core.hpp>
# include <opencv2\highgui\highgui.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
// ## 灰度图像转化为Mat:使用imread
//输入图像矩阵
Mat img = imread("C:/users/76973/desktop/output_image1.jpg",IMREAD_GRAYSCALE);
if (img.empty())
return -1;
//定义显示原图的窗口
string winname = "原图";
namedWindow(winname);
imshow(winname, img);
waitKey(0);
}
彩色图像数字化
彩色图像每个像素点可以看作一个三行一列类型为uchar的单位向量,即Vec3b.
RGB彩色图片每个通道为8位图,所以一共是24位。通过设置imread函数中的flag参数为IMREAD_COLOR即可将彩色图转化为Mat
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
//输入图像矩阵
Mat img = imread("C:/users/76973/desktop/compressedpicture.jpg", IMREAD_COLOR);
if (img.empty())
return -1;
//显示彩色图像
imshow("BGR", img);
vector<Mat> planes;
split(img, planes);
//显示B通道
imshow("B", planes[0]);
//显示G通道
imshow("G", planes[1]);
//显示R通道
imshow("R", planes[2]);
waitKey(0);
}