【发布时间】:2018-11-25 12:56:28
【问题描述】:
我正在做一个项目,我必须对 YUV420_SP_NV21 图像(取自 Android 相机)应用阈值,以确定哪些像素是“黑色”,哪些是“白色”。
因此,我想在 Python 中将它作为字节数组导入(使用 OpenCV、NumPy、PIL 等),这样我就可以对 Y 值进行一些快速的按位运算。
但是,当我尝试使用以下方法导入图像时,会得到无用的输出:
当我输入时
import cv2
import numpy as np
img = cv2.imread('test.yuv')
imgArr = np.array(img)
print(img)
print(imgArr)
我得到输出:
None
None
当我输入
import numpy as np
f = open('test.yuv', 'rb')
img = f.read()
imgArr = np.array(img)
我得到了一些无用的字符序列。
当我现在输入时(例如)
print(imgArr[0])
我得到输出:
IndexError: too many indices for array
这意味着 imgArr 根本不是数组!
谁能告诉我我做错了什么?
提前致谢!
【问题讨论】:
-
如果您能给我们提供一个示例 YUV 文件就更好了
-
YUV 格式不对图像的宽度和高度进行编码,因此您需要提供示例文件以及图像的高度和宽度(以像素为单位),YUV 以每像素 1.5 个字节进行编码,所以如果您的图像是 80x40 像素,则为 3,200 像素,并且文件大小应为 4,800 字节 (3,200 * 1.5)。谢谢。
-
"...一些无用的字符序列"。我发现很难想出你可以合理预期的东西。文本形式的图像?