图像处理之生成ColorBar

1 colorBar介绍

    colorBar主要是指一些图像处理中使用的常见纯色或者渐变色条。colorBar用途可作为测试样图来验证某些图像算法的效果,从而避免图像内容或者硬件对图像的干扰,使图像算法能够达到预期效果。colorBar常见类型如下:

    (1) 纯色图像

   

    (2) 水平4条彩色条纹

   

    (3) 垂直4条彩色条纹

   

    (4) 垂直8条彩色条纹

   

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

   

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

 1 /* 
 2 文件:  ColorBar.h 
 3 功能:  绘制颜色渐变的条形Bar 
 4 */  
 5 enum {GRAY=0,RED=1,GREEN=2,BLUE=3};  
 6 class CColorBar    
 7 {  
 8 public:  
 9     CColorBar();  
10     virtual ~CColorBar();  
11     void SetColorMode(int mode);  
12     void DrawColorBar(CRect &client,CClientDC &dc);  
13 private:  
14     UINT m_mode;  
15 };
 1 /* 
 2 文件:  ColorBar.cpp 
 3 功能:  绘制颜色渐变的条形Bar 
 4 */  
 5 CColorBar::CColorBar()  
 6 {  
 7     m_mode=GRAY;  
 8 }  
 9   
10 CColorBar::~CColorBar()  
11 {  
12   
13 }  
14   
15 void CColorBar::SetColorMode(int mode)  
16 {  
17     m_mode=mode;  
18 }  
19   
20 void CColorBar::DrawColorBar(CRect &client,CClientDC &dc)  
21 {  
22     CRect    m_tab;  
23     int      N=255;  
24     COLORREF rgb;  
25     double   dh=(double) client.Height()/N;  
26     CBrush *pBrush=NULL;      
27     dc.Rectangle(client);  
28     for(int i=0;i<N;i++)  
29     {  
30         m_tab.left =client.left;  
31         m_tab.right =client.right;  
32         m_tab.bottom =client.bottom -i*dh;  
33         m_tab.top =m_tab.bottom -dh;  
34           
35         switch(m_mode)  
36         {  
37         case GRAY:  
38             rgb=RGB(i,i,i);  
39             break;  
40         case RED:  
41             rgb=RGB(i,0,0,);  
42             break;  
43         case GREEN:  
44             rgb=RGB(0,i,0);  
45             break;  
46         case BLUE:  
47             rgb=RGB(0,0,i);  
48             break;  
49         default:  
50             break;  
51         }  
52           
53         pBrush=new CBrush(rgb);  
54         dc.FillRect(m_tab,pBrush);  
55   
56     }  
57   
58     delete pBrush;  
59     pBrush=NULL;  
60 }
1 CColorBar bar;  
2 CClientDC dc(this);  
3 CRect     m_bar(100,10,150,300);  
4 bar.SetColorMode(RED);  
5 bar.DrawColorBar(m_bar,dc);

       运行后输出如下:

      

  

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注