本主題討論如何啟用紅外(IR)相機的臉部驗證,並適用於原始設備製造商(OEM)和想要在其裝置中提供此功能的獨立硬體廠商(IHV)。
FrameServer
下圖顯示臉部驗證如何透過 FrameServer 與新的驅動程式堆疊搭配運作:
臉部驗證 DDIs
Windows 10 1607 版中有兩個新的臉部驗證 DDI 建構可支援 Windows Hello:
KSPROPERTY_CAMERACONTROL_EXTENDED_FACEAUTH_MODE
這個屬性識別碼是用來在驅動程式中使用下列旗標來開啟和設定臉部驗證:
KSCAMERA_EXTENDEDPROP_FACEAUTH_MODE_DISABLED
KSCAMERA_EXTENDEDPROP_FACEAUTH_MODE_ALTERNATIVE_FRAME_ILLUMINATION
KSCAMERA_EXTENDEDPROP_FACEAUTH_MODE_BACKGROUND_SUBTRACTION
如需此控件的詳細資訊,以及如何使用位旗標來設定臉部驗證模式,請參閱 KSPROPERTY_CAMERACONTROL_EXTENDED_FACEAUTH_MODE 主題。
MF_CAPTURE_METADATA_FRAME_ILLUMINATION
IR 相機的這個元數據屬性會指定畫面使用作用中的 IR 照明。 如需詳細資訊,請參閱 擷取統計數據元數據屬性 主題中的強制元數據屬性數據表。
USB 相機支援
若要在您的裝置上啟用紅外相機的臉部驗證,您必須提供正確設定的 DeviceMFT 元件和 USB 視訊類別 (UVC) 擴充單元。
設定 DeviceMFT 元件
作為在裝置上建置支援臉部驗證的 DeviceMFT 元件起點,您可以使用 sampledevicemft 範例。
若要修改驅動程式範例,請對範例原始程式碼進行下列變更:
在 DeviceMFT 元件中新增來源類型資訊
標記 DeviceMFT 元件中的照明旗標
在 DeviceMFT 元件中,將 IKSControl 轉換為可以與您在下一節中建置的 UVC 擴充單元進行通訊的設備:
建置 USB 視訊類別 (UVC) 擴充單元
若要為您的裝置建置 UVC 擴充單元,請遵循建置擴充單元範例控件 中的指示。 本主題包含建立必要項目檔的相關信息,並提供下列主題中範例程式代碼的連結:
UVC 擴充單元的範例介面 (包含 Interface.idl)
範例擴充單元外掛程式 DLL (包含 Xuproxy.h 和 Xuproxy.cpp)
UVC 擴充單元的範例登錄項(包含 Xusample.rgs)
UVC 擴充單元的範例應用程式(包含 TestApp.cpp)
如需範例程式代碼模組如何搭配運作的詳細資訊,請參閱 擴充單元 Plug-In 架構 主題。
INF 檔案條目
若要在 KSCATEGORY_SENSOR_CAMERA下註冊 UVC 裝置,應指定感測器相機升級旗標:
HKR,,SensorCameraMode,0x00010001,0x00000001
若要從一般相機應用程式隱藏此相機,因為它沒有 RGB 串流,請使用 skip 列舉旗標,如下所示:
HKR,,SkipCameraEnumeration,0x00010001,0x00000001
這會將相機從 KSCATEGORY_VIDEO移除,這將阻塞它不被一般相機應用程式透過舊版列舉方式來列舉。
SkipCameraEnumeration 和 SensorCameraMode 項目都應該放在 INF 檔案的 DDInstall.HW 區段中。
適用於KSCATEGORY_SENSOR_CAMERA的 HLK 測試,以協助驅動程式測試
IR 和 RGB 相機模組都需要硬體標誌套件 (HLK) 測試。 這項測試會驗證用於 Windows Hello 臉部驗證的 RGB 和 IR 相機的基本功能。 RGB 相機需求已在 HLK 測試套件中指定。
以下是 IR 相機模組必須透過才能啟用的測試:
列舉所有 KS 感測器類別相機:
支援 IR 資料流的裝置必須位在 SENSOR_CAMERA 類別之下。
支援 RGB 數據流的裝置會進入 VIDEO_CAMERA 類別。
僅對支援 IR 和 RGB 串流的單一相機裝置,應在 KSCAMERA 類別中的兩個類別中註冊裝置:SENSOR_CAMERA 和 VIDEO_CAMERA。
尋找具備已定義的 MF_DEVICESTREAM_ATTRIBUTE_FACEAUTH_CAPABILITY 屬性的資料流。
如果沒有已定義 MF_DEVICESTREAM_ATTRIBUTE_FACEAUTH_CAPABILITY 屬性的數據流,請略過測試。
如果多個數據流已定義 MF_DEVICESTREAM_ATTRIBUTE_FACEAUTH_CAPABILITY 屬性,則測試失敗,因為只有一個數據流應具備 Windows Hello 功能。
如果此數據流 MF_DEVICESTREAM_ATTRIBUTE_FRAMESOURCE_TYPES 未設定為 IR,則測試失敗,因為此數據流上不能有 RGB 媒體類型。
選取此數據流,並驗證媒體類型為 Windows Hello 支援 (MJPG/L8/NV12),且解析度大於或等於 320 x 320 像素:
如果支援臉部驗證設定檔,請針對設定檔媒體類型驗證此資料流。
如果不支援臉部驗證配置檔,請驗證此串流的預設媒體類型。
檢查臉部驗證 DDI 中其中一個特性的支援:有照明/無照明或環境光減除。
將 KS 屬性設定為支援的屬性。
開始串流
檢查執行時間屬性:
驗證時間戳的精確度(臉部驗證與元數據的測試預覽)。
確認啟動時間小於 500 毫秒(使用元數據進行臉部驗證的預覽測試)。
使用下列參數確認以最小幀速率進行串流:15 FPS 照明、15 FPS 環境光或環境光減去,解析度大於或等於 320 x 320 像素,媒體類型為 L8/NV12,樣本上具有正步幅:
如果已啟用照明屬性,請檢查畫面上的元數據(15 FPS 的照亮/非照亮配對畫面)。
如果已啟用環境減法屬性,請檢查15 FPS的環境畫面上是否沒有元數據。
停止串流
取消 KS 控制
RGB + IR 的並行:測試是否在相機配置檔中定義
如果未通過上述 HLK 測試,Microsoft將不會向 OEM 發出已簽署的驅動程式,且 Windows Hello 不會運作。
相關主題
使用 MediaCapture 擷取相片和視訊