Почему преобразование BGR в YCbCr в OpenCV наследует другое значение по сравнению с ручным подсчетом с использованием уравнения? - PullRequest
0 голосов
/ 09 июля 2020

Я попытался проверить, имеет ли мое преобразование изображения то же значение RGB, что и преобразование вручную с использованием уравнения RGB в YCbCr. Использование python:

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)

1 Ответ

0 голосов
/ 13 июля 2020

Для будущего пользователя Google:

Стандартные уравнения для преобразования и то, что делает OpenCV, немного отличаются. OpenCV вычисляет масштабированные и смещенные версии каналов. См. Docs.opencv.org/3.4/de/d25/imgproc_color_conversions.html по сравнению с en.wikipedia.org/wiki/YCbCr#JPEG_conversion - rayryeng

...