小编fou*_*nta的帖子

Python OpenCV 将平面 YUV 4:2:0 图像转换为 RGB -- YUV 阵列格式

我正在尝试通过 python 使用 OpenCV 4.1.0 版将平面 YUV 4:2:0 图像转换为 RGB,并且正在努力理解如何格式化数组以传递给cvtColor函数。我将所有 3 个通道作为单独的数组,并试图将它们合并以与cv2.cvtColor. 我正在使用cv2.cvtColor(yuv_array, cv2.COLOR_YUV420p2RGB). 据我所知,yuv_array应该是1.5倍一样高的原始图像(这是从YUV阵列cvtColor使用cv2.COLOR_RGB2YUV_YV12的样子),我应该把UV成分进入的下半部分yuv_array和Y通道进入阵列的顶部。

我似乎无法弄清楚 U 和 V 通道应该如何在这个阵列的底部格式化。我试过将它们交错,然后将它们背靠背放在那里。使用这两种方法,我都尝试先将 U 放在 V 中,反之亦然。所有方法都会导致生成的图像中出现伪影。这是我的代码和示例图像:

import os
import errno
import numpy as np
import cv2

fifo_names = ["/tmp/fifos/y_fifo", "/tmp/fifos/u_fifo", "/tmp/fifos/v_fifo"]

#teardown; delete fifos
import signal, sys
def cleanup_exit(signal, frame):
    print ("cleaning up!")
    for fifo in fifo_names:
        os.remove(fifo)
    sys.exit(0)
signal.signal(signal.SIGINT, cleanup_exit)
signal.signal(signal.SIGTERM, cleanup_exit)

#make fifos
for fifo in …
Run Code Online (Sandbox Code Playgroud)

python opencv numpy image-processing

4
推荐指数
1
解决办法
6120
查看次数

标签 统计

image-processing ×1

numpy ×1

opencv ×1

python ×1