本系列代码托管于:https://github.com/chintsan-code/opencv4-tutorials
本篇使用的项目为:color_style_lut
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, const char** argv) {
Mat src = imread("../sample/flower.png");
if (src.empty()) {
cout << "could not load image..." << endl;
return -1;
}
namedWindow("input", WINDOW_AUTOSIZE);
imshow("input", src);
Mat color = imread("D:/images/lut.png");
Mat lut = Mat::zeros(256, 1, CV_8UC3);
for (int i = 0; i < 256; i++) {
lut.at<Vec3b>(i, 0) = color.at<Vec3b>(10, i);
}
imshow("color", color);
Mat dst;
LUT(src, lut, dst);
imshow("lut-demo", dst);
applyColorMap(src, dst, COLORMAP_OCEAN);
imshow("color-map", dst);
waitKey(0);
destroyAllWindows();
return 0;
}
LUT:使用查找表look-up对图像做变换,LUT:look-up table
void LUT(InputArray src, InputArray lut, OutputArray dst);
- src:输入,8-bit
- lut:查找表,256个映射。可以为单通道或与src相同的通道,如果为单通道,则src所有通道都会应用同一个lut
- dst:输出,与src具有相同的尺寸和通道,与lut具有相同的深度
applyColorMap:使用现成的映射表。即LUT函数中的参数lut是现成的
void applyColorMap(InputArray src, OutputArray dst, int colormap);
- src:输入图像,类型只能为CV_8UC1或CV_8UC3
- dst:输出图像
- colormap:系统提供的映射表,例如:
- COLORMAP_AUTUMN
- COLORMAP_RAINBOW
- COLORMAP_OCEAN
- ……
评论 (0)