当我们读取了CImage图像后,如果想要快速修改CImage所有像素的RGB值,应该怎么实现呢?

方法一:调用CImage的内部函数GetPixel(),GetRValue(),SetPixel()。缺点是调用函数需要入栈出栈的操作,消耗时间过长,比如一个5000*5000像素的图片,对所有像素点进行RGB设置需要等待好久。代码如下:

CImage image;
HRESULT hr = image.Load(file_name);

int image_height = image.GetHeight();
int image_width = image.GetWidth();

int  r = 0, g = 0, b = 0;
COLORREF  color;
for (int i = 0; i < image_width; i++){
for (int j = 0; j < image_height; j++){
color = image.GetPixel(i, j);  //get pixel data from image
r = GetRValue(color);        //get R value from color
g = GetGValue(color);        //get G value from color
b = GetBValue(color);        //get B value from color
image.SetPixel(i, j, RGB(r, g, b));/*设置一帧图像的像素值用来显示*/
}
}

方法二:直接修改像素点对应的地址,效率较高,代码如下:

CImage image;
HRESULT hr = image.Load(file_name);

int image_pitch = image.GetPitch();
int image_height = image.GetHeight();
int image_width = image.GetWidth();

byte* pSourceData;
pSourceData = (byte*)image.GetBits();
int image_bpp = image.GetBPP();

int  r = 0, g = 0, b = 0, alpha = 0;
int  gray = 0;
for (int i = 0; i < image_width; i++){
for (int j = 0; j < image_height; j++){
if (image_bpp == 8){
gray = *(pSourceData + j * image_pitch + i);

//进行灰度值设置
*(pSourceData + j * image_pitch + i) = 125;
}
if (image_bpp == 24){
r = *(pSourceData + j * image_pitch + i * 3);
g = *(pSourceData + j * image_pitch + i * 3 + 1);
b = *(pSourceData + j * image_pitch + i * 3 + 2);

//进行RGB设置
*(pSourceData + j * image_pitch + i * 3) = 175;//R
*(pSourceData + j * image_pitch + i * 3 + 1) = 0;//G
*(pSourceData + j * image_pitch + i * 3 + 2) = 0;//B
}

if (image_bpp == 32){
b = *(pSourceData + j * image_pitch + i * 4);
g = *(pSourceData + j * image_pitch + i * 4 + 1);
r = *(pSourceData + j * image_pitch + i * 4 + 2);
alpha = *(pSourceData + j * image_pitch + i * 4 + 3);

//进行RGB设置
*(pSourceData + j * image_pitch + i * 4) = 0;//B
*(pSourceData + j * image_pitch + i * 4 + 1) = 0;//G
*(pSourceData + j * image_pitch + i * 4 + 2) = 175;//R
*(pSourceData + j * image_pitch + i * 4 + 3) = 0;
}
}
}

CImage 设置任意像素的RGB值相关推荐

  1. 在Mac OS X下获得电脑屏幕中任意颜色的RGB值

    2019独角兽企业重金招聘Python工程师标准>>> 数码测色计 打开系统中的Launchpad,打开其中的其他文件夹 找到数码测色计,打开,这是系统自带的应用 你的鼠标移动到什么 ...

  2. python处理rgb_如何在Python中读取给定像素的RGB值?

    使用Pillow(适用于Python 3.X以及Python 2.7+),您可以执行以下操作: from PIL import Image im = Image.open('image.jpg', ' ...

  3. python画图颜色代码rgb_python – matplotlib 3D散点图,其标记颜色对应于RGB值

    我使用mahotas将图片加载到一个numpy数组中. import mahotas img = mahotas.imread('test.jpg') img中的每个像素由RGB值数组表示: img[ ...

  4. 灰度值 与 RGB值 及其转换

    灰度值:指黑白图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0,故黑白图片也称灰度图像. RGB 色彩:RGB色彩模式是工业界的一种颜色标准,是通过对红®.绿(G).蓝(B)三个颜色通 ...

  5. 利用Opencv3.4.15 vs2017实现鼠标获取图像像素值坐标、RGB值、HSV值

    //功能:实现鼠标左键点击可以返回图像像素值坐标.HSV值.RGB值 #include<opencv2/opencv.hpp> #include<iostream> #incl ...

  6. QT编写实现图片的幻灯片播放、自适应显示、缩放(以鼠标位置为中心进行缩放)、拖动、重置、显示鼠标位置像素坐标及RGB值、播放GIF动画、截图保存、批量保存、拖入文件夹遍历所有文件

    这个图片查看器功能很多,是我花了不少心思,不断优化,不断添加功能的成果: 1.能打开并显示所有常用图片格式文件,显示鼠标位置像素坐标及RGB值 2.能缩放,拖动图片,可以以鼠标为中心滚动滚轮进行缩放 ...

  7. rgb颜色设置方法及常用颜色的RGB值

    1.Android设置rgb颜色方法 每一个rgb颜色都对应一个int数值,所以我们可以这么设置:  private static final int default_background_color ...

  8. MATLAB如何采用0~1的RGB值设置字体颜色?

    Problem: 在MATLAB中,如何采用0~1的RGB值设置字体颜色? 目前做一个GUI,遇到动态改变字体颜色的这点需求,而且变为自己想要的颜色 这样会带来两个小问题: 不能采用预设颜色值的方式实 ...

  9. 使用 RGB 值设置颜色

    使用 RGB 值设置颜色 另一种可以在 CSS 中表示颜色的方法是使用 RGB 值. RGB 即红色.绿色.蓝色(英语:Red, Green, Blue). ● 红色(R)0 到 255 间的整数,代 ...

  10. AE 中RGB值设置成0-255

    AE 中RGB值设置成0-255 AE中RGB的值突然变成几百几千完全不认识了! AE中使用RGB的方式设置颜色的时候通常是0-255的数值设置红绿蓝,但是有时会发现这个值是几千几万的时候不容易把握各 ...

最新文章

  1. 绕开bug的feed_dict,用自己的数据集训练DCGAN
  2. centos yum mysql_CentOS 7 yum安装配置MySQL5.7教程
  3. CSS如何设置高度为屏幕高度_(15)让这些“展示”有更好的扩展性——媒体查询 | CSS...
  4. 半个小时用计算机怎么算,CPA机考计算器操作指南,掌握这些快捷键,考试“延长”半小时!...
  5. bv值是什么意思_BVR电线是什么意思BVR电线电缆规格型号
  6. vector与list的区别
  7. div 置底 形成页脚
  8. php站群系统,ThinkPhp内核逐鹿泛目录站群系统 毫秒级加载速度 丰富的内容库搭配(价值8000元)...
  9. 华铭智能属于芯片概念吗_华铭智能:子公司1个亿参股边缘计算独角兽九次方大数据!...
  10. Word文档编号工具,Word标题,图、表手动编号工具
  11. 使用 sublime数组转换成逗号分割文本
  12. 将Table转换成HTML
  13. pointnet源码阅读:训练
  14. Septentrio板卡接收机连接方式
  15. 北京口袋时尚科技公司-微店内推技术一面
  16. Ubuntu系统字体所在的文件夹的位置。
  17. 电脑怎么还原系统win11
  18. Nginx实现https反向代理配置
  19. 防止微信H5下拉出现域名究极解决方案
  20. ethercat的linuxcnc解析器-关于lcec_conf和lcec.so

热门文章

  1. 3.3、怎么通过STLINK下载程序(附STLINK驱动包)
  2. 关于MAC解决jupyter中出现nbconvert failed/ xelatex not found on path报错
  3. 通过图片url 获取图片file对象
  4. php base64原理
  5. ict中的it和ct_ICT.Social – IT专业人员的社交网络
  6. ARM体系结构与编程-3
  7. Linux服务篇--企业级调度器LVS
  8. matlab 矩形窗汉明窗幅频特性对比
  9. JDY-31蓝牙模块简单通信
  10. 牛客网项目里的数据表