0

我试图检查我的图像转换是否具有与使用 RGB 到 YCbCr 方程手动转换相同的 RGB 值。使用蟒蛇:

import cv2
import numpy as np

file_src='rgb_color.bmp' //input image
file_dst='ycbcr_color.bmp' //output image

img_src=cv2.imread(file_src,1) //read input image

cv2.namedWindow('src')
cv2.namedWindow('dst')

img_dst=cv2.cvtColor(img_src,cv2.COLOR_BGR2YCrCb)

cv2.imshow('src',img_src)
cv2.imshow('dst',img_dst)
cv2.imwrite(file_dst,img_dst) //write output file as ycbcr_color.bmp
cv2.waitKey(0)
cv2.destoyAllWindows()

它成功地将RGB 图像转换为假定的 YCrCb
(值为85 255 76 43 21 150 255 107 29 128 128 255),同时手动使用方程并将它们转换为图像产生了这个 (值为82 90 240 145 54 34 41 240 110 235 128 128)。

OpenCV 将 RGB 读取为 BGR 的事实是否会影响这一点?或者 OpenCV 是否将 YCbCr 读取为 YCrCb(判断为cv2.COLOR_BGR2YCrCb

4

1 回答 1

0

对于未来的谷歌用户:

转换的标准方程和 OpenCV 所做的略有不同。OpenCV 计算通道的缩放和偏移版本。请参阅 docs.opencv.org/3.4/de/d25/imgproc_color_conversions.html 与 en.wikipedia.org/wiki/YCbCr#JPEG_conversion - rayryeng

于 2020-07-13T11:22:57.823 回答