opencv对锐化过后的图片进行颜色的调整
时间: 2024-05-08 10:21:44 浏览: 13
可以使用OpenCV中的cv::LUT函数进行颜色调整。该函数可以使用查找表(LUT)将图像像素的灰度值转换为新的颜色值。具体步骤如下:
1. 将RGB图像转换为灰度图像。
```
cv::Mat grayImg;
cv::cvtColor(srcImg, grayImg, cv::COLOR_BGR2GRAY);
```
2. 对灰度图像进行锐化处理,例如使用cv::filter2D函数。
```
cv::Mat sharpenedImg;
cv::Mat kernel = (cv::Mat_<float>(3,3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
cv::filter2D(grayImg, sharpenedImg, -1, kernel);
```
3. 创建一个256x1的查找表,每个灰度值对应一个新的颜色值。可以使用cv::Mat的构造函数创建一个256x1的矩阵,然后使用循环为每个灰度值赋值。
```
cv::Mat lut(256, 1, CV_8UC1);
for (int i = 0; i < 256; i++) {
lut.at<uchar>(i) = i + adjustment; // adjustment为颜色调整量
}
```
4. 使用cv::LUT函数将锐化后的图像应用查找表,得到最终的调整后的彩色图像。
```
cv::Mat adjustedImg;
cv::LUT(sharpenedImg, lut, adjustedImg);
```
注意:如果原始图像是彩色图像,可以跳过第1步的灰度转换,直接对彩色图像进行锐化和颜色调整。在第3步中,需要创建一个3x256的查找表,每个通道对应一个查找表。在第4步中,使用cv::split函数将彩色图像分离为3个通道,分别应用对应的查找表,然后使用cv::merge函数将3个通道合并为最终的图像。