做东西需要用到灰度转伪彩显示,毕竟嘛,人眼对彩色的分辨远远高于对灰度的分辨。

本来想这么成熟的东西网上肯定有代码,我勒个擦,找了一圈都是不知所云的东西,还是自己写一个吧!!!!

废话不说了,代码是码农的语言,就像原理图是电工的语言一样,直接上吧:

这是原始图像:

这是伪彩化后的图像:

代码如下:

文字版的代码如下:

void CMy20121227灰度转伪彩显示Dlg::OnBnClickedButton1()

{

// TODO: Add your control notification handler code here

Mat img = imread("huidu.jpg", CV_LOAD_IMAGE_GRAYSCALE);

namedWindow("img");

imshow("img", img);

waitKey(0);

Mat img_color(img.rows, img.cols, CV_8UC3);//RGB图像

int tmp=0;

for (int y=0;y

{

for (int x=0;x

{

tmp = img.at(y,x);

img_color.at(y,x)[0] = abs(255-tmp); //blue

img_color.at(y,x)[1] = abs(127-tmp); //green

img_color.at(y,x)[2] = abs( 0-tmp); //red

}

}

namedWindow("img_color");

imshow("img_color", img_color);

waitKey(0);

destroyAllWindows();

}

但是,这种转换只是直接简单的用RGB三色交叉而已,生成的伪彩图效果并不好,那么我就考虑用MATLAB中那样生成彩虹图,区分更明显,更适合肉眼观察。

主要思路是把灰度图对应的0~255的数值分别转换成彩虹色:红、橙、黄、绿、青、蓝。这里我没有使用紫色,因为实用中发现紫色的效果并不好。彩虹色对应的RGB值在下面的代码中可以看到,所以只需要分别作线性插值就可以了。

废话少说,直接上代码,简洁明快是我的一贯风格,无论编程还是做人都是,哈哈:

代码如下:

文字版代码如下:

// R G B gray

//----------------------------------

// 红 255, 0, 0 255

// 橙 255, 127, 0 204

// 黄 255, 255, 0 153

// 绿 0, 255, 0 102

// 青 0, 255, 255 51

// 蓝 0, 0, 255 0

void CMy20121227灰度转伪彩显示Dlg::OnBnClickedButton2()

{

Mat img = imread("huidu.jpg", CV_LOAD_IMAGE_GRAYSCALE);

namedWindow("img");

imshow("img", img);

waitKey(0);

Mat img_color(img.rows, img.cols, CV_8UC3);//RGB图像

#define IMG_B(img,y,x) img.at(y,x)[0]

#define IMG_G(img,y,x) img.at(y,x)[1]

#define IMG_R(img,y,x) img.at(y,x)[2]

uchar tmp=0;

for (int y=0;y

{

for (int x=0;x

{

tmp = img.at(y,x);

if (tmp <= 51)

{

IMG_B(img_color,y,x) = 255;

IMG_G(img_color,y,x) = tmp*5;

IMG_R(img_color,y,x) = 0;

}

else if (tmp <= 102)

{

tmp-=51;

IMG_B(img_color,y,x) = 255-tmp*5;

IMG_G(img_color,y,x) = 255;

IMG_R(img_color,y,x) = 0;

}

else if (tmp <= 153)

{

tmp-=102;

IMG_B(img_color,y,x) = 0;

IMG_G(img_color,y,x) = 255;

IMG_R(img_color,y,x) = tmp*5;

}

else if (tmp <= 204)

{

tmp-=153;

IMG_B(img_color,y,x) = 0;

IMG_G(img_color,y,x) = 255-uchar(128.0*tmp/51.0+0.5);

IMG_R(img_color,y,x) = 255;

}

else

{

tmp-=204;

IMG_B(img_color,y,x) = 0;

IMG_G(img_color,y,x) = 127-uchar(127.0*tmp/51.0+0.5);

IMG_R(img_color,y,x) = 255;

}

}

}

namedWindow("img_color");

imshow("img_color", img_color);

waitKey(0);

destroyAllWindows();

}

可以看出,这种方法转化的效果不错,能够较好的把灰度图转换成适合肉眼观察的彩虹图。

本文的编程环境是Visual Studio 2008、OpenCV 2.4.3。

sume

2012.12.28

python彩虹图_灰度图转伪彩色图和彩虹图,基于OpenCV 2.4.3相关推荐

  1. matlab灰度图转伪彩色,[转载]灰度图转伪彩色图和彩虹图,基于OpenCV 2.4.3

    做东西需要用到灰度转伪彩显示,毕竟嘛,人眼对彩色的分辨远远高于对灰度的分辨. 本来想这么成熟的东西网上肯定有代码,我勒个擦,找了一圈都是不知所云的东西,还是自己写一个吧!!!! 废话不说了,代码是码农 ...

  2. python分态密度图_学术干货丨能带结构和态密度图的绘制及初步分析

    [能带结构绘图和初步分析] 1.1能带简介 在形成分子时,原子轨道构成具有分立能级的分子轨道.晶体是由大量的原子有序堆积而成的.由原子轨道所构成的分子轨道的数量非常之大,以至于可以将所形成的分子轨道的 ...

  3. python双柱状图与双折线图_如何绘制双轴柱状图和折线图?

    如何绘制双轴柱状图和折线图? 答:第1步,先将数据作成如下表格. ××市2010--2014年农业灌溉用水有效利用系数 年份灌溉亩数(万亩)毛灌溉用水总量(万米3)净灌溉用水总量(万米3)灌溉水有效利 ...

  4. 用计算机画出方格表,方格造型图_怎么做这种颜色相间的方格图(有图)_彩妆阁...

    1.怎么做这种颜色相间的方格图(有图) 经典做法: 1.新建4*4像素的画布,背景色为白. 2.将画布放大到最大,在画布四个角各填充一个像素的黑色块(可以用选框工具选中一个像素),画布中间填充一个四个 ...

  5. 下如何画出频率瀑布图_用maftools一行代码画出瀑布图

    昨天本科的一个师姐问我关于瀑布图的画法,想要画个瀑布图,问我有没有有什么工具可以画的,目标图如下 于是给师姐介绍了maftools这个R包,这个R包功能非常强大,可以做各种各样的图,今天就拿瀑布图为例 ...

  6. jmp怎么做合并的箱线图_如何在JMP中给箱线图(Box Plot)快速着色

    箱线图(Box-plot),是大家耳熟能详的一种显示数据分散情况的统计图.通过箱线图,我们可以很容易地比较几组数据的形状,识别数据中的异常值,锁定那些需要我们关注的异常值信息,发现解决问题的机会. 箱 ...

  7. python画k线图_使用Matplotlib轻松绘制股票K线图

    K线图是看懂股票走势的最基本知识,K线分为阴线和阳线,阴线和阳线都包含了最低价.开盘价.最高价和收盘价,一般的K线如下图所示: 度娘说:K线图源于日本德川幕府时代(1603-1867年),被当时日本米 ...

  8. python 动画 轨迹_一看就懂的动态轨迹图实现示例

    前言 数据可视化API(Web),是基于腾讯位置服务JavaScript API GL实现的专业地理空间数据可视化渲染引擎. 通过这套API,可以实现轨迹数据.坐标点数据.热力.迁徙.航线等空间数据的 ...

  9. 缠论中枢python源码_缠论分笔及中枢主图源码

    HV1:=HHVV AND H>=HHV(H,BARSLAST(LLVV)); LV1:=LLVV AND L<=LLV(L,BARSLAST(HHVV)); DRAWLINE(LV1,L ...

最新文章

  1. shell截取字符串方法
  2. php5.3中的safe_mod与magic_quotes_gpc
  3. 系统异常捕捉处理设计文档
  4. c java http_[C] 类似于HttpClient的C语言实现Http POST功能如何实现?
  5. 海天 oracle,Oracle执行计划详解
  6. 如何画出几种常见二分类损失函数(附代码)
  7. 转——C# DataGridView控件 动态添加新行
  8. 【tensorflow】static_rnn与dynamic_rnn的区别
  9. teamviewer类似软件_TeamViewer系统后台被黑客组织APT攻破,请注意防范
  10. jithub使用整理资料
  11. 别扭!iPhone XI Max渲染图曝光:后置超大方形3摄
  12. 管理系统中计算机er图怎么画,er图怎么画?数据库E-R图画法教程详解
  13. TeamViewer远程控制软件的许可证有什么用处
  14. 基于Cocos2d-x游戏引擎实战开发炸弹超人
  15. 如此沙雕的代码注释,原来程序员都是段子手
  16. 对接京东接口之获取订单信息jingdong.las.im.hfs.order.search(Java实现)
  17. html の第一天(上)-----适合新手入门前端
  18. 关于计算机未来理想,坚持理想向往未来的励志说说
  19. kvm切换器什么牌子好?怎么选择
  20. 如何使用omnipeek工具抓取WiFi设备的action帧

热门文章

  1. 2017第18届深圳国际机械制造工业、金属切割机床、金属成形机床及模具、机器人及工业自动化展会刊(参展商名录)
  2. 20230217 Python操作word
  3. c语言,c++中的%d,%f等的用法
  4. 计算一个 32 位无符号整数有多少个位为 1
  5. 如何建立属于自己的云服务器
  6. 如何让图片在html中自动填充颜色,如何使用传图水印功能在图片上传时自动添加文字或图片水印?...
  7. svg.js使用教程
  8. 真相只有一个!厉害了,用 IDEA 神器看源码,效率真高!
  9. PHP实战-仿爱奇艺电影网站-学习-Day01
  10. 今日头条视频如何消重