zoukankan      html  css  js  c++  java
  • 图像处理之生成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);

           运行后输出如下:

          

      

  • 相关阅读:
    HUD 1284 钱币兑换问题
    HUD 1284 钱币兑换问题
    HDU 1283 最简单的计算机
    HDU 1283 最简单的计算机
    商品搜索引擎---推荐系统设计
    Spark机器学习:TF-IDF实例讲解
    【读书笔记】Elasticsearch集成Hadoop最佳实践
    Java面试题集合
    Spring Boot企业微信点餐系统-第一章-课程介绍
    Eclipse下svn的创建分支/合并/切换使用
  • 原文地址:https://www.cnblogs.com/qiqibaby/p/8616418.html
Copyright © 2011-2022 走看看