使用cximage 做亮度调节 我搞了好久都是直接变化成灰度求指教

bubyday 2010-09-21 01:04:04
自己做了一个小程序 需要亮度调节 界面都好了
使用cximage 做亮度调节 我搞了好久都是直接变化程度求指教
void CImageProcessingDoc::OnProcessBrightness()
{
// TODO: 这里执行亮度变化
if (m_pImage) {
DlgBrightnessOption dlg;

if (dlg.DoModal() == IDOK) {
// write your own code
// for applying your effect, you must use m_pImage
// this code is a simple example for manufacturing image : grayscaling

int nPlusMinus = dlg.m_nPlusMinus;
BYTE byModifyValue = dlg.m_byModifyValue;

DWORD width = m_pImage->GetWidth();
DWORD height = m_pImage->GetHeight();
RGBQUAD color;
RGBQUAD newcolor;

for (DWORD y = 0; y < height; y++) {
for (DWORD x = 0; x < width; x++) {
color = m_pImage->GetPixelColor(x, y);

newcolor.rgbBlue = (BYTE)RGB2GRAY(color.rgbRed, color.rgbGreen, color.rgbBlue);
newcolor.rgbGreen = (BYTE)RGB2GRAY(color.rgbRed, color.rgbGreen, color.rgbBlue);
newcolor.rgbRed = (BYTE)RGB2GRAY(color.rgbRed, color.rgbGreen, color.rgbBlue);

m_pImage->SetPixelColor(x, y, newcolor);
}
}

// 这里调试
BYTE a = 255;
BYTE b = 1;
int c = 10;
BYTE r;

r = a + b;
r = a + c;
r = b + c;
}
}

CalculateHistogram();
UpdateAllViews(NULL);
}

需要全部文件的可以QQ联系:17831500
...全文
299 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bubyday 2010-10-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yzm888 的回复:]

newcolor.rgbBlue = color.rgbBlue*4/5;
newcolor.rgbGreen = color.rgbGreen*4/5;
newcolor.rgbRed = color.rgbRed*4/5;
[/Quote]

多谢多谢成功了!!!非常感谢。。。我的偶像
zgl7903 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 csucfl 的回复:]
楼上的,问个问题: 我一个像素RGB的转化为了HLS,然后想对S饱和度作调整,就这样
ColorHLSToRGB(H,L,S*dAjustValue)?可以吧,那么这个dAjustValue的取值范围该是什么呢(0到1)还是(1到255)?
[/Quote]
亮度是调整L, H,L,S的范围是0-240
你用Windows附件带的画图的颜色工具调一下看看就知道了
重复的昵称嘛 2010-09-25
  • 打赏
  • 举报
回复
楼上的,问个问题: 我一个像素RGB的转化为了HLS,然后想对S饱和度作调整,就这样
ColorHLSToRGB(H,L,S*dAjustValue)?可以吧,那么这个dAjustValue的取值范围该是什么呢(0到1)还是(1到255)?
zgl7903 2010-09-24
  • 打赏
  • 举报
回复
ColorRGBToHLS 把RGB色转到HLS空间
调节亮度后ColorHLSToRGB转到RGB空间

ColorRGBToHLS Function

ColorHLSToRGB Function
验证码识别 2010-09-23
  • 打赏
  • 举报
回复
newcolor.rgbBlue = color.rgbBlue*4/5;
newcolor.rgbGreen = color.rgbGreen*4/5;
newcolor.rgbRed = color.rgbRed*4/5;
bubyday 2010-09-21
  • 打赏
  • 举报
回复
能不能告诉我一下需要怎么修改一下子呢。。其实我对颜色编码不是很熟悉
验证码识别 2010-09-21
  • 打赏
  • 举报
回复
newcolor.rgbBlue = (BYTE)RGB2GRAY(color.rgbRed, color.rgbGreen, color.rgbBlue);
newcolor.rgbGreen = (BYTE)RGB2GRAY(color.rgbRed, color.rgbGreen, color.rgbBlue);
newcolor.rgbRed = (BYTE)RGB2GRAY(color.rgbRed, color.rgbGreen, color.rgbBlue);

r,g, b 都是一样的, 当然是灰度图了
bubyday 2010-09-21
  • 打赏
  • 举报
回复
跪求 希望高手帮忙

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧