图像如何由8位变为24位?

guogaofeng1219 2009-09-02 09:05:34
高手帮帮忙吧,摄像头传过来8位的图像数据,但怎么能把它变为24位的图呢?
...全文
803 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rover___ 2009-09-09
  • 打赏
  • 举报
回复
照着调色板把RGB抄出来就可以了
千真万确!!!!!!!!!1
pady_pady 2009-09-08
  • 打赏
  • 举报
回复
说算你改为24位的,色彩值是不会增加的,只会使用调色板中256色索引值转换为24位真彩DIB,存储空间大了
像素*2 - 256,效果反而是一样的,并且不利于压缩.
jxufeng 2009-09-07
  • 打赏
  • 举报
回复
这个最简单了。
所谓8位,就是用0-255个数组,里面存了256或者少一些的RGB值,rgb实际上是包含3个unsinged char的结构体。实际的图像是一个从左到右,从上到下的二维数组(坐标格子,即一个像素点吗),每个格子里存的是0-255某个数字,即所谓的颜色索引。一张8位图片,最多也就是256中颜色,因为每个像素只需要一个unsinged char,也就是8位表示,其含义不言而喻。
24位,rgb3个byte即24位,这种图就没有调色板,颜色种类就多的去了,2的24次方-1吧,每个点都是自己真实的颜色。此外还有32位的,另外的8位是作为通道,其实就是两种图片叠着放,你可以指定某种颜色透明,然后就可以做到透明什么的效果,这是网页和gif动画的一种方法。
8位转成24位,你可以用cimage打开图片,通过调色板获取某一点的rgb,然后建立一个24位的图像,把rgb赋值过去,就行了。具体技巧看看msdn的例子。因为rgb的排列方式好像是bgr,读取数组好像用getpexil会很慢,要用getpixeladdress来做等等事项。
不过,说起来容易,做起来还是挺费神!!!
最后,我想知道你的目的,做成24位后,其结果就是图片尺寸加大了(理论上是3倍-3*256字节),图像不可能改变质量啊,某种程度上讲是没有意义的而有点犯傻的意思,所以没有人写8位转24位的程序!如果再用jpg来压缩会有图像质量的损失,还不如直接用8位的好。如果想变小,8位采用png压缩是很不错的。况且,8位 24位计算机都支持,jpg png也都支持啊。
guogaofeng1219 2009-09-07
  • 打赏
  • 举报
回复
谢谢大家。3楼给出的网站打不开啊。详细的我再 看看
lambochan 2009-09-04
  • 打赏
  • 举报
回复
貌似摄像头传来的所谓8位数据都是YCbCr的数据.自己check清楚先.
dirdirdir3 2009-09-04
  • 打赏
  • 举报
回复
http://idcnews.net/html/edu/20071229/80106.html
其实照着调色板把RGB抄出来就可以了...........
jtujtujtu 2009-09-02
  • 打赏
  • 举报
回复
8位 彩色的?有没有颜色索引表?
如果有,直接根据索引表填充RGB

或者

8位 灰度?
直接根据灰度值填RGB
guogaofeng1219 2009-09-02
  • 打赏
  • 举报
回复
24位转8位的程序比较多,但现在有一幅8位的BMP图,想把它的位深度变为24位,该怎么弄啊?高手帮帮忙啊!

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧