c语言灰度函数 灰度开运算( 二 )


pWork=pImage;
for ( i=0;inHeight;i++ )
{
for ( j=0;jnWidth;j++,pWork++ )
{
uWork=(unsigned int)(*pWork);
fHisto[uWork]++;
}
}
uWork=nWidth*nHeight;
for ( i=0;i256;i++ )
{
fHisto[i]/=uWork;
fHisto[i]*=100;
}
}
void Enhance(unsigned char *pImage,unsigned char *pImage1,int nWidth,int nHeight,float fHisto[256],float fHisto1[256])
{
int i,j;
unsigned int uWork;
unsigned char *pWork,*pWork1;
for ( i=0;i256;i++ )
fHisto1[i]=fHisto[i]/100;
for ( i=1;i256;i++ )
fHisto1[i]+=fHisto1[i-1];
for ( i=0;i256;i++ )
lut[i]=fHisto1[i]*256;
for ( i=0;i256;i++ )
if ( lut[i]=256 )
lut[i]=255;
pWork=pImage; pWork1=pImage1;
for ( i=0;inHeight;i++ )
for ( j=0;jnWidth;j++,pWork++,pWork1++ )
(*pWork1)=lut[(*pWork)];
}
求个大神帮写一个C语言RGB565转换为灰度图像的算法 。最多只能给你写个rgb565像素转灰度像素的 。
不知道你图像是什么格式,如何保存,以及各种其他什么什么信息 。
所以图像那边的循环就你自己去搞定了,我只给你搞单个像素
#define rgb565togray(x) \
(unsigned char) ( \
((val)11) * 0.3 + \
(((val)5)0x3f) * 0.59 + \
((val)0x1f) * 0.11 \
)
C语言 将bmp图像根据输入阀值改变灰度的程序输出的图像上下颠倒,求纠错!bmp格式的图像一般是倒着存放的,所以你处理的图像也应该遵循这一点,从最后一行向上一行一行地处理,倒着生成可显示的图像 。
怎么用opencv获取图像灰度值(用C语言)?1、可以变成灰度图也可以不变 。这里假设你的图像都是IPL_DEPTH_8U类型 。
2、如果变成灰度图,就是单通道图像 , 获取的就是每一个像素点的灰度值 。
IplImage* img = cvLoadImage("test.bmp", 0);
for (int i = 0; iimg-height; i++)
{
for (int j = 0; jimg-width; j++)
{
//方法一:使用cvGet2D()函数间接访问
CvScalar s = cvGet2D(img, i, j); //其中i代表y轴(第i行),即height;j代表x轴(第j列) , 即width 。
printf("gray value=https://www.04ip.com/post/%f/n",s.val[0]);
//方法二:使用直接访问
uchar val = ((uchar *)(img-imageData + i*img-widthStep))[j]; //i和j的意义同上
printf("gray value=https://www.04ip.com/post/%d/n",val);
}
}
3、如果不变成灰度图,就是3通道图像 , 获取的就是每一个像素点的BGR值,然后分别获取B值,G值和R值 。
IplImage* img = cvLoadImage("test.bmp", 1);
for (int i = 0; iimg-height; i++)
{
for (int j = 0; jimg-width; j++)
{
//方法一:使用cvGet2D()函数间接访问
CvScalar s=cvGet2D(img,i,j); //其中i代表y轴(第i行),即height;j代表x轴(第j列),即width 。
printf("B=%f, G=%f, R=%f\n",s.val[0],s.val[1],s.val[2]); //注意是BGR顺序
//方法二:使用直接访问
int bVal = ((uchar *)(img-imageData + i*img-widthStep))[j*img-nChannels + 0]; // B
int gVal = ((uchar *)(img-imageData + i*img-widthStep))[j*img-nChannels + 1]; // G
int rVal = ((uchar *)(img-imageData + i*img-widthStep))[j*img-nChannels + 2]; // R
printf("B=%d, G=%d, R=%d\n",bVal,gVal,rVal);//注意是BGR顺序
}
}
c语言灰度函数的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于灰度开运算、c语言灰度函数的信息别忘了在本站进行查找喔 。

推荐阅读