OpenCV中LUT()函数使用

 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 }

 

posted @ 2017-08-22 21:30  木缘  阅读(3252)  评论(0)    收藏  举报