首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >opencv sRGB到RGB转换

opencv sRGB到RGB转换
EN

Stack Overflow用户
提问于 2018-05-18 18:12:45
回答 2查看 5.7K关注 0票数 2

我有iphone的照片是非线性的sRGB格式。我需要线性RGB。我无法在opencv(python)中找到将它们转换为线性RGB的方法。

还尝试了ImageMagick转换:

代码语言:javascript
复制
convert output0.jpg  -colorspace RGB output0.jpg

仍然一样,sRGB没有效果。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-18 19:02:30

只有极少数的图像格式真正支持线性RGB。巴布亚新几内亚有,但没有JPG。你可以知道伽马值是1,它是线性的。您可以使用ImageMagick在线性颜色空间中进行处理,但是保存到JPG可能会显示适当的线性像素值,但是JPG元数据并不存储它是线性RGB的事实。如果图像较暗,则可以判断像素数据是否已更改为线性数据。您可以为JPG分配一个线性配置文件,但我不确定您在哪里会找到一个。注意,在非常老版本的ImageMagick -colorspace中,RGB实际上正在生成sRGB,反之亦然。

例如,您的命令不做任何更改,因为JPG并不真正支持线性RGB。

输入:

代码语言:javascript
复制
convert logo.jpg -colorspace RGB logoRGB.jpg

但是巴布亚新几内亚:

代码语言:javascript
复制
convert logo.jpg -colorspace RGB logoRGB.png

代码语言:javascript
复制
Colorspace: RGB
Gamma: 1

为了在JPG中强制转换为线性RGB,您可以执行以下操作使像素数据线性化。但元数据仍将显示非线性sRGB,gamma=0.4545。

代码语言:javascript
复制
convert logo.jpg -colorspace RGB -set colorspace sRGB logoRGB2.jpg

代码语言:javascript
复制
Colorspace: sRGB
Gamma: 0.454545

编辑:如果你想要一个线性RGB配置文件,下面的链接可能是有用的。请参阅http://fnordware.blogspot.com/2008/05/making-linear-icc-profile.html

票数 1
EN

Stack Overflow用户

发布于 2018-05-18 18:49:43

您可以使用下面链接中提供的转换将sRGB转换为XYZ。

Matlab颜色转换

然后使用cv::COLOR_XYZ2BGR或cv::COLOR_XYZ2RGB获取RGB。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50417076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档