2009-11-10 20 views
8

我希望能夠獲得一些有關完成一個看似簡單的目標的一般指導。我有一臺數碼單反相機(Canon EOS 50D),需要編寫一個能夠告訴相機拍照的應用程序。我還需要將照片傳輸到計算機,並可能將其從相機的存儲中刪除。獎金將是在我的應用程序中從相機獲得實時預覽。我的環境將是Windows(XP Pro或Vista Enterprise)和.Net 3.5(C#)。從Windows C#Canon SDK vs PTP或MTP捕捉圖片

我已經做了一些研究並找到了幾個選項。我知道的一個將會起作用,但是這限制了我未來僅使用佳能相機。我找到並從佳能下載了一個SDK,提供了很多這種功能。我研究過SDK,雖然它很廣泛,並且用C語言編寫,但它確實有C#包裝,可以加快開發速度。

我發現的另一個選項叫做Windows便攜式設備。顯然,它是一個API,可以與實現PTP和MTP標準的設備進行通信。它基於COM,據我所知它沒有.Net包裝。然而,這不是一個表演塞子。我可以P /調用我需要的功能或編寫一個Managed C++ DLL在我的應用程序中用於與攝像頭對話。

我正在尋找任何有WPD經驗的人來給我指點。我仔細閱讀了文檔並看到了傳輸圖像和刪除圖像的參考。然而,我沒有看到提到拍攝照片,獲得預覽圖像或者說對焦/自動對焦的命令。

+0

我很想看到這個問題的答案。就個人而言,如果我只是爲自己編寫應用程序,我會先試用Canon SDK。另外,如果你已經有一套佳能鏡頭,你可能會在將來繼續使用佳能:-)。 – 2009-11-10 19:21:31

+1

這聽起來像是一個很棒的CodePlex項目。我有一個Rebel XTi,這聽起來像是一個有趣的概念。如果你決定開始一個CodePlex項目,一定要讓我知道! – 2009-11-10 19:34:12

+0

繼續使用Canon SDK的C++/CLI包裝器。這是一個真正的挑戰。我不認爲我能夠發佈CodePlex項目,因爲我無權獲得代碼。抱歉。我希望在這方面有更多的自由。 – Nate 2009-11-20 03:17:50

回答

2

的WPD API提供了命令WPD_COMMAND_STILL_IMAGE_CAPTURE_INITIATE

我不知道您的相機是否支持它,但它應該是足夠簡單瞭解一下。如果您可以從驅動程序開發工具包中獲得「wpdinfo」工具,並在連接相機的情況下啓動它,請發送WPD_COMMAND_CAPABILITIES_GET_SUPPORTED_COMMANDS命令並查看它是否支持靜態圖像捕捉命令。如果是這樣,那麼你可以試試。

+0

謝謝!這正是我所期待的。還沒有嘗試過,但一旦我有機會。目前我正在使用Canon SDK。它有它的問題,更不用說它只適用於佳能EOS相機... – Nate 2010-01-25 17:06:21

+0

我最終嘗試了這一點。不幸的是它沒有被我的EOS 50D支持。如果我有另一臺相機,我會嘗試它。我通過電子郵件發送了一個支持各種WPD命令的製造商列表的微軟WPD開發者(使用WPD博客),但他們沒有這樣的列表。不過,他們對我如何使用WPD非常有幫助。 – Nate 2010-06-03 06:33:30

2

PTP和MTP都是從數碼相機(DSC)傳輸文件的協議。該協議不提供觸發新圖像或設置曝光控制的功能。你會被卡住使用相機特定的SDK。如果您需要多個供應商支持,尼康有一個SDK可爲其相機提供與Canon SDK類似的支持。

對PTP和MTP

更多信息可以在這裏找到: http://en.wikipedia.org/wiki/Picture_Transfer_Protocolhttp://en.wikipedia.org/wiki/Media_Transfer_Protocol

編輯

我忘了提,WIA可能是有趣的你,假設你的相機的驅動器提供一WIA界面。

+0

我看了WIA,它已被Windows Portable Devices取代。雖然我不確定PTP或MTP是否包含此功能(拍照),但我確實在WPD中看到了暗示可能的信息。無論如何,WPD應該(見下文),這正是我正在考慮使用這個應用程序。自此我決定使用SDK,並可能在稍後時間探索WPD。 「 」構建於WPD上的應用程序可以探索設備,發送和接收內容,甚至控制設備,例如拍攝照片......「 http://msdn.microsoft.com/en-us /library/dd388998%28VS.85%29.aspx – Nate 2009-11-12 00:55:57

0

這是非常通用的,但它可能有所幫助。

我必須編寫一個應用程序,使用來自兩個不同SDK的兩個不同供應商的兩個不同條形碼掃描儀。我創建了一個接口來定義我想要編寫的方法和事件,然後編寫實現了我的接口的適配器類。

這對我而言效果很好,從一個切換到另一個非常無縫。如果您採用相同的方法,則不會完全依賴於一個SDK。

+0

是的,一個接口是給定的。我可以使用泛型方法輕鬆創建基類或接口,並根據需要實現。雖然這很有用,但爲許多相機品牌製作單個SDK需要較少的工作。謝謝。 – Nate 2009-11-20 03:16:02

2

TallGanglyGuy的評論不正確。 PTT確實可以讓你觸發新的圖像並改變曝光等。某些相機具有隻顯示某些ptp命令的固件。

PTP支持通用設備控制,如拍攝照片,從而 用戶可以利用PC /攝像機組合在新的和再次 不同的方式,而不需要額外的軟件。