我是靠谱客的博主 执着鼠标,这篇文章主要介绍Python RGB转NV21快速实现思路及部分代码,现在分享给大家,希望可以做个参考。

正常RGB 转 NV21思路:

1:RGB转YUV(与系数矩阵相乘,具体可百度)

2:YUV转NV21(此时YUV的行数是RGB的1.5倍,后1-1.5倍行的UV需要调整,NV21先V后U)

3:写NV21数据

存在问题:python的for循环挨个写入太慢了,一张4K*3K的JPG图转YUV需要10S以上;

 

快速实现RGB 转 NV21思路(4K*3K图仅需0.3S):

1:利用CV2自带的BGR转I420(I420的格式排列请咨询百度,与NV21很相似)

yuvData = cv2.cvtColor(rgbData, cv2.COLOR_BGR2YUV_I420)

2:I420转NV21,利用numpy矩阵加速运算

 height = rgbData.shape[0]
 width = rgbData.shape[1]

uData = yuvData[height: height + height // 4, :]
uData = uData.reshape((1, height // 4 * width))
vData = yuvData[height + height // 4: height + height // 2, :]
vData = vData.reshape((1, height // 4 * width))
uvData = np.zeros((1, height // 4 * width * 2))
uvData[:, 0::

最后

以上就是执着鼠标最近收集整理的关于Python RGB转NV21快速实现思路及部分代码的全部内容,更多相关Python内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部