簡體   English   中英

從Windows C#Canon SDK與PTP或MTP對齊圖片

[英]Snapping pictures from Windows C# Canon SDK vs PTP or MTP

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

我做了一些研究,發現了幾個選擇。 我知道一個會工作,但限制我將來只使用佳能相機。 我找到並從佳能下載了一個SDK,它提供了很多這方面的功能。 我查看了SDK,雖然它很廣泛並且用C語言編寫,但它確實有C#包裝器,可以加快開發速度。

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

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

WPD api提供命令WPD_COMMAND_STILL_IMAGE_CAPTURE_INITIATE

我不確定你的相機是否支持它,但它應該很容易找到。 如果你可以從驅動程序開發工具包中獲取“wpdinfo”工具並在連接相機的情況下啟動它,那么發送一個WPD_COMMAND_CAPABILITIES_GET_SUPPORTED_COMMANDS命令並查看它是否支持靜止圖像捕獲命令。 如果那么你可以嘗試一下。

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界面。

TallGanglyGuy的評論不正確。 ptp允許您觸發新圖像並更改曝光等。某些相機的固件僅顯示某些ptp命令。

PTP支持常見的設備控制,例如拍照,這樣用戶可以再次以新的和不同的方式利用PC /相機組合,而無需額外的軟件。

試試我的Eos框架: https//github.com/esskar/Canon.Eos.Framework

恕我直言,它是一個比SDK附帶的.cs文件更好的選擇。

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

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

這在我的情況下效果很好,從一個切換到另一個是非常無縫的。 如果采用相同的方法,則不會完全依賴於一個SDK。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM