图像处理之生成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);
运行后输出如下: