Bagikan melalui


Gambaran umum pelacakan kode QR

Untuk mengakses repositori GitHub untuk sampel kode QR:

Dengan headset Windows Mixed Reality dan HoloLens, aplikasi Anda dapat mendeteksi kode QR di lingkungan di sekitar headset, membangun sistem koordinat di lokasi dunia nyata setiap kode. Anda juga dapat merender hologram di lokasi yang sama di beberapa perangkat untuk membuat pengalaman bersama. Setelah mengaktifkan webcam perangkat, Anda akan mengenali kode QR di versi terbaru proyek Anda. Untuk hasil terbaik dalam produksi, kami sarankan Anda meninjau bagian praktik terbaik.

Dalam artikel ini, Anda akan mempelajari cara untuk:

Dukungan perangkat

Produk HoloLens Generasi ke-1 HoloLens 2 Headset imersif
OpenXR ✔️ (dengan ekstensi OpenXR Runtime versi 113 dan OpenXR XR_MSFT_scene_marker )
Mixed Reality Unity Plugin ✔️ (dengan OpenXR Runtime versi 113 dan Mixed Reality Unity Plugin ARMarkerManager)
SDK QR warisan ✔️ ✔️ ✔️

Catatan

Berikut ini khusus untuk API kode QR warisan. Sebaiknya gunakan implementasi OpenXR untuk kode QR sebagai gantinya.

Menggunakan SDK kode QR warisan, pelacakan kode QR dengan headset Windows Mixed Reality imersif pada PC desktop didukung pada Windows 10 Versi 2004 dan yang lebih tinggi. Microsoft.MixedReality.QRCodeWatcher.IsSupported() Gunakan API untuk menentukan apakah fitur didukung pada perangkat saat ini.

Versi kode QR yang didukung

Tabel berikut mencantumkan versi kode QR yang didukung dan tidak didukung:

  Versi kode QR
Didukung:
  • QR Code versi 1 - 10
  • Micro QR Codes M1-M4
  • Semua pengodean
Tidak didukung:
  • QR Codes 10 - 20 (tidak didukung sepenuhnya)
  • QR Codes versi 21+
  • Modul yang di-tweak, misalnya: modul melingkar, pantulan, terbalik (hitam/putih).
  • Logo
  • Penanaman terstruktur

    Praktik terbaik untuk deteksi kode QR

    Zona tenang di sekitar kode QR

    Untuk dibaca dengan benar, kode QR memerlukan margin di sekitar semua sisi kode. Margin ini tidak boleh berisi konten yang dicetak dan harus empat modul (persegi hitam tunggal dalam kode) lebar.

    Dokumentasi kode QR resmi berisi informasi lebih lanjut tentang zona tenang.

    Pencahayaan dan latar belakang

    Kualitas deteksi kode QR rentan terhadap berbagai iluminasi dan latar belakang.

    • Dalam kondisi pencahayaan normal, berikan kontras yang cukup untuk modul hitam/putih untuk performa yang lebih baik.

    • Dalam kondisi pencahayaan ekstrem dengan pencahayaan terang atau latar belakang gelap, Anda dapat mencoba mengurangi dan menyesuaikan kontras yang dapat meningkatkan tingkat deteksi kode QR. Latar belakang putih dalam kode QR dapat dikurangi dari 255 ke bawah.

    Ukuran kode QR

    Perangkat Windows Mixed Reality dan HoloLens tidak berfungsi dengan kode QR dengan sisi yang lebih kecil dari 5 cm.

    Untuk kode QR dengan sisi mulai dari 5 cm hingga 10 cm, perangkat harus cukup dekat untuk mendeteksi kode. Mungkin perlu waktu lebih lama dari rata-rata untuk mendeteksi kode.

    Waktu yang tepat untuk mendeteksi kode tidak hanya bergantung pada ukuran kode QR, tetapi seberapa jauh Anda dari kode. Bergerak lebih dekat ke kode akan membantu mengimbangi masalah dengan ukuran.

    Jarak dan posisi sudut dari kode QR

    Kamera pelacakan hanya dapat mendeteksi tingkat detail tertentu. Untuk kode kecil (kurang dari 10 cm di sepanjang sisi), Anda harus cukup dekat. Untuk kode QR versi 1 bervariasi dari ukuran 10 cm hingga 25 cm, jarak deteksi minimum adalah antara 0,15 meter dan 0,5 meter.

    Jarak deteksi untuk ukuran meningkat secara linier, tetapi juga tergantung pada versi QR atau ukuran modul yang didukung. Semakin tinggi versinya, semakin kecil modul, yang hanya dapat dideteksi dari posisi yang lebih dekat. Anda juga dapat mencoba kode micro-QR jika Anda ingin jarak deteksi lebih lama. Deteksi QR bekerja dengan berbagai sudut += 45 deg untuk memastikan kami memiliki resolusi yang tepat untuk mendeteksi kode.

    Pertimbangan deteksi lainnya:

    • Kode QR pada permukaan melengkung tidak didukung.
    • Orientasi dalam bidang didukung. Keluar dari bidang harus <= +-45 melihat langsung untuk memiliki deteksi yang lebih baik.
    • Ukuran fisik kode QR harus memiliki modul setidaknya 2/3 piksel. Catatan: Versi kode QR yang lebih tinggi akan memiliki modul yang lebih kecil.

    Untuk hubungan tradeoff antara jarak dan ukuran kode QR untuk deteksi optimal, lihat grafik berikut:

    Bagan jarak ukuran kode QR

    Penting

    Selalu pastikan Anda memiliki cukup kontras dan batas yang tepat.

    Mengelola data kode QR

    Perangkat Windows Mixed Reality dan HoloLens mendeteksi kode QR pada tingkat sistem pada driver. Ketika perangkat di-boot ulang atau driver dimulai ulang, riwayat kode QR yang terdeteksi dihapus. Kode QR yang dideteksi ulang diperlakukan sebagai objek baru.

    Sebaiknya konfigurasikan aplikasi Anda untuk mengabaikan kode QR yang lebih lama dari tanda waktu tertentu, yang dapat ditentukan dalam aplikasi. QR Code API menentukan waktu saat deteksi terakhir terjadi. Sebagian besar pengembang aplikasi akan menggunakan waktu sistem saat aplikasi diluncurkan untuk menentukan waktu kode QR terdeteksi.

    Data kode QR tidak spesifik untuk aplikasi. Setelah peluncuran aplikasi, akan ada daftar kode QR yang tersedia yang disediakan. Pengembang aplikasi akan menentukan kode QR mana yang relevan dengan aplikasi ini.

    Penempatan kode QR dalam spasi

    Untuk rekomendasi tentang tempat dan cara menempatkan kode QR, lihat Pertimbangan lingkungan untuk HoloLens.

    Pemecahan Masalah dan Tanya Jawab Umum

    Kemampuan apa yang diperlukan?

    Untuk mengaktifkan pelacakan kode QR di aplikasi HoloLens Anda, tambahkan kemampuan webcam ke manifes aplikasi. Jika Anda mengembangkan di Unity, Anda dapat mengonfigurasi ini dari pengaturan pemutar.

    Selain itu, pengguna mungkin diminta oleh dialog izin untuk memberikan izin webcam aplikasi Anda. Ini hanya terjadi sekali selama masa pakai aplikasi. Dalam kasus seperti aplikasi yang secara eksplisit meminta akses webcam, dialog tidak akan muncul kembali.

    Untuk aplikasi Unity dengan kemampuan WebCam, mengaktifkan ARMarkerManager dalam adegan dapat memicu dialog izin webcam muncul.

    Untuk aplikasi OpenXR C++ asli, panggilan awal ke xrComputeNewSceneMSFT dengan XrNewSceneComputeInfoMSFT::requestedFeatures berisi XR_SCENE_COMPUTE_FEATURE_MARKER_MSFT dapat memicu dialog izin.

    Catatan

    Berikut ini khusus untuk API kode QR warisan. Sebaiknya gunakan implementasi OpenXR untuk kode QR sebagai gantinya.

    Anda akan memerlukan kemampuan webcam yang ditambahkan ke manifes Anda (kotak centang di Kemampuan Unity). Jika Anda membangun sebagai proyek UWP standar, itu juga ada di package.appxmanifest dalam proyek solusi.

    Dalam SDK kode QR warisan, minta akses dengan memanggil metode berikut:

    #if WINDOWS_UWP
    
    async QRCodeWatcher.RequestAccessAsync();
    
    #endif
    

    Status akses harus (status == QRCodeWatcherAccessStatus::Allowed).

    Jika akses ditolak, maka fitur akan mengembalikan akses ditolak saat Anda memulai QRTracking.

    API ini harus dipanggil sebelum Anda membuat QRCodeWatcher objek.

    Jika Anda menjalankan proyek dari Unity, Anda juga perlu memastikan bahwa Anda memanggil dari utas UI. Jika tidak, API akan selalu kembali ditolak. Untuk informasi selengkapnya, lihat kelas AppCallbacks di Unity Manual.

    Untuk informasi selengkapnya tentang menyiapkan proyek Anda untuk Unity, lihat mengonfigurasi Unity untuk Windows Mixed Reality.

    Bagaimana cara membuat Fitur Pelacakan Kode QR berfungsi di perangkat HoloLens 2?

    Pelacakan QR otomatis di HoloLens 2, dan Anda memerlukan kemampuan "webcam" yang ditambahkan ke aplikasi Anda.

    Di mana saya dapat menemukan file plugin API?

    Aplikasi harus menggunakan Runtime OpenXR HoloLen untuk mendeteksi Kode QR. OpenXR untuk Windows Mixed Reality (113.2403.5001 atau lebih tinggi) menyediakan dukungan kode QR pada perangkat HoloLens.

    Untuk aplikasi Unity, dukungan kode QR disediakan melalui ARMarkerManager komponen yang disediakan dengan Plugin Mixed Reality OpenXR.

    Untuk dukungan kode QR di aplikasi non-Unity, gunakan ekstensi XR_MSFT_scene_marker OpenXR.

    Catatan

    Berikut ini khusus untuk API kode QR warisan. Sebaiknya gunakan implementasi OpenXR untuk kode QR sebagai gantinya.

    Semua file dan dokumentasi yang diperlukan dapat ditemukan di sini di NuGet di sini:

    Microsoft.MixedReality.QR

    Bagaimana cara menyiapkan aplikasi Unity untuk menggunakan ARMarkerManager untuk mendeteksi kode QR?

    Di aplikasi Unity, ARMarkerManager komponen digunakan untuk menangani bagaimana deteksi kode QR dalam lingkungan fisik diwakili dalam adegan. ARMarkerManager Menyediakan:

    • Peristiwa untuk memberi tahu pelanggan ketika kode QR yang terdeteksi telah ditambahkan ke manajer, diperbarui, atau dihapus.

    • Kumpulan ARMarker yang dapat dilacak untuk kode QR di bawah deteksi.

    • Metode yang mengembalikan data untuk kode QR seperti yang ditentukan oleh ID yang dapat dilacak.

    Untuk digunakan ARMarkerManager di aplikasi, Anda perlu mengimpor paket Plugin Mixed Reality OpenXR.

    Untuk mengimpor paket:

    1. Unduh dan jalankan Alat Fitur Mixed Reality.
    2. Instal plugin OpenXR.

    Lihat Selamat Datang di Alat Fitur Mixed Reality untuk instruksi terperinci tentang cara menggunakan alat ini.

    Prosedur umum selanjutnya adalah:

    1. Dalam proyek Unity Anda, aktifkan kemampuan WebCam .
    2. Buat prefab dan lampirkan komponen seperti yang ditunjukkan ARMarker :
      Prefab dikonfigurasi
    3. Buka adegan yang Anda inginkan agar kode QR terdeteksi saat berjalan.
    4. Lampirkan ARMarkerManager ke GameObject di adegan Anda dan atur Marker Prefab ke prefab yang Anda buat.
      Prefab ditentukan

    Untuk instruksi dan informasi yang lebih rinci, buka kode QR di Unity.

    Untuk contoh cara menggunakan kode QR di aplikasi Unity Anda, lihat skenario sampel kode QR di GitHub.

    Bagaimana cara menyiapkan aplikasi non-Unity untuk menggunakan OpenXR untuk mendeteksi kode QR?

    Deteksi kode QR di OpenXR disediakan melalui ekstensi XR_MSFT_scene_marker . Ekstensi ini memungkinkan beberapa kode QR dilacak dan dapat menyediakan ukuran, posisi, tanda waktu deteksi terakhir, UUID, dan data kode QR buffer untuk kode QR yang terdeteksi.

    Untuk mengaktifkan dukungan kode QR, ekstensi XR_MSFT_scene_marker dan XR_MSFT_scene_understanding harus diaktifkan.

    Untuk langkah demi langkah terperinci, lihat gambaran umum ekstensi XR_MSFT_scene_marker dalam spesifikasi OpenXR 1.0.

    Untuk contoh cara menggunakan kode QR, lihat Scene_QRCode.cpp dalam sampel SceneUnderstandingUwp di GitHub.

    Bagaimana cara menyiapkan UWP untuk menggunakan Microsoft.MixedReality.QR.QRCodeWatcher?

    Catatan

    Berikut ini khusus untuk API kode QR warisan. Sebaiknya gunakan implementasi OpenXR untuk kode QR sebagai gantinya.

    • Gunakan paket NuGet untuk membuka kemasan file yang diperlukan.

    • Tambahkan referensi ke Microsoft.MixedReality.QR.winmd dalam proyek Anda dan mulai gunakan API.

    • Tambahkan versi arsitektur plugin yang benar dan gunakan sesuai dalam build.

    Bagaimana cara menyiapkan Unity dengan Microsoft.MixedReality.QR.QRCodeWatcher?

    Catatan

    Berikut ini khusus untuk API kode QR warisan. Sebaiknya gunakan implementasi OpenXR untuk kode QR sebagai gantinya.

    Gunakan NuGet untuk Unity dan arahkan ke paket NuGet di atas.

    Bagaimana cara membuat kode QR?

    Lihat generator kode QR apa pun.

    Jika pelacakan kode QR tidak berfungsi secara umum, apa yang harus saya lakukan?

    • Apakah versi QR Code adalah versi yang didukung? Kami tidak mendukung versi kepadatan tinggi seperti versi 40. Tidak ada yang di atas versi 10 yang dijamin; versi di atas 20 tidak didukung.

    • Apakah Anda cukup dekat dengan kode QR? Lihat jarak dan posisi sudut dari kode QR.

    • Bagaimana pencahayaannya? Ada masalah yang diketahui di mana deteksi menjadi sulit ketika kode QR berada di latar belakang lingkungan yang gelap --kode QR akan muncul dicuci ke kamera karena kontras tinggi. Untuk informasi selengkapnya, lihat pencahayaan dan latar belakang.

    Apa akurasinya?

    Ketika terdeteksi dalam satu bingkai, ukurannya diperkirakan memiliki kesalahan paling banyak 1% dari ukuran aktual. Misalnya, kode 10 cm mungkin hingga +/- 1 mm off dalam ukuran terukur. Di bawah deteksi berkelanjutan, posisi kode mungkin melayang hingga +/- 2,5 mm. Setelah Anda pindah dari rentang deteksi, posisi deteksi sebelumnya terserah pada belas kasihan kesalahan peta.

    Seberapa dekat saya harus dengan kode QR untuk mendeteksinya?

    Jaraknya jelas tergantung pada ukuran kode QR, dan juga versi apa itu. Untuk informasi selengkapnya, lihat jarak dan posisi sudut dari kode QR.

    • Pada HoloLens 2, untuk kode QR versi 1 bervariasi dari sisi 5 cm hingga 25 cm, jarak deteksi minimum berkisar antara 0,25 meter hingga 0,5 meter. Ini terjauh dapat dideteksi dari mulai dari sekitar 0,5 m untuk kode terkecil hingga dua meter untuk yang lebih besar.

    • Pada Windows Mixed Reality, jarak untuk ukuran ini dibelah dua.

    • Untuk kode apa pun yang lebih besar, ekstrapolasi--jarak deteksi untuk ukuran meningkat secara linier. Untuk kode apa pun yang lebih kecil, deteksi tidak akan terjadi --4-5 cm adalah yang terkecil yang dapat kita deteksi.

    Mengapa saya tidak dapat membaca kode QR dengan logo?

    Kode QR dengan logo tidak didukung.

    Kode QR terdeteksi, jadi mengapa saya tidak mendapatkan data?

    • Jika platform tidak dapat mendekode kode QR, tidak akan ada data. Anda dapat menggunakan aliran dan menginterpretasikan data menggunakan kode sumber terbuka.

    • Beberapa fitur, seperti penambung struktur, tidak didukung.

    Untuk informasi selengkapnya, lihat versi kode QR apa yang didukung?.

    Apakah kode QR disimpan di tingkat 'spasi' atau tingkat aplikasi?

    Kode QR disimpan pada tingkat sistem dalam sesi driver, atau sesi boot di HoloLens. Untuk informasi selengkapnya, lihat mengelola data kode QR.

    Bagaimana cara kerjanya dengan platform yang mendasar? Di mana mereka bertahan?

    Kode QR yang terdeteksi disimpan dalam memori oleh driver.

    Bagaimana cara men-debug aplikasi di Visual Studio saat saya menerima pesan kesalahan "Microsoft.MixedReality.QR.pdb tidak ditemukan"?

    Catatan

    Berikut ini khusus untuk API kode QR warisan. Sebaiknya gunakan implementasi OpenXR untuk kode QR sebagai gantinya.

    Pemuatan simbol untuk Microsoft.MixedReality.QR.dll dilewati karena tidak ditentukan dalam daftar modul yang disertakan.

    Untuk mereprodusi

    Catatan

    Berikut ini khusus untuk API kode QR warisan. Sebaiknya gunakan implementasi OpenXR untuk kode QR sebagai gantinya.

    Ikuti langkah-langkah untuk mereprodusi perilaku ini:

    1. Menginstal Microsoft.MixedReality.QR (NuGet) dan MRTK
    2. Coba debug

    Anda harus dapat men-debug aplikasi dengan Microsoft.MixedReality.QR.dll, tetapi DLL tidak ditemukan:

    Pesan kesalahan Microsoft.MixedReality.QR.pdb tidak ditemukan

    Catatan

    Berikut ini khusus untuk API kode QR warisan. Sebaiknya gunakan implementasi OpenXR untuk kode QR sebagai gantinya.

    Kami sedang berupaya menambahkan simbol ke rilis berikutnya. Sementara itu, Anda masih dapat men-debug aplikasi dengan mengecualikan DLL di opsi Visual Studio:

    tidak termasuk DLL di opsi Visual Studio

    Untuk informasi selengkapnya, lihat Mengonfigurasi pengaturan Visual Studio.

    Apakah ada batas berapa banyak kode QR yang dapat dipindai dalam sesi?

    Ada batas 100 kode QR yang disimpan di tingkat sistem dalam driver, dalam waktu 10 menit.

    Apakah proses penghalusan kode QR berubah?

    Proses smoothing kode QR berubah setelah 20H2, dari pose smoothing ke smoothing ukuran. Untuk mengembalikan perilaku ke proses penghalusan sebelumnya, seseorang akan menerapkan algoritma penghalusan jika data pose kode QR baru terdeteksi dalam waktu 5 detik atau 10 cm dari bingkai yang terdeteksi sebelumnya. Data transformasi dipadukan melalui rasio tertimbang 90% dari bingkai saat ini dengan 10% dari bingkai sebelumnya.

    Lihat juga