图像修复-RGB图像通道分离和合并

cv::Mat image_array =imread("path");  //读入目标图像
cv::imshow("1", image_array);//显示原始图像
image_array.convertTo(image_array, CV_32FC3);//原始图像转为32位浮点类型
cv::normalize(image_array, image_array, 0, 1, cv::NORM_MINMAX, CV_32FC3);
//进行归一化

cv::Mat output_array;//用来存储目的图片的矩阵

cv::Mat r(image_array.rows, image_array.cols, CV_32FC1); //R通道
cv::Mat g(image_array.rows, image_array.cols, CV_32FC1);//G通道
cv::Mat b(image_array.rows, image_array.cols, CV_32FC1);//B通道

vector<Mat> out = { b,g,r };

split(image_array, out); //将图像进行三通道的分离
//OpenCV中,一张3通道图像的一个像素点是按BGR的顺序存储的
//然后对rgb三个通道分别做不同的运算
merge(out, output_array);//通道合并
cv::imshow("3", output_array);

  

posted @ 2021-02-02 00:08  司砚章  阅读(334)  评论(0)    收藏  举报