我正在嘗試編寫一個腳本,允許用戶上傳視頻並抓取視頻第一幀製作的縮略圖。我現在所用的腳本不會引發任何錯誤,但是當創建縮略圖時,它是一個破碎的圖像,只有13b,我希望它至少有幾個kb。OpenCV從緩衝區獲取縮略圖
f = request.FILES['media-video']
cap = cv2.VideoCapture(f.read())
img = cap.read()
thumb_buf = StringIO.StringIO()
thumb_buf.write(img)
content = thumb_buf.getvalue()
blob_service.put_blob('vid-thumbnail', thumbnail_name, content, x_ms_blob_type='BlockBlob')
thumb_buf.close()
cap.release()
如果我做cap = cv2.VideoCapture(f)
,而不是f.read()
我得到一個錯誤說an integer is required
。
如果我使用cv2.imencode('.png', img[1])
寫的,而不是來緩衝使用StringIO
的形象,我得到一個錯誤opencv/modules/highgui/src/loadsave.cpp:429: error: (-215) code in function imencode
任何想法,爲什麼腳本創建一個破碎的縮略圖?
編輯:看起來問題是與VideoCapture(f.read())
。在它寫入到StringIO之前,img會返回None
。
擺脫StringIO的的,這是偉大的字符串,但壞的二進制信息。我想,你想要[imencode](http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#imencode)在第一個地方 – berak