假设我们正在使用OpenCV从我们驱动器上的特定位置读取和加载图像,然后我们读取一些像素值和颜色,并假设这是扫描图像。
通常,如果我们打开扫描图像,我们会发现打印图像(扫描前)和图像之间存在一些差异,如果我们将其打开并在显示屏上看到它。
问题是:
我们从OpenCV获得的像素颜色的值。它们是根据我们的显示屏颜色空间还是我们得到的扫描图像(印刷版)颜色完全相同?
答案 0 :(得分:0)
只要您不更改图像文件的扩展名,像素值就不会改变,因为它们存储在内存中,而您的显示器或打印机就是您想要的方式看到图像,通常你不会得到同样的东西,因为它取决于技术和在你的图像显示或打印之前应用的不同过滤器..
答案 1 :(得分:0)
像素值是您使用
读取的值imgread
这取决于您为其设置的标志。原始图像可能具有比您加载的图像更大的位深度(取决于您的扫描仪)。
此外,真实文件扩展名是根据文件的第一个字节确定的,而不是文件扩展名。
因此,如果位深度不同,则可能不是扫描图像的像素值。
答案 2 :(得分:0)
我不确定,您想要做什么或实现什么,这里有一点要提及颜色配置文件。
相机,屏幕和打印机最常见的颜色配置文件是sRGB,这是一种有限的色谱,不包括整个RGB范围(因为廉价的硬件无论如何都无法显示它)。 有些相机(可能还有扫描仪)允许使用不同的颜色配置文件,如AdobeRGB,这会增加色彩空间并“允许”更多颜色。
问题是,如果您使用AdobeRGB颜色配置文件捕获(例如扫描)图像,但系统(浏览器/屏幕/打印机)将其解释为sRGB,您可能会因为错误的解释而被褪色(如果你将BGR图像解释为RGB图像,就像你的图像中会出现蓝色面孔一样。)
根据{{3}} ,OpenCV和许多浏览器,打印机等总是将图像解释为sRGB图像