您的位置:首页 > 其它

灰度图像增强(线性灰度增强)

2016-05-13 10:38 363 查看
#include <opencv2/opencv.hpp>

#include <iostream>

using namespace std;

using namespace cv;

void Tran_zeng(Mat &src,Mat &dst,uchar gMin,uchar gMax);

void Tran_zeng(Mat &src,Mat &dst,uchar gMin,uchar gMax)

{

dst=src.clone();
//得到原图像一份拷贝

uchar *p_data=dst.data;

int nWidth=src.cols;
//得到图像宽度

int nHeigth=src.rows;
//得到图像高度

int nLineByte=dst.cols;
//一行字节数

int nPixel;
//像素值

//逐个扫描图像中的像素点,进行灰度线性变换

for (int i=0;i<nHeigth;i++)
//行

{

for (int j=0;j<nWidth;j++)
//列

{

// 获取当前像素点的灰度值

nPixel = p_data[nLineByte * i + j];

//根据公式求出目标图像中与当前点对应的像素的灰度值

p_data[i * nLineByte + j] =(uchar)(((float)(gMax-gMin)/255)*nPixel+gMin);

}

}

}

int main()

{

Mat srcimg=imread("E:\\图片\\123.jpg");

imshow("原图",srcimg);

if (srcimg.channels()==1)

{

cout<<"加载图像正确"<<endl;

}

else

{

cout<<"彩色转灰度"<<endl;

cvtColor(srcimg,srcimg,CV_BGR2GRAY);

}

imshow("灰度图",srcimg);

Mat dstimg;

Tran_zeng(srcimg,dstimg,0,255);

imshow("增强图像",dstimg);

waitKey(0);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: