【发布时间】:2018-11-10 19:20:37
【问题描述】:
我需要使用 Google Vision API 识别图像。在这些示例中,它们使用以下构造:
with io.open('test.png', 'rb') as image_file:
content = image_file.read()
image = vision.types.Image(content=content)
我需要做类似的事情,但我的图片来自:
content = cv2.imread()
返回 numpy 数组,而不是字节。我试过了:
content = content.tobytes()
它将数组转换为字节,但显然返回不同的字节,因为它给出了不同的结果。
那么如何使我的图像数组类似于我通过open() 函数获得的图像数组
【问题讨论】:
-
您需要哪些字节? PNG文件的字节数? RGBA5、RGB8 或 RGB16 格式的解压缩图像的字节数取决于文件中的内容?或者特别是在RGB8中,不管文件是如何存储的? R-G-B-A 顺序的四个独立解压 16 位平面的字节数? (小端还是大端?)还有别的吗?
-
@abarnert 我不太清楚。我只是希望它看起来与 open('file.png', 'rb') 给我的一样。有没有办法检查?
-
然后使用
encoded_bytes = cv2.imencode('.png', content) -
@zindarod 明白了......但我仍然很困惑。如果 OP 使用
cv2.imread您指定图像所在的位置...为什么他们不能简单地使用open代替它? -
如果你实际上并没有对 cv2 进行任何处理,那么解码一个 PNG 文件只是为了再次将其编码为 PNG 是非常愚蠢的......
标签: python python-3.x numpy opencv google-cloud-platform