我是靠谱客的博主 执着鼠标,最近开发中收集的这篇文章主要介绍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 RGB转NV21快速实现思路及部分代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部