GigE VisionイーサネットカメラでOpenCVを使用する必要がありますが、これを行う方法、ポインター、ドキュメント、コード例についての有用な情報が見つかりませんでしたか?
カメラからフレームを読み取る必要があります。
Gig-Eは、さまざまなカメラの通信規格です。 OpenCVに Prosilica Gig-E ベースのカメラのラッパーが含まれるようになりました(CV_CAP_PVAPIを参照)
ただし、一般的には、カメラのネイティブAPIを使用してデータを取得し、openCVを使用して返されたデータを画像に変換する方が適切です。openCvには、いくつかのBayerパターン-> RGBルーチンが含まれています。
CvCaptureモジュールは、カメラやファイルからシームレスに読み取ることができるため、テストには便利ですが、高速リアルタイムビジョンにはあまり適していません。
あなたはこれを行うことができます! GenTLコンシューマであるBaumer GAPI SDKを使用しました。 GenTLは、genIcam内のモジュールである汎用トランスポート層です。 GenTLで読むことができます [〜#〜]ここ[〜#〜] 。 BaumerのGAPIやBaslerのAPIなどのGenTLコンシューマを使用すると、物事がはるかに簡単になります。 GigEカメラで動作するはずです。
BaumerのGAPI SDKをより包括的な方法で別の回答 [〜#〜]こちら[〜#〜] で使用したので、必要なものの概要を示します。
C:\Program Files\Baumer\Baumer GAPI SDK\Docs\Programmers_Guide
_にあるはずです)。セクション4.3.1を参照してください。C:\Program Files\Baumer\Baumer GAPI SDK\Components\Examples\C++\src\0_Common\005_PixelTransformation
_)にある必要があります。 C++ファイルをコピーして、新しいプロジェクトのソースディレクトリに貼り付けます。これらの#includeステートメントを.cppソースファイルの先頭に追加します。
_#include <opencv2\core\core.hpp
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\video\video.hpp>
_
これらの変数宣言をmain()
関数の先頭に追加します
_// OPENCV VARIABLE DECLARATIONS
cv::VideoWriter cvVideoCreator; // Create OpenCV video creator
cv::Mat openCvImage; // create an OpenCV image
cv::String videoFileName = "openCvVideo.avi"; // Define video filename
cv::Size frameSize = cv::Size(2048, 1088); // Define video frame size
cvVideoCreator.open(videoFileName, CV_FOURCC('D', 'I', 'V', 'X'), 20, frameSize, true); // set the codec type and frame rate
_
元の005_PixelTransformation.cppファイルでは、569行目に、8つの画像をループするfor
ループがあり、for(int i = 0; i < 8; i++)
と表示されています。これを継続的に実行するように変更したいと考えています。これをwhile
ループに変更することでこれを行いました
_while (pDataStream->GetIsGrabbing())
_
Whileループ内には、画像のピクセル形式をチェックするif
およびelse
ステートメントがあります。 else
ステートメントの終了中括弧の後、pImage->Release();
ステートメントの前に、次の行を追加します
_// OPEN CV STUFF
openCvImage = cv::Mat(pTransformImage->GetHeight(), pTransformImage->GetWidth(), CV_8U, (int *)pTransformImage->GetBuffer());
// create OpenCV window ----
cv::namedWindow("OpenCV window: Cam", CV_WINDOW_NORMAL);
//display the current image in the window ----
cv::imshow("OpenCV window : Cam", openCvImage);
cv::waitKey(1);
_
openCvImage
オブジェクトに正しいピクセル形式を選択したことを確認してください。私のカメラはモノ8ビットなので、_CV_8U
_を選択しました。
ビルドしてコンパイルすると、カメラからのライブフィードを表示するopenCVウィンドウが表示されます。
私が言ったように、私はそれをしたので、それは可能です。問題が発生した場合は、プログラマーズガイドを参照してください。
私はOpenCVでuEye GigEカメラ(5240)を使用しています。そのままではcv :: VideoCaptureとして機能します。それにもかかわらず、APIを使用すると、カメラのパラメーターをより詳細に制御できます。
カメラの種類とプラットフォームについては触れません。 Windowsでは、OpenCVのドキュメントによると:
現在、Windowsでは2つのカメラインターフェイスを使用できます:Video for Windows(VFW)とMatrox Imaging Library(MIL)
GigEカメラドライバーがVFWをサポートしている可能性は低く、MILには無料のAFAIKではないMILライブラリが必要です。
ほとんどのGigEカメラには、画像のキャプチャに使用できるAPIがあります。ほとんどの場合、APIは GenICam に基づいています。おそらくあなたの最善のアプローチは、カメラに付属のAPIを使用し、キャプチャした画像をIplImage構造(C)またはMatクラス(C++)に変換することです。