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);
}
posted @ 2019-09-29 16:25  消灭猕猴桃  阅读(133)  评论(0编辑  收藏  举报