And*_*nov 2 python rgb numpy image-processing yuv
我有一个用 Numpy 数组表示的图像,即每个像素都是一个数组 [r,g,b]。现在,我想使用矩阵乘法将它转换为 YUV,并尽量不使用循环。
self.yuv=self.rgb
self.yuv=dot([[ 0.299, 0.587, 0.114 ],
[-0.14713, -0.28886, 0.436 ],
[ 0.615, -0.51499, -0.10001]],
self.yuv[:,:])
Run Code Online (Sandbox Code Playgroud)
我收到错误 - 对象未对齐。我想这是因为 self.yuv[i,j] 不是垂直向量。转置没有帮助。
有任何想法吗?
您的矩阵具有形状,(3, 3)而您的图像具有形状(rows, cols, 3),np.dot并且“在 a 的最后一个轴和 b 的倒数第二个轴上进行求和”。
最简单的解决方案是反转内部操作数的顺序np.dot并转置您的转换矩阵:
rgb2yuv = np.array([[0.299, 0.587, 0.114],
[-0.14713, -0.28886, 0.436],
[0.615, -0.51499, -0.10001]])
self.yuv = np.dot(self.rgb, rgb2yuv.T)
Run Code Online (Sandbox Code Playgroud)