【发布时间】:2014-12-16 06:57:25
【问题描述】:
我正在使用此代码从 matlab 中的图像中提取亮度:
I = imread('image.bmp');
I = rgb2ycbcr(I);
I = I[:, :, 1];
save(I, 'ycbcr_image');
图片如下:
这是output mat。
我想在 opencv-python 中复制这段代码,这是我的实现:
def to_matlab_ycbcr(image):
# http://stackoverflow.com/questions/26078281/why-luma-parameter-differs-in-opencv-and-matlab
return clip(16 + (219 / 255.0) * image, 0, 255)
original = image_open(local_path('image.bmp'))
matlab = scipy.io.loadmat(local_path('ycbcr.mat'))
matlab = matlab['ycbcr_image']
transformed = cv2.cvtColor(original, cv2.COLOR_BGR2YCR_CB)
transformed = transformed[:, :, 0]
result = to_matlab_ycbcr(transformed)
error = np.mean(np.abs(result - matlab))
我的错误平均为 12。你知道如何解决这个问题吗?
附:我正在使用 python 2.7.5 和 opencv 2.4.9
【问题讨论】:
-
颜色空间之间的转换矩阵在 matlab 中可能会有所不同,不是吗?
标签: matlab opencv image-processing numpy matrix