图像转换:RGBA到RGB

3

假设我从帧抓取器得到了RGBA(32位)输出,其中alpha通道未使用(填充为帧抓取器保留的值),是否有有效的方法将其转换为RGB(24位)?

我正在处理5百万像素的流媒体图像,因此速度也很重要。请记住,alpha通道中的数据可以被丢弃。


你到底是什么意思?24位RGB实现使用32位并忽略alpha通道,因此你不需要做任何更改,但仅当你想丢弃alpha通道时,也就是如果它未被源使用 - aviraldg
我正在为我的公司编写硬件抽象层。数据消费者只接受24位RGB,而修改它们是我们最不想做的事情。因此,我只能创建另一个24位RGB缓冲区,并将转换结果放入其中。 - YeenFei
@yeenfai:好的,对于硬件来说可能会有所不同... - aviraldg
2个回答

3

只需复制RGB字节并丢弃alpha通道(1个字节)。可能的优化将是硬件特定的。例如,英特尔在IPP库中有特殊的颜色转换函数。


跳过 alpha 部分,只复制其余部分。如果你在使用硬件,它可能会有一个内部缓冲区,请使用那个。 - aviraldg

3

仅复制数据并跳过未使用的alpha字节。

如果速度对您很重要,您可能希望使用SSE或MMX,并使用内置的位重排指令。这通常比普通c代码快一点。

尽管5百万像素的数据听起来不是那么多,但如果您需要在100fps下执行,则会变得更加困难。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接