か、それはBumblebee(または他のPoint Gray Imagingセンサー)に完全に依存していますか? 私は、bumblebee 2ステレオリグに付属のステレオ処理APIをリンクして、一部のオフライン画像を処理しようとしています。 triclopsステレオ関数は、input.calとinput.ppmの形式でコンテキストフラグとキャリブレーションファイルを必要とするように見えます(つまり、2つのステレオ整流画像がぼやけて重なっている1つの画像)。このinput.ppmファイルを他のオフライン画像から取得しても、triclops stereo APIを使用できるようにするにはどうすればよいですか。そして、キャリブレーションファイルinput.calについては、それがオフラインの画像とどのように整合するかを得ることができますか?Triclops Stereo APIを使用してオフラインイメージを処理できますか?
答えて
はい、Triclops APIを使用してオフラインイメージを処理できます。あなたが指摘する要件は、カメラと画像ファイルから来る較正ファイル(.cal)です。キャリブレーションファイルは、撮影時間に最適に抽出されますが、設定を変更しない限り、私の経験では常に同じです。 Triclops APIの入力を満たすには、画像変換の方法を提供するPoint Gray Fly Capture APIも使用する必要があります。私のプロジェクトは、あなたが求めていることのすべてを正確に実行しています。フィールド内の生のピクセルインターリーブ画像をキャプチャし、後でFlyCapture APIとTriclops APIを使用して整流した視差画像とステレオペアからの点群を作成します。
キャリブレーションファイルをキャプチャする方法については、Point GrayサンプルとそのAPIドキュメントを参照してください。 flycaptureGetCalibrationFileFromCamera(context, &szCalFile);
コンテキストが「カメラコンテキスト」の場合
初期画像ファイルのフォーマットは変換方法を変えますが、ここではC++を使用してrawからstereoへの変換を行っています。私のサイズはRAW画像を1280×960でマルハナバチXB3カラーカメラを使用し、外側の2台のカメラからの画像をつかんだ。これまでのところ、私は全くTriclopsのAPIを使用していませんでした
// Read raw file
//pFile = fopen ("FlyCap.raw" , "rb");
pFile = fopen (argv[1] , "rb");
if (pFile==NULL) {fputs ("File error",stderr); exit (1);}
// Set raw file size
ISize = (numCols*numRows*bytesPerPixel);
// allocate memory to contain the whole file:
buffer = (unsigned char*) malloc (sizeof(char)*ISize);
if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}
// copy the file into the buffer:
result = fread (buffer,1,ISize,pFile);
if (result != ISize) {fputs ("Reading error",stderr); exit (3);}
// Create the FlyCapture Context for processing
fe = flycaptureCreateContext(&flycapture);
_HANDLE_FLYCAPTURE_ERROR("flycaptureCreateContext()", fe);
fe = flycaptureSetColorProcessingMethod(flycapture, FLYCAPTURE_HQLINEAR);
_HANDLE_FLYCAPTURE_ERROR("flycaptureSetColorProcessingMethod()", fe);
fe = flycaptureSetColorTileFormat(flycapture, FLYCAPTURE_STIPPLEDFORMAT_GBRG);
_HANDLE_FLYCAPTURE_ERROR("flycaptureSetColorTileFormat()", fe);
//Import the raw image in buffer into FlyCaptureImage structure
flycaptureImage.iCols = 1280;
flycaptureImage.iRows = 960;
flycaptureImage.iNumImages = 2;
flycaptureImage.bStippled = true;
flycaptureImage.pixelFormat = FLYCAPTURE_RAW16;
flycaptureImage.iRowInc = 2560;
flycaptureImage.timeStamp.ulSeconds = 100;
flycaptureImage.timeStamp.ulMicroSeconds = 100;
flycaptureImage.pData = buffer;
// Create buffers for holding the color and mono images
unsigned char* rowIntColor =
new unsigned char[ numCols * numRows * flycaptureImage.iNumImages * 4 ];
unsigned char* rowIntMono =
new unsigned char[ numCols * numRows * flycaptureImage.iNumImages ];
// Create a temporary FlyCaptureImage for preparing the stereo image
FlyCaptureImage tempColorImage;
FlyCaptureImage tempMonoImage;
tempColorImage.pData = rowIntColor;
tempMonoImage.pData = rowIntMono;
// Convert the pixel interleaved raw data to row interleaved format
fe = flycapturePrepareStereoImage(flycapture, flycaptureImage, &tempMonoImage, &tempColorImage );
_HANDLE_FLYCAPTURE_ERROR("flycapturePrepareStereoImage()", fe);
//Save side-by-side color stereo image
fe = flycaptureSaveImage(flycapture, &tempColorImage, stereoimg, FLYCAPTURE_FILEFORMAT_PPM);
_HANDLE_FLYCAPTURE_ERROR("flycaptureSaveImage()", fe);
printf ("Saving Stereo...\n");
注意を。 flycaptureSaveImage();
からの出力は、Triclopsメソッドに供給されます。その時点でカラー対モノを扱うオプションがいくつかあります。 TriclopsのAPIである 'stereoto3dpoints.cpp'に付属しているPoint Greyのサンプルを見てください。これがあなたを助けることを願っています。
- 1. spaCyを使用してTwitterデータを処理できますか?
- 2. githubを使用してXMLを処理できますか?
- 3. 処理でYoutube Data API v3を使用
- 4. javaでJpaTemplateを使用してトランザクションを処理しますか?
- 5. fetch apiを使用して500応答を処理する
- 6. JAXBを使用してxmlスキーマでXMLスキーマを処理できますか?
- 7. クラスはメタマジックを使用してAttributeErrorを単独で処理できますか?
- 8. ウェブブラウザでJavaScriptエンジンを使用してローカルファイルを処理できますか?
- 9. Javaでfor-eachを使用してNodeListを反復処理できますか?
- 10. Appleヘルプブックは、カスタムURLプロトコルを使用してリンクを処理できますか?
- 11. Java + ConcurrentHashMapを使用して100k同時要求を処理できますか?
- 12. .load()JQuery関数を使用してフォームを処理できますか?
- 13. サーブレットを使用してAJAXリクエストを処理しますか?
- 14. $ StateChangeStartでAngularJSとui.routerを使用して、論理フローで$ rootScopeレベルのセッションAPIを処理します
- 15. Web APIを使用してCallContextを使用できますか?
- 16. whileを使用して条件付きリストを反復処理しますか?
- 17. USING文を使用してSOAPリクエストを処理できませんか?
- 18. Node.Jsをサーバーのバックグラウンド処理に使用できますか?
- 19. 処理またはArduinoを使用したSkype API
- 20. xlsx処理用API
- 21. WoocommerceでREST APIを使用してカートと注文を処理する
- 22. AJAXとDOMを使用したAPIを処理するドロップダウンメニュー
- 23. PHPを使用してxmlを処理しています
- 24. 例外処理にアノテーションを使用していますか?
- 25. API SOAPFault処理を接続します
- 26. RESTful APIのライブデータを処理します
- 27. drupalでバッチ処理を使用してサードパーティのAPIからプログラム的にノードを作成します
- 28. ui-routerとAngularFireを使用して$ stateChangeでエラーを処理できません
- 29. Azureリソース管理APIを使用しているときにリフレッシュAADトークンを処理するためのベストプラクティス
- 30. Cを使用して処理しています