Python-opencv : Read image data from stdin

标签 python opencv

如何从标准输入而不是文件中读取图像数据?

有了C++接口(interface),似乎可以:https://stackoverflow.com/a/5458035/908515 .函数imdecode在 Python 中也可用。但它期望一个 numpy array作为(第一个)参数。我不知道如何转换标准输入数据。

这是我尝试过的:

import cv
import sys
import numpy

stdin = sys.stdin.read()
im = cv.imdecode(numpy.asarray(stdin), 0)

结果:TypeError: <unknown> data type = 18 is not supported

最佳答案

看起来 python 标准输入缓冲区对于图像来说太小了。您可以使用 -u 标志运行您的程序以消除缓冲。更多详细信息,请参阅 this回答。

其次是 numpy.asarray 可能不是从数据中获取 numpy 数组的正确方法,numpy.frombuffer 对我来说效果很好。

所以这是工作代码(只有我使用 cv2 而不是 cv 希望它不会太重要):

import sys
import cv2
import numpy

stdin = sys.stdin.read()
array = numpy.frombuffer(stdin, dtype='uint8')
img = cv2.imdecode(array, 1)
cv2.imshow("window", img)
cv2.waitKey()

可以这样执行:

python -u test.py < cat.jpeg

关于Python-opencv : Read image data from stdin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15414480/

相关文章:

c++ - 在 OpenCV 中加载像素值数组

image-processing - 梯度压缩直方图 (CHoG)

c++ - 调试断言失败(无符号)(c+1) <= 256(在 VideoCapture::open [Qt Creator] 中)

c++ - 主函数跳过线程并且不加入以显示所需的输出

python - Windows 中的 aiohttp Python 库是否支持 HTTPS?

python tkinter Combobox 不填充 Windows 硬盘驱动器

python - 从列表中提取关键字然后使用 `and`

c++ - OpenCV凸缺陷绘图

python - Scatter 和 Hist 在 Python 的一个子图中

python - 将不同列中的数据连接到单个列中(pandas、python)