python中rgb转yuv_python中从YUV420sp到RGB的转换

这篇博客介绍了在Python中将YUV420sp图像转换为RGB色彩空间的问题。作者引用了一个Android应用的转换函数,并提供了相应的Python实现代码,但在实际运行中遇到了输出异常。作者请求帮助来找出并修复代码中的错误。
摘要由CSDN通过智能技术生成

我正在制作一个Android应用程序,通过互联网发送预览屏幕的图像。发送YUV映像的字节。我想把这个YUV NV21图像转换成RGB色彩空间。我看了这个链接http://www.41post.com/3470/programming/android-retrieving-the-camera-preview-as-a-pixel-array中的转换函数。并编写了一个python代码。这是python代码。在import numpy as np

from struct import unpack

def nv21torgb(byarray,width,height):

img = np.ndarray(shape=(height,width,3),dtype=np.uint8)

xra = range(height)

yra = range(width)

frameSize = width*height

yp = 0

for j in xra:

uvp = frameSize + (j >> 1)*width

u = 0

v = 0

for i in yra:

y = unpack('B',byarray[yp])[0] - 16

if i & 1 is 0:

v = unpack('B',byarray[uvp])[0] - 128

uvp = uvp + 1

u = unpack('B',byarray[uvp])[0] - 128

uvp = uvp + 1

y1192 = 1192 * y

r = y1192 + 1634*v

g = y1192 - 833*v - 400*u

b = y1192 + 2066*u

if r<0:

r = 0

elif r>262143:

r = 262143

if g < 0:

g = 0

elif g>262143:

g = 262143

if b<0:

b = 0

elif b>262143:

b = 262143

r = ((r<<6)&0xff0000)>>16

g = ((g>>2)&0xff00)>>8

b = ((b>>10)&0xff)

img[j][i] = [r,g,b]

return img

但是这个函数在某个地方似乎是错误的,因为我得到了奇怪的输出。

image

感谢您的帮助:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值