python rgb转yuv_python - YUV转RGB

转换原理很简单,只要知道变换矩阵就简单了,这个可以参考一些《数字图像处理》相关书籍或者查维基就ok了。

import numpy as np

import cv2 as cv

def yuv2rgb(img):

W = np.array([

[1, 0., 1.13983],

[1, -0.39465, -0.58060],

[1, 2.03211, 0.]

])

imc = img.copy()

imc = imc.astype(np.float)

h, w, c = imc.shape

for i in range(h):

for j in range(w):

# imc[i, j][0] -= 16 # Y

imc[i, j][1] -= 128 # U

imc[i, j][2] -= 128 # V

imc[i, j] = np.matmul(W, imc[i, j])

imc = imc.astype(np.uint8)

return imc

img = cv.imread('C:/Users/darkchii/Pictures/original_golden_bridge-300x169.jpg', cv.IMREAD_UNCHANGED)

im1 = cv.cvtColor(img, cv.COLOR_RGB2YUV)

im2 = yuv2rgb(im1)

im3 = cv.cvtColor(im1, cv.COLOR_YUV2RGB)

cv.imshow('1', img)

cv.imshow('2', im1)

cv.imshow('3', im2)

cv.imshow('4', im3)

cv.waitKey(0)

测试结果(图 1 是 RGB 图,图 2 是使用 opencv RGB2YUV 转的,图 3 是自己编写的 YUV2RGB 转的结果,图 4 是使用 opencv 的 YUV2RGB 转的结果):

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值