读取BMP图像每一像素点RGB数据-程序员宅基地

技术标签: c  图片处理  

   对于24位bmp图片,每一个像素点存放着此点的RGB值。首先定义一个结构体,包含红(red)、绿(green)、蓝(blue)这三个字段,如下:

[html]  view plain copy
  1. //像素颜色值  
  2. typedef struct tagPOINT{  
  3.     BYTE b;  
  4.     BYTE g;  
  5.     BYTE r;  
  6. } POINT;  
      接下来定义用来存放每一像素点RGB值的变量,为了与bmp图像的行、列对应,定义存放数据的变量如下:

[html]  view plain copy
  1. POINT **pix;      
     其中,pix[i][j]代表第i行j列处像素点的RGB值。

  

     根据bmp图像宽与高,为指针变量动态分配内存空间,如下所示:

[html]  view plain copy
  1. //为标准图像每一个像素申请内存  
  2.     pix = (POINT **)malloc(sizeof(POINT*)*bi_in.biHeight);  
  3.     for(i=0;i<bi_in.biHeight;i++)  
  4.         *(pix+i)=(POINT*)malloc(sizeof(POINT)*bi_in.biWidth);  
      其中,bi_in.biHeight为图像高度,bi_in.biWidth为图像宽度。


      读取图像每一像素点处的RGB值至pix变量中,如下:

[html]  view plain copy
  1. //读取图像数据  
  2. for(i=0;i<bi_in.biHeight;i++)  
  3.     for(j=0;j<bi_in.biWidth;j++)  
  4.         fread(*(pix+i)+j,sizeof(POINT),1,fi);  
      现在,pix变量中就存放了整幅图像数据。可以通过下标或者指针运算读取任意点处的RGB值。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jinyeweiyang/article/details/40786231

智能推荐

二分法的使用之MATLAB实现_用matlab实现二分法的可视化-程序员宅基地

文章浏览阅读2w次,点赞2次,收藏18次。今天数值计算上机做了一个验证二分法计算非线性方程的实验。以前没有想过这个问题,今天作业一下感觉这个方法确实不错,随记下来。首先给出要计算的方程:f(x)=x^2=M然后编写算法:MATLAB code:%其中a,b表示查找根存在的范围,M表示要求解函数的值function y=f2(a,b,M)k=0;eps=0.0000001while b-a>eps_用matlab实现二分法的可视化

二叉树实验 (数据结构)_实验6-1:二叉树的构造遍历及运算 1、实验目的: 2、⑴掌握二叉树的链式存储结构。-程序员宅基地

文章浏览阅读1.6k次,点赞3次,收藏23次。二叉树实验报告_实验6-1:二叉树的构造遍历及运算 1、实验目的: 2、⑴掌握二叉树的链式存储结构。

高逼格UI-ASD(Android Support Design)-程序员宅基地

文章浏览阅读457次。原文链接:http://blog.csdn.net/qibin0506/article/details/46850763今年的Google IO给我们android开发着带来了三样很屌很屌的library:ASD(Android Support Design)APL(Android Percent Layout)DBL(Data Binding Librar

代码生成工具——Entity Framework Power Tools_entityframework 代码生成器-程序员宅基地

文章浏览阅读2.3k次。Entity Framework Power Tools是VS上的一个根据数据库生成Model的Code First映射工具。在VS里面右键即可看到。什么,没有? 别慌,可以单独下载的,见 https://www.microsoft.com/en-us/download/details.aspx?id=40762&e6b34bbe-475b-1abd-2c51-b5034bcdd6d2=True_entityframework 代码生成器

【CUDA卸载】卸载现有版本,安装新版本_cuda之前的版本怎么删除-程序员宅基地

文章浏览阅读1.6k次。里面那个关于NVIDIA的程序文件不见了。存在的话,也可以看看里面还剩下什么,可以搜索看看。除了这2个(NVIDIA图形处理程序,NVIDIA physX系统软件)把其它的也删掉。可以用杀毒软件垃圾扫描下,清理下电脑,主要是清理注册表。这样就可以安装你需要的CUDA版本。控制面板–程序–卸载。电脑—开始—所有程序。_cuda之前的版本怎么删除

C++多线程同步之条件变量(condition_variable)_c++ 条件变量实现阻塞等待-程序员宅基地

文章浏览阅读884次,点赞30次,收藏12次。在C++11中,使用条件变量(condition_variable)可以实现多个线程间的同步操作;当条件不满足时,相关线程被一直阻塞,直到某种条件出现,这些线程才会被唤醒。条件变量用于阻塞一个或多个线程,直到某个线程修改线程间的共享变量,并通过condition_variable通知其余阻塞线程。从而使得已阻塞的线程可以继续处理后续的操作。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:1、一个线程因等待"条件变量的条件成立"而挂起;_c++ 条件变量实现阻塞等待

随便推点

NNLM Word2Vec FastText LSA Glove 总结_word2vec 和 nnlm 对比有什么区别?-程序员宅基地

文章浏览阅读755次。总结了一些要点NNLM(Neural Network Language Model)Word2VecFastTextLSAGlove各种比较1、word2vec和tf-idf 相似度计算时的区别?2、word2vec和NNLM对比有什么区别?(word2vec vs NNLM)3、 word2vec负采样有什么作用?4、word2vec和fastText对比有什么区别?(word2vec vs f..._word2vec 和 nnlm 对比有什么区别?

在GeoServer中安装GeoMesa HBase插件_geomesa geoserver-程序员宅基地

文章浏览阅读329次。1.准备插件包如果您需要不同的版本,请pom.xml使用Maven从头开始修改和构建GeoMesa HBase插件项目。2.配置相关jar包解压缩geomesa-hbase-gs-plugin_2.11-3.1.0-install.tar.gz到GeoServer的 WEB-INF/lib目录中。tar -zxvf geomesa-hbase-gs-plugin_2.11-3.1.0-install.tar.gz -C /usr/local/apache-tomcat-9.0.41/webapps_geomesa geoserver

python之struct 模块详解_import struct-程序员宅基地

文章浏览阅读5.1k次,点赞12次,收藏97次。struct 模块一、struct简单介绍注意:本文中出现的四个名词同义:二进制流、二进制数组、字节流、字节数组1.引入准确地讲,Python没有专门处理字节的数据类型。但由于b'str'可以表示字节,所以,字节数组=二进制str。而在C语言中,我们可以很方便地用struct(结构体)、union来处理字节,以及字节和int,float的转换。在Python中,比方说要把一个32位无符号整数变成字节,也就是4个长度的bytes,你得配合位运算符这么写:>>> n = 102_import struct

win10安装vmware tools + 无法拖拽文件解决_vtools+-程序员宅基地

文章浏览阅读3.7w次,点赞54次,收藏218次。1、加载VMware Tools安装光盘打开虚拟机VMware Workstation,启动 Ubuntu 系统菜单栏 - 虚拟机 - 安装VMware Tools。2、将安装文件提取到本地磁盘打开加载的VMwareTools光盘,鼠标右键VMwareTools-*.tar.gz文件,提取到系统盘下的文件夹,这里以 Documents 为例。文件名版本号可能有所区别,认准文件后缀名为.tar.gz即可3、启用 Root超级权限Ctrt+..._vtools+

JIRA配置-工作流程,字段,域_jira管理员 问题 工作流 页面 域-程序员宅基地

文章浏览阅读2.8k次,点赞2次,收藏3次。1.新建项目点击项目创建项目,任选一个类型这里选择项目管理输入名称2.自定义工作流程项目设置中查看问题类型看到原始的项目的问题类型,进入系统-问题中添加问题类型进入项目设置中编辑问题类型把新建的问题类型添加进项目,把原有的问题类型移除这时只替换了问题类型,工作流程没有变化,这时替换工作流,需要新建一个新的在系统设置-问题-工作流画新的工作流程新的流程画完后,进入项目设置-工作流,点击右上角添加工作流,选择刚才新建的工作流新建的工作流匹配的新建的问题类_jira管理员 问题 工作流 页面 域

ubuntu 16.04 x86_64中arm-none-linux-gnueabi-不起作用时的解决方案-程序员宅基地

文章浏览阅读516次。在ubuntu 64位系统中试图使用落后的arm cross-compile工具链 arm-none-linux-gnueabi-,在执行gcc命令时```shell$ arm-none-linux-gnueabi-gcc ```终端反馈找不到文件。解决方案:安装 lib32z1 lib32ncurses5 lib32bz2-1.0 即可。...

推荐文章

热门文章

相关标签