首页 技术 正文
技术 2022年11月16日
0 收藏 794 点赞 3,254 浏览 3580 个字

Android项目上处理图像的代码(注释全部去掉)

?

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 void RGB2HSV( uint16_t * h, uint16_t * s, uint16_t * v, uint8_t r, uint8_t g, uint8_t b){    double rr, gg, bb;    double hh, ss, vv;    double cmax, cmin, cdes;     rr = r;    gg = g;    bb = b;     cmax = (rr > gg) ? rr : gg;    if (bb > cmax) {        cmax = bb;    }     cmin = (rr < gg) ? rr : gg;    if (bb < cmin) {        cmin = bb;    }     cdes = cmax - cmin;    vv = cmax;    if (cdes != 0) {        ss = cdes * SCALE / cmax;        if (cmax == rr) {            hh = (gg - bb) * SCALE / cdes;        }else if (cmax == gg) {            hh = (bb - rr) * SCALE / cdes + 2 * H_SCALE;        }else {            hh = (rr - gg) * SCALE / cdes + 4 * H_SCALE;        }    }else if (cmax != 0) {        ss = cdes * SCALE / cmax;        hh = 0;    }else {        ss = 0;        hh = 0;    }    if (hh < 0) {        hh += 6 * H_SCALE;    }     *h = hh * H_GETA;    *s = ss * H_GETA;    *v = vv * H_GETA;} void HSV2RGB( uint8_t *r, uint8_t *g, uint8_t *b, uint16_t h, uint16_t s, uint16_t v){    double rr = 0, gg = 0, bb = 0;    double hh, ss, vv;     if (h == 6 * H_GETA * H_SCALE) {        h = 0;    }    hh = (double)h / H_GETA;    ss = (double)s / GETA;    vv = (double)v / GETA;     switch((int)(hh / H_SCALE)) {        case 0:            rr = SCALE;            gg = hh;            bb = 0;            break;        case 1:            rr = 2 * H_SCALE - hh;            gg = SCALE;            bb = 0;            break;        case 2:            rr = 0;            gg = SCALE;            bb = hh - 2 * H_SCALE;            break;        case 3:            rr = 0;            gg = 4 * H_SCALE - hh;            bb = SCALE;            break;        case 4:            rr = hh - 4 * H_SCALE;            gg = 0;            bb = SCALE;            break;        case 5:            rr = SCALE;            gg = 0;            bb = 6 * H_SCALE - hh;            break;    }     rr = (rr + (SCALE - rr) * (SCALE - ss) / SCALE) * vv / SCALE;    gg = (gg + (SCALE - gg) * (SCALE - ss) / SCALE) * vv / SCALE;    bb = (bb + (SCALE - bb) * (SCALE - ss) / SCALE) * vv / SCALE;     *r = rr;    *g = gg;    *b = bb;    if (*r > 255)*r = 255;    if (*g > 255)*g = 255;    if (*b > 255)*b = 255;} void RGB2HLS( double *h, double *l, double *s, uint8_t r, uint8_t g, uint8_t b){    double dr = (double)r/255;    double dg = (double)g/255;    double db = (double)b/255;    double cmax = MAX(dr, MAX(dg, db));    double cmin = MIN(dr, MIN(dg, db));    double cdes = cmax - cmin;    double hh, ll, ss;     ll = (cmax+cmin)/2;    if(cdes){        if(ll <= 0.5)            ss = (cmax-cmin)/(cmax+cmin);        else            ss = (cmax-cmin)/(2-cmax-cmin);         if(cmax == dr)            hh = (0+(dg-db)/cdes)*60;        else if(cmax == dg)            hh = (2+(db-dr)/cdes)*60;        else// if(cmax == b)            hh = (4+(dr-dg)/cdes)*60;        if(hh<0)            hh+=360;    }else        hh = ss = 0;     *h = hh;    *l = ll;    *s = ss;} void HLS2RGB( uint8_t *r, uint8_t *g, uint8_t *b, double h, double l, double s){    double cmax,cmin;     if(l <= 0.5)        cmax = l*(1+s);    else        cmax = l*(1-s)+s;    cmin = 2*l-cmax;     if(s == 0){        *r = *g = *b = l*255;    }else{        *r = HLS2RGBvalue(cmin,cmax,h+120)*255;        *g = HLS2RGBvalue(cmin,cmax,h)*255;        *b = HLS2RGBvalue(cmin,cmax,h-120)*255;    }} double HLS2RGBvalue(double n1,double n2, double hue){    if(hue > 360)        hue -= 360;    else if(hue < 0)        hue += 360;    if(hue < 60)        return n1+(n2-n1)*hue/60;    else if(hue < 180)        return n2;    else if(hue < 240)        return n1+(n2-n1)*(240-hue)/60;    else        return n1;}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,084
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,559
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,408
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,181
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,818
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,901