tempad
Readygo技术搜索引擎 >>PHP技术 >> 请做过数字图像处理的高手看过来!

请做过数字图像处理的高手看过来!

Readygo技术搜索引擎 网络搜索 efish 2008-1-14 16:14:10

请做过数字图像处理的高手看过来!

楼主yl_zhou(风中奇缘)2002-07-20 09:40:05 在 VC/MFC / 基础类 提问

谁有将rgb图像转化为hsv的源代码??  
  或者告知哪有下??  
  有急用,自己编的话太麻烦了,而且误差比较大。  
  请知道的不吝告知。谢了。  
  也可发我的邮箱:yinglizhou@sohu.com  
   
   
  问题点数:100、回复次数:6Top

1 楼chenybin(小马)回复于 2002-07-20 14:30:02 得分 0

UP好了  
  你可以去GOOGLE搜索一下  
  看看有什么启发没有Top

2 楼yl_zhou(风中奇缘)回复于 2002-07-20 14:32:53 得分 0

up到哪里了??  
  Top

3 楼romanticist(桃花岛主--杭州)回复于 2002-07-20 14:50:12 得分 100

The   code   is   from   XV.  
   
  #define   NOHUE   -1  
   
  /*   ====================================   */  
  void   rgb2hsv(int   r,int   g,int   b,double   *hr,double   *sr,double   *vr)  
  {  
      double   rd,   gd,   bd,   h,   s,   v,   max,   min,   del,   rc,   gc,   bc;  
   
      /*   convert   RGB   to   HSV   */  
      rd   =   r   /   255.0;                         /*   rd,gd,bd   range   0-1   instead   of   0-255   */  
      gd   =   g   /   255.0;  
      bd   =   b   /   255.0;  
   
      /*   compute   maximum   of   rd,gd,bd   */  
      if   (rd>=gd)   {   if   (rd>=bd)   max   =   rd;     else   max   =   bd;   }  
                    else   {   if   (gd>=bd)   max   =   gd;     else   max   =   bd;   }  
   
      /*   compute   minimum   of   rd,gd,bd   */  
      if   (rd<=gd)   {   if   (rd<=bd)   min   =   rd;     else   min   =   bd;   }  
                    else   {   if   (gd<=bd)   min   =   gd;     else   min   =   bd;   }  
   
      del   =   max   -   min;  
      v   =   max;  
      if   (max   !=   0.0)   s   =   (del)   /   max;  
                            else   s   =   0.0;  
   
      h   =   NOHUE;  
      if   (s   !=   0.0)   {  
          rc   =   (max   -   rd)   /   del;  
          gc   =   (max   -   gd)   /   del;  
          bc   =   (max   -   bd)   /   del;  
   
          if             (rd==max)   h   =   bc   -   gc;  
          else   if   (gd==max)   h   =   2   +   rc   -   bc;  
          else   if   (bd==max)   h   =   4   +   gc   -   rc;  
   
          h   =   h   *   60;  
          if   (h<0)   h   +=   360;  
      }  
   
      *hr   =   h;     *sr   =   s;     *vr   =   v;  
  }  
   
  /*   ====================================   */  
  void   hsv2rgb(double   h,double   s,double   v,int   *rr,int   *gr,int   *br)  
  {  
      int         j;  
      double   rd,   gd,   bd;  
      double   f,   p,   q,   t;  
   
      /*   convert   HSV   back   to   RGB   */  
      if   (h==NOHUE   ||   s==0.0)   {   rd   =   v;     gd   =   v;     bd   =   v;   }  
      else   {  
          if   (h==360.0)   h   =   0.0;  
          h   =   h   /   60.0;  
          j   =   (int)   floor(h);  
          f   =   h   -   j;  
          p   =   v   *   (1-s);  
          q   =   v   *   (1   -   (s*f));  
          t   =   v   *   (1   -   (s*(1   -   f)));  
   
          switch   (j)   {  
          case   0:     rd   =   v;     gd   =   t;     bd   =   p;     break;  
          case   1:     rd   =   q;     gd   =   v;     bd   =   p;     break;  
          case   2:     rd   =   p;     gd   =   v;     bd   =   t;     break;  
          case   3:     rd   =   p;     gd   =   q;     bd   =   v;     break;  
          case   4:     rd   =   t;     gd   =   p;     bd   =   v;     break;  
          case   5:     rd   =   v;     gd   =   p;     bd   =   q;     break;  
          default:   rd   =   v;     gd   =   t;     bd   =   p;     break;     /*   never   happen   */  
          }  
      }  
   
      *rr   =   (int)   floor((rd   *   255.0)   +   0.5);  
      *gr   =   (int)   floor((gd   *   255.0)   +   0.5);  
      *br   =   (int)   floor((bd   *   255.0)   +   0.5);  
  }  
   
  grey   =   0.30   *   red   +   0.59   *   green   +   0.11   *   blue  
  Top

4 楼yl_zhou(风中奇缘)回复于 2002-07-20 15:04:57 得分 0

XV?是哪里?谢谢!Top

5 楼romanticist(桃花岛主--杭州)回复于 2002-07-20 16:42:03 得分 0

一本书  
  Top

责任编辑: efish 参与评论 查找更多:
相关文章
关于FastRept的打印问题? 关于FastRept的打印问题?
请问怎样让消息框弹出后,5秒后自动关掉! 请问怎样让消息框弹出后,5秒后自动关掉!
谁有吉他?会弹的有多少?我也想用吉他抒发情感。。。 谁有吉他?会弹的有多少?我也想用吉他抒发情感。。。
请教二者之间的区别? 请教二者之间的区别?
请问我的程序在编译的时候,有一个错误是class type … 请问我的程序在编译的时候,有一个错误是class type redefinition
同时操作一种企业管理软件,我开销售单你即时可以在… 同时操作一种企业管理软件,我开销售单你即时可以在本地机器上看到
到底用pb访问远程sybase数据库有哪些方法? 到底用pb访问远程sybase数据库有哪些方法?
一个数组的问题,请高手们来讨论! 一个数组的问题,请高手们来讨论!
在一个MFC程序中,我从CToolBar类派生出CEnToolBar类… 在一个MFC程序中,我从CToolBar类派生出CEnToolBar类,但是怎么也无法把新的工具条(CEnToolBar)加入到程序窗口中,该如何解决呢???
如何编程向一几个INPUT连连发信息攻击? 如何编程向一几个INPUT连连发信息攻击?
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn

分类导航
Readygo技术搜索引擎