图像显示与图像格式(jpeg,png,bmp),色彩空间随笔

首先区分色彩空间与图像格式

图像格式:是图片压缩编码及储存的方式。包括jpeg,bmp,png,gif等等https://baike.baidu.com/item/%E5%9B%BE%E5%83%8F%E6%A0%BC%E5%BC%8F

色彩空间:是对应色彩模型,是颜色的数学描述方式。包括YUV/YCbCr,rgb,CMY/CMYK,HSV/HSB,HSI/HSL,Labhttps://baike.baidu.com/item/%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4

 

img = cv2.imread(r"D:\my_project\python3_opencv\test.jpg",cv2.IMREAD_COLOR)#cv2.IMREAD_GRAYSCALE

img_output = cv2.cvtColor(img, cv2.COLOR_BGR2Luv)#cv2.COLOR_GRAY2RGB,cv2.COLOR_BGR2HSV,cv2.COLOR_BGR2HLS,cv2.COLOR_BGR2Lab
cv2.imshow('Input', img)
cv2.imshow('Output', img_output)

cv2.waitKey()

可以通过以上opencv代码,看一下将RGB变换为其他空间后显示的差别

JPEG的RGB原图

图像显示与图像格式(jpeg,png,bmp),色彩空间随笔_第1张图片

RGB2Luv空间后直接显示结果

图像显示与图像格式(jpeg,png,bmp),色彩空间随笔_第2张图片

怎样才能正确的显示图片?

首先要知道显示器是哪种色彩空间的,一般显示器都是rgb显示空间,所以先将不同图像格式的图片解码,像JPEG,bmp,png解码之后就是rgb,如果是H265格式的图片解码后是YUV,就需要转化为rgb 才能在显示器上正确显示,否则直接以YUV的数据显示色彩很大但图片还是可分辨(因为YUV至少包含可识别的Luma分量),如果解码后是其他色彩空间的直接显示可能就没法人眼识别(上一段OpenCV代码看到其他色彩空间的直接以RGB方式显示有很多无法辨识的对象)。

 

可以说视频中用到的可以直接打开并显示H265码流的软件,首先解码H265码流,然后将YUV转为RGB,在调用显示接口在屏幕上显示出来的???

你可能感兴趣的:(图像视频_随笔)