8

一見単純な目標を達成するための一般的なガイダンスを受け取りたいと思っています. 私は DSLR カメラ (Canon EOS 50D) を持っており、カメラに写真を撮るように指示するアプリケーションを作成する必要があります。また、写真をコンピューターに転送し、場合によってはカメラのストレージから削除する必要があります。おまけとして、アプリケーションでカメラからライブ プレビューを取得できます。私の環境は Windows (XP Pro または Vista Enterprise) と .Net 3.5 (C#) です。

私はいくつかの調査を行い、いくつかのオプションを見つけました。私が知っているものは機能しますが、将来的にはキヤノンのカメラのみを使用するように制限します. この機能の多くを提供する SDK を Canon から見つけてダウンロードしました。私はSDKに目を通しました.SDKは広範でCで書かれていますが、開発を少しスピードアップするC#ラッパーがあります.

私が見つけた別のオプションは、Windows Portable Devices と呼ばれるものです。どうやら、これは PTP および MTP 標準を実装するデバイスと通信する API です。これは COM ベースであり、私が知る限り、.Net ラッパーはありません。ただし、これはショー ストッパーではありません。必要な機能を P/Invoke するか、Managed C++ DLL を作成してアプリケーションで使用し、カメラと対話することができます。

WPD の経験があり、アドバイスをくれる人を探しています。ドキュメントを熟読し、画像の転送と画像の削除に関する参照を見てきました。ただし、写真を撮ったり、プレビュー画像を取得したり、フォーカス/オートフォーカスを言ったりするコマンドについての言及は見たことがありません。

4

5 に答える 5

3

WPD API はコマンド WPD_COMMAND_STILL_IMAGE_CAPTURE_INITIATE を提供します

お使いのカメラがサポートしているかどうかはわかりませんが、簡単に確認できるはずです。ドライバー開発キットから「wpdinfo」ツールを取得し、カメラを接続して起動できる場合は、WPD_COMMAND_CAPABILITIES_GET_SUPPORTED_COMMANDS コマンドを送信し、静止画像キャプチャ コマンドをサポートしているかどうかを確認します。もしそうなら、あなたはそれを試してみることができます.

于 2010-01-22T12:07:23.977 に答える
3

Tallganglyguyからのコメントは間違っています。PTPでは、新しい画像をトリガーして露出などを変更できます。一部のカメラには、PTPコマンドの一部のみを公開するファームウェアがあります。

PTP は、写真の撮影などの一般的なデバイス コントロールをサポートしているため、ユーザーは追加のソフトウェアを必要とせずに、PC とカメラの組み合わせを新しい異なる方法で再び利用できます。

于 2011-08-15T22:37:42.460 に答える
2

私の Eos フレームワークを試してください: https://github.com/esskar/Canon.Eos.Framework

私見では、SDK に付属の .cs ファイルよりも優れた代替手段です。

于 2012-02-06T20:52:59.993 に答える
1

PTP と MTP はどちらも、デジタル スチル カメラ (DSC) からファイルを転送するためのプロトコルです。プロトコルは、新しい画像をトリガーしたり、露出制御を設定したりする機能を提供しません。カメラ固有の SDK を使用すると行き詰まります。複数のベンダーのサポートが必要な場合、Nikon にはカメラ用の Canon SDK と同様のサポートを提供する SDK があります。

PTP と MTP の詳細については、http: //en.wikipedia.org/wiki/Picture_Transfer_Protocol および http://en.wikipedia.org/wiki/Media_Transfer_Protocolを参照してください。

編集

カメラのドライバーが WIA インターフェイスを提供していると仮定すると、 WIAはあなたにとって興味深いかもしれないと言い忘れていました。

于 2009-11-10T23:24:41.293 に答える
0

これは本当に一般的ですが、役立つ場合があります。

SDK が異なる 2 つの異なるベンダーの 2 つの異なるバーコード スキャナーを使用するアプリケーションを作成する必要がありました。コーディング対象のメソッドとイベントを定義するインターフェイスを作成し、インターフェイスを実装するアダプター クラスを作成しました。

私の場合、これはうまく機能し、一方から他方への切り替えは非常にシームレスでした。同じアプローチを採用した場合、1 つの SDK に完全に依存することはありません。

于 2009-11-13T02:15:19.113 に答える