簡體   English   中英

Python-opencv:從stdin讀取圖像數據

[英]Python-opencv: Read image data from stdin

如何從stdin而不是從文件中讀取圖像數據?

使用C ++接口,似乎有可能: https//stackoverflow.com/a/5458035/908515 函數imdecode也可以在Python中使用。 但它期望一個numpy array作為(第一個)參數。 我不知道如何轉換stdin數據。

這是我試過的:

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 stdin緩沖區對於圖像來說太小了。 您可以使用-u標志運行程序以刪除緩沖。 這個答案的更多細節。

第二個是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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM