知识点
Look Up Table(LUT)查找表
- applyColorMap(src, dst, COLORMAP)
- src 表示输入图像
- dst表示输出图像
- 匹配到的颜色LUT, OpenCV支持13种颜色风格的查找表映射
python代码
import cv2 as cv
src = cv.imread("C:/Users/qqxd/Desktop/opencvcode/images/test.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)
dst = cv.applyColorMap(src, cv.COLORMAP_COOL)
cv.imshow("output", dst)
# 伪色彩
image = cv.imread("C:/Users/qqxd/Desktop/opencvcode/images/canjian.jpg")
color_image = cv.applyColorMap(image, cv.COLORMAP_JET)
cv.imshow("image", image)
cv.imshow("color_image", color_image)
cv.waitKey(0)
cv.destroyAllWindows()
c++代码
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
void customColorMap(Mat &image);
int main(int argc, const char *argv[])
{
Mat src = imread("C:/Users/qqxd/Desktop/opencvcode/images/test.png");
if (src.empty())
{
printf("could not load image...\n");
return -1;
}
Mat gray, dst;
// 使用LUT
applyColorMap(src, dst, COLORMAP_SUMMER);
// 显示结果
imshow("colorMap", dst);
cvtColor(src, gray, COLOR_BGR2GRAY);
imshow("gray", gray);
customColorMap(gray);
waitKey(0);
return 0;
}
//可以自定义Lut查找表,这里是将图像二值化的作用
void customColorMap(Mat &image) {
int lut[256];
for (int i = 0; i < 256; i++) {
if (i < 127)
lut[i] = 0;
else
lut[i] = 255;
}
int h = image.rows;
int w = image.cols;
for (int row = 0; row < h; row++) {
for (int col = 0; col < w; col++) {
int pv = image.at<uchar>(row, col);
image.at<uchar>(row, col) = lut[pv];
}
}
imshow("lut demo", image);
}
运行结果如下: