【问题标题】:C++ how to draw a tone curve (gamma) to graph using setpixel functionC ++如何使用setpixel函数绘制色调曲线(伽玛)以绘制图形
【发布时间】:2012-02-19 08:15:01
【问题描述】:

如标题所述。我正在尝试绘制伽马色调曲线,但我不知道该怎么做。我可以做线性色调曲线就好了,但是在绘制伽玛色调曲线时,我完全失去了它。引用自http://www.mediachance.com/pseam/help/curves.html(第一张或第二张图)

代码如下

#include <math.h>

static COLORREF red=RGB(255,0,0);
static COLORREF blue=RGB(0,0,255);
static COLORREF green=RGB(0,255,0);

绘制伽马色调曲线时我应该加入的部分

for(int y=0; y<bih.biHeight; y++)
            {                       
                for(int x=0; x<bih.biWidth; x++)
                {   
                SetPixel(hdc, x, bih.biHeight-x, red);
}

// The X axis of the graph

HPEN hLinePen1;
                COLORREF qLineColor1;
                qLineColor1 = RGB(255, 0, 0);
                hLinePen1 = CreatePen(PS_SOLID, 2, qLineColor1);
                hPenOld1 = (HPEN)SelectObject(hdc, hLinePen1);
                line(hdc,0, bih.biHeight, bih.biWidth, bih.biHeight);
                SelectObject(hdc, hPenOld1);
                DeleteObject(hLinePen1);
// The Y axis of the graph

                HPEN hLinePen2;
                COLORREF qLineColor2;
                qLineColor2 = RGB(255, 0, 0);
                hLinePen2 = CreatePen(PS_SOLID, 2, qLineColor2);
                hPenOld2 = (HPEN)SelectObject(hdc, hLinePen2);
                line(hdc,0, bih.biHeight, 0, bih.biWidth-bih.biHeight);
                SelectObject(hdc, hPenOld2);
                DeleteObject(hLinePen2);

【问题讨论】:

  • 你有“我可以做线性色调曲线就好了,但是当涉及到绘制伽马色调曲线”的代码或链接?

标签: c++ graph drawing pixel image


【解决方案1】:

绘制图表应该很简单。对于您拥有的每个 X 点,计算相应的 Y 值 - 在 Gamma 的情况下,范围为 0-255,即y = round(pow(x/255., gamma)*255)。然后从前一点到当前点画一条线。

【讨论】:

  • 嗨,马克,你有例子吗?另外,我一直在根据高度和宽度绘制带有 X 和 Y 轴的图形,我不知道 255 是从哪里来的。
  • 嗨,马克,我确实执行了里面的公式。不幸的是,它不起作用,但我知道这是公式,谢谢!
  • 我假设您想将 gamma 应用于 0 到 255 范围内的值,这在图像处理中很常见。另一种常见的可能性是 0 到 1 的范围,该公式为 y = round(pow(x, gamma) * height)
  • 我不知道原因,但它不起作用。对于线性图,它有效。这已经困扰我一整天了
  • 终于成功了!我不知道为什么它现在起作用了,我想我昨天实现算法太累了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2013-12-18
  • 2011-03-10
  • 1970-01-01
  • 2013-02-07
  • 1970-01-01
相关资源
最近更新 更多