OpenCV中的RGB。这是什么意思?

2024-03-28 16:09:48 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们正在使用OpenCV从驱动器上的特定位置读取并加载一个图像,然后读取一些像素值和颜色,并假设这是一个扫描图像。你知道吗

通常,如果我们打开扫描图像,我们会注意到打印图像(扫描前)和打开并在显示屏上看到的图像之间的一些差异。你知道吗

问题是:

我们从OpenCV获得的像素颜色值。它们是根据我们的显示屏幕颜色空间,还是我们得到完全相同的颜色,我们在扫描图像(印刷版)??你知道吗


Tags: 图像屏幕颜色空间像素差异opencv驱动器
3条回答

我不知道,你想做什么或实现,这里有一件事要提的颜色配置文件。你知道吗

相机、屏幕和打印机最常见的颜色配置文件是sRGB,这是一种有限的颜色光谱,不包括整个RGB范围(因为廉价的硬件无论如何都无法将其可视化)。 一些相机(可能还有扫描仪)允许使用不同的颜色配置文件,比如AdobeRGB,它增加了颜色空间,并“允许”更多的颜色。你知道吗

问题是,如果您捕获(例如扫描)AdobeRGB颜色配置文件中的图像,但系统(浏览器/屏幕/打印机)将其解释为sRGB,您可能会因为错误的解释而被洗掉颜色(例如,如果您将BGR图像解释为RGB图像,您的图像中会出现蓝色人脸)。你知道吗

根据http://fotovideotec.de/adobe_rgb/,OpenCV和许多浏览器、打印机等总是将图像解释为sRGB图像

只要你不改变图像文件的扩展名,像素值不会改变,因为它们存储在内存中,而您的显示器或打印机正是您希望看到图像的方式,通常情况下,您不会得到相同的结果,因为这取决于技术和在显示或打印图像之前应用于图像的不同过滤器。。你知道吗

像素值就是您在其中读取的值

imgread

这取决于你为它设置的标志。原始图像可能比加载的图像具有更大的位深度(取决于扫描仪)。你知道吗

另外,真正的文件扩展名是由文件的第一个字节决定的,而不是由文件扩展名决定的。你知道吗

因此,如果位深度不同,它可能不是扫描图像的像素值。你知道吗

请看一下imgread documentation。你知道吗

相关问题 更多 >