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 }