图像处理之生成ColorBar

图像处理之生成ColorBar,第1张

图像处理之生成ColorBar

1 colorBar介绍

colorBar主要是指一些图像处理中使用的常见纯色或者渐变色条。


colorBar用途可作为测试样图来验证某些图像算法的效果,从而避免图像内容或者硬件对图像的干扰,使图像算法能够达到预期效果。


colorBar常见类型如下:

(1) 纯色图像

(2) 水平4条彩色条纹

(3) 垂直4条彩色条纹

(4) 垂直8条彩色条纹

(5) 纯色背景上纯色目标

2 colorBar生成实现源码(以渐变条为例)

 /*
文件: ColorBar.h
功能: 绘制颜色渐变的条形Bar
*/
enum {GRAY=,RED=,GREEN=,BLUE=};
class CColorBar
{
public:
CColorBar();
virtual ~CColorBar();
void SetColorMode(int mode);
void DrawColorBar(CRect &client,CClientDC &dc);
private:
UINT m_mode;
};
 /*
文件: ColorBar.cpp
功能: 绘制颜色渐变的条形Bar
*/
CColorBar::CColorBar()
{
m_mode=GRAY;
} CColorBar::~CColorBar()
{ } void CColorBar::SetColorMode(int mode)
{
m_mode=mode;
} void CColorBar::DrawColorBar(CRect &client,CClientDC &dc)
{
CRect m_tab;
int N=;
COLORREF rgb;
double dh=(double) client.Height()/N;
CBrush *pBrush=NULL;
dc.Rectangle(client);
for(int i=;i<N;i++)
{
m_tab.left =client.left;
m_tab.right =client.right;
m_tab.bottom =client.bottom -i*dh;
m_tab.top =m_tab.bottom -dh; switch(m_mode)
{
case GRAY:
rgb=RGB(i,i,i);
break;
case RED:
rgb=RGB(i,,,);
break;
case GREEN:
rgb=RGB(,i,);
break;
case BLUE:
rgb=RGB(,,i);
break;
default:
break;
} pBrush=new CBrush(rgb);
dc.FillRect(m_tab,pBrush); } delete pBrush;
pBrush=NULL;
}
 CColorBar bar;
CClientDC dc(this);
CRect m_bar(,,,);
bar.SetColorMode(RED);
bar.DrawColorBar(m_bar,dc);

运行后输出如下:

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/586560.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存