c++灰度图像线性拉伸
时间: 2023-07-19 09:05:59 浏览: 118
线性拉伸是一种常见的图像增强方法,可以通过扩展图像的灰度范围来提高图像的对比度和清晰度。以下是使用C++实现灰度图像线性拉伸的示例代码:
```c++
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv)
{
// 读取灰度图像
Mat img = imread("lena.jpg", IMREAD_GRAYSCALE);
// 计算最小和最大灰度值
double minVal, maxVal;
minMaxLoc(img, &minVal, &maxVal);
// 线性拉伸
Mat stretchedImg = (img - minVal) * 255 / (maxVal - minVal);
// 显示原图和拉伸后的图像
namedWindow("Original Image", WINDOW_NORMAL);
namedWindow("Stretched Image", WINDOW_NORMAL);
imshow("Original Image", img);
imshow("Stretched Image", stretchedImg);
waitKey(0);
return 0;
}
```
在上述示例代码中,我们首先读取了一张灰度图像,并使用`minMaxLoc`函数计算了图像的最小和最大灰度值。然后,我们通过将图像中每个像素的灰度值减去最小灰度值并乘以255除以最大灰度值与最小灰度值的差来进行线性拉伸。最后,我们使用OpenCV的`imshow`函数显示原始图像和拉伸后的图像。
需要注意的是,如果图像的最小灰度值等于最大灰度值,则无法进行线性拉伸,因为分母为零。在这种情况下,可以将图像的所有像素设置为相同的灰度值,或者使用其他的图像增强方法。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)