伪彩色处理
代码展示
#include<opencv2\opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("D:\\Images\\test2.png", 0);
imshow("原图", img);
Mat R = img.clone();
Mat G = img.clone();
Mat B = img.clone();
int rows = img.rows;
int cols = img.cols;
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
int current = img.at<uchar>(i, j);
if (0 < current && current <= 64)
{
R.at<uchar>(i, j) = 0;
G.at<uchar>(i, j) = 4 * current;
B.at<uchar>(i, j) = 255;
}
else if (64 < current && current <= 128)
{
R.at<uchar>(i, j) = 0;
G.at<uchar>(i, j) = 255;
B.at<uchar>(i, j) = (-4) * (current - 128);
}
else if (128 < current && current <= 192)
{
R.at<uchar>(i, j) = 4 * (current - 128);
G.at<uchar>(i, j) = 255;
B.at<uchar>(i, j) = 0;
}
else
{
R.at<uchar>(i, j) = 255;
G.at<uchar>(i, j) = (-4) * (current - 255);
B.at<uchar>(i, j) = 0;
}
}
}
Mat imgArray[3];
imgArray[0] = R;
imgArray[1] = G;
imgArray[2] = B;
Mat newImg;
merge(imgArray, 3, newImg);
imshow("效果图", newImg);
waitKey(0);
return 0;
}
效果展示