こんにちは、私はholoviewsを使い始めました。そして、私はholoviews、opencvを使って小さなストリーミングビデオアプリケーションを準備しようとしています。私は竜巻と非同期プログラミングの経験が非常に限られています。holoviewsとtornado pythonを使ってストリーミングプロットを作成する方法
from holoviews.streams import Pipe, Buffer
from tornado.ioloop import IOLoop
from tornado import gen
import cv2
@gen.coroutine
def f():
pipe = Pipe(data=[])
#print(pipe)
vd = cv2.VideoCapture("TestVideo.mp4")
width = int(vd.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(vd.get(cv2.CAP_PROP_FRAME_HEIGHT))
frames = int(vd.get(cv2.CAP_PROP_FRAME_COUNT))
print("Hello")
for i in range(frames):
ret, frame = vd.read()
#print(i)
try:
rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
gen.sleep(10000000000)
pipe.send(rgb[:])
#print(str(i)+'x')
except:
#print(str(i)+'Error')
print("Error at Frame:"+str(i))
pass
vd.release()
cv2.destroyAllWindows()
IOLoop.current().add_callback(f)
hv.DynamicMap(hv.RGB, streams=[pipe])
実行中/ストリーミングアップデートが取得できません。私はちょうど最後のフレームで単一のイメージを取得します。誰かがここで私の間違いを理解するのを助けることができます
待つだけ、あなたが317年後に次のフレームを取得します、心配しないでください。ジョークを除いて、 'gen.sleep'は時間を秒単位でとります。 「10000000000秒」は「317年」以上です。 – xyres
ハハ、そして私は最後のフレームで終わります。驚くべきことに、とにかくそれがミリ秒/マイクロ秒ではないことを知っていて良かった。ありがとう – Rahuketu86