0

私はこのカメラ SDK を使用しようとしています。カメラに CameraGetImageData(BYTE* data) という関数があるとします。これは、バイト配列を取り、画像データで変更し、ステータス コード ベースを返すと仮定します。成功/失敗について。SDK はドキュメントをまったく提供しない (コード コメントさえも) ので、ここでは推測しているだけです。これは私がうまくいくと思うもののコードスニペットです

BYTE* data = new BYTE[10000000]; // an array of an arbitrary large size, I'm not 
                                 // sure what the exact size needs to be so I 
                                 // made it large
CameraGetImageData(data);
// Do stuff here to process/output image data

Visual Studio でブレークポイントを使用してコードを実行したところ、CameraGetImageData 関数が実際に配列を変更していることを確認できました。私の質問は、カメラがデータを出力する標準的な方法はありますか? このデータの使用を開始するにはどうすればよいですか? また、各バイトは何を表していますか? カメラは 8 ビット カラーでキャプチャします。

4

5 に答える 5

1

純粋な赤、純粋な緑、純粋な青の写真を撮ります。何が出てくるか見てください。

また、少なくとも最初は、メモリがある場合は1,000万ではなく、1億のアレイを作成します。ピクセルあたり24ビットを使用する10メガピクセルのカメラは、アレイよりも大きい3,000万バイトを使用します。色ごとに16ビットを格納するなどのクレイジーな処理を行う場合、最大6000万バイトまたは8000万バイトかかる可能性があります。

この大きな配列を渡す前に、データで埋めることができます。たとえば、「01234567」を繰り返し入力します。そうすれば、どのバイトが書き込まれ、どのバイトが書き込まれなかったかが本当に明らかなので、返されるものの実際のサイズを計算できます。

于 2012-07-20T07:47:59.803 に答える
0

カメラの種類さえ知らなければ、この質問に答えることはほとんど不可能です。科学的なカメラの場合、IEEE 1394(別名IIDCまたはDCAM)規格に準拠している可能性があります。私はこのライブラリを使って浜松製のカメラを使ってカメラとのインターフェースを個人的に使ってきました。

私の場合、カメラの出力は単なる生データでした。カメラ自体はモノクロで、各ピクセルの深度解像度は12ビットでした。したがって、各ピクセル強度は、16ビットの符号なし値として結果配列に格納されました。配列のサイズは単純にwidth * height * 2バイトでした。ここで、widthおよびheightはピクセル単位の画像の寸法であり、係数2はピクセルあたり16ビットの場合です。widthとはheight、選択したカメラモードから事前に知られていました。

結果画像のサイズがある場合は、バイト配列をファイルにダンプし、PythonまたはMatlabのいずれかで結果をロードして、コンテンツを視覚化してみてください。もう1つの可能性は、このrawファイルをImageJなどの画像エディターでロードし、そこから何かを取得したいということです。

幸運を!

于 2012-07-20T07:46:56.120 に答える
0

基準はないと思いますが、カメラの前に単色の画像をいくつか置くことで、どの値が何であるかを識別しようとすることができます. したがって、すべてのピクセルはほぼ同じ色になります。各ピクセルにどの色を格納する必要があるかがわかれば、配列で色がどのように表現されるかがわかります。私はblack, white, reg, green, blue画像で行きます。

SDKただし、大きな配列を作成するのは本当に悪い設計であるため、ドキュメントがあるより良いものを見つけることも検討してください

于 2012-07-20T07:38:06.793 に答える
0

データ出力には「標準」または「共通」の方法がないため、カメラ SDK のドキュメントを確認する必要があります。データでも、RGB データでも、圧縮済みのデータでもかまいません。カメラのベンダーから情報が提供されない場合は、最も一般的な形式を処理するライブラリを見つけて、必要なデータを渡して何が起こるかを確認してみてください。

于 2012-07-20T07:39:35.810 に答える
-1

この質問の解決策がお役に立てば幸いです。https : //stackoverflow.com/a/3340944/291372実際にはピクセルの配列があります(カメラが8ビットでキャプチャする場合はピクセルあたり1バイトと想定します)。必要なのは、幅と高さを決定することだけです。その後、バイト配列からビットマップイメージを復元してみることができます。

于 2012-07-20T07:46:42.050 に答える