1 #include <iostream>
2 #include <opencv.hpp>
3
4 using namespace cv; 5
6 int main() 7 { 8 Mat img = imread("1.jpg", 0); 9 Mat img2; 10
11 // 将256缩减为0到25 共26位数字
12 uchar table[256]; 13 for (int i = 0; i < 256; i++) 14 table[i] = 10 * (i / 10); 15
16 // 将lookUpTable的数据地址(data) 赋给指针p
17 Mat lookUpTable(1, 256, CV_8U); 18 uchar *p = lookUpTable.data; 19
20 // 利用循环使p指向的数据地址内的数据与Table元素内的数据相同
21 for (int i = 0; i < 256; i++) 22 p[i] = table[i]; 23
24 /*
25 也可以这样写 26 这样写就可以不需要table数组以及对table数组赋值的循环了 27 for (int i = 0; i < 256; i++) 28 p[i] = 10 * (i / 10); 29 */
30
31 // 参数1: 输入图像(源图像) 32 // 参数2: 输入图像(用做数据映射) 33 // 参数3: 输出图像(结果图像)
34 LUT(img, lookUpTable, img2); 35
36 imshow("img", img); 37 imshow("img2", img2); 38
39 waitKey(0); 40 return 0; 41 }