私たちはwait_for_frames()またはpoll_for_frames()関数を呼び出すかどうか、送信フレームを開始します、それは転送されますが、私は、この私の推測を検証する方法がない、行くために、インテルRealsense D435カメラを推測するだけでpipeline.start()関数を起動します諮問公式の顧客サービス、私は本当に彼らが私に返事を与えて理解していません。。。
pipeline.startを()を実行した後、しますカメラが連続して自分のコンピュータにフレームを送信し、またはカメラが唯一の私がwait_for_frames()を呼び出して自分のコンピュータにフレームを送信します?6100#を
最初は私はUSBデータ伝送の現在のレートを表示するためのツールを監視し、使用するUSBトラフィックに希望:WindowsシステムがUSBのリアルタイムなデータ転送速度を検出するために、どのように?しかし、あまりにも多くの問題のように見える、我々はメモリ(pipeline.startを開始した後に変更するかどうかを判断することができる場合)、カメラはすぐにフレームにそれを送信するのでしょうか?
まず第一に、私はコンピュータにカメラを接続し、これが現在のタスクマネージャショーのメモリは、次のとおりです。
現在の状況に応じて、試験手順の調製:
# 导包
import pyrealsense2 as rs
import numpy as np
import cv2 as cv
import time
ctx = rs.context()
cam_serials = [dev.get_info(rs.camera_info.serial_number) for dev in ctx.query_devices()]
# print(cam_serials)
# ['838212073249', '827312070790', '826212070395']
for serial in cam_serials:
locals()['pipeline' + serial] = rs.pipeline(ctx)
locals()['config' + serial] = rs.config()
locals()['config' + serial].enable_device(serial)
locals()['pipeline' + serial].start(locals()['config' + serial])
while True:
for serial in cam_serials:
locals()['frames' + serial] = locals()['pipeline' + serial].wait_for_frames()
locals()['color_frame' + serial] = locals()['frames' + serial].get_color_frame()
locals()['color_image' + serial] = np.asanyarray(locals()['color_frame' + serial].get_data())
cv.imshow('{}'.format(serial), locals()['color_image' + serial])
cv.waitKey(1)
# time.sleep(10000)
以下のデータは、カメラの動作のさまざまな条件に応じて記録されています。
カメラヘッドの数 | pipeline.start() | wait_for_frames() | フレーミング遅延 | 表示画面かどうか | メモリ/提出 | リマーク | |
---|---|---|---|---|---|---|---|
1 | ノー | ノー | 0 | ノー | 6.9 | 7.0に上昇瞬時にカメラを挿入します | |
2 | ノー | ノー | 0 | ノー | 6.9 | ||
3 | ノー | ノー | 0 | ノー | 6.9 | ||
1 | それはあります | ノー | 0 | ノー | 7.5 | ||
2 | それはあります | ノー | 0 | ノー | 7.6 | ||
3 | それはあります | ノー | 0 | ノー | 7.7 | ||
1 | それはあります | それはあります | 0 | ノー | 7.4 | ||
2 | それはあります | それはあります | 0 | ノー | 7.6 | ||
3 | それはあります | それはあります | 0 | ノー | 7.7 | ||
1 | それはあります | それはあります | 0 | それはあります | 7.5 | ||
2 | それはあります | それはあります | 0 | それはあります | 7.6 | ||
3 | それはあります | それはあります | 0 | それはあります | 7.7 | ||
1 | それはあります | それはあります | 5000ms | ノー | 7.5 | ||
2 | それはあります | それはあります | 5000ms | ノー | 7.6 | ||
3 | それはあります | それはあります | 5000ms | ノー | 7.7 | ||
1 | それはあります | それはあります | 5000ms | それはあります | 7.4 | ||
2 | それはあります | それはあります | 5000ms | それはあります | 7.6 | ||
3 | それはあります | それはあります | 5000ms | それはあります | 7.7 |
我々はpoll_for_frames()関数を使用する場合代わりに()関数をwait_for_frames、データは、実質的に上記と一致しています
それは限り、私たちはpipeline.start()関数を起動して、意味は、カメラ缶我々はwait_for_frames()関数(またはpoll_for_framesを()関数)、それは私達のUSBの帯域幅を占有します呼び出すかどうか、私たちのコンピュータの送信フレームにストリーミングを開始しましたか?