[英]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.