You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/ms/4-manufacturing/lessons/2-check-fruit-from-device/pi-camera.md

8.0 KiB

Tangkap Imej - Raspberry Pi

Dalam bahagian pelajaran ini, anda akan menambah sensor kamera pada Raspberry Pi anda, dan membaca imej daripadanya.

Perkakasan

Raspberry Pi memerlukan kamera.

Kamera yang akan anda gunakan ialah Raspberry Pi Camera Module. Kamera ini direka untuk berfungsi dengan Raspberry Pi dan disambungkan melalui penyambung khusus pada Pi.

💁 Kamera ini menggunakan Camera Serial Interface, protokol daripada Mobile Industry Processor Interface Alliance, dikenali sebagai MIPI-CSI. Ini adalah protokol khusus untuk menghantar imej.

Sambungkan kamera

Kamera boleh disambungkan ke Raspberry Pi menggunakan kabel reben.

Tugas - sambungkan kamera

Kamera Raspberry Pi

  1. Matikan kuasa Pi.

  2. Sambungkan kabel reben yang disertakan dengan kamera ke kamera. Untuk melakukannya, tarik perlahan klip plastik hitam pada pemegang supaya ia keluar sedikit, kemudian gelongsorkan kabel ke dalam soket, dengan bahagian biru menghadap jauh dari lensa, dan jalur pin logam menghadap ke arah lensa. Setelah kabel dimasukkan sepenuhnya, tolak klip plastik hitam kembali ke tempatnya.

    Anda boleh melihat animasi yang menunjukkan cara membuka klip dan memasukkan kabel pada dokumentasi Raspberry Pi Getting Started with the Camera module.

    Kabel reben dimasukkan ke dalam modul kamera

  3. Tanggalkan Grove Base Hat dari Pi.

  4. Lalukan kabel reben melalui slot kamera di Grove Base Hat. Pastikan bahagian biru kabel menghadap ke arah port analog yang dilabelkan A0, A1 dan sebagainya.

    Kabel reben melalui Grove Base Hat

  5. Masukkan kabel reben ke dalam port kamera pada Pi. Sekali lagi, tarik klip plastik hitam ke atas, masukkan kabel, kemudian tolak klip kembali ke tempatnya. Bahagian biru kabel harus menghadap ke port USB dan ethernet.

    Kabel reben disambungkan ke soket kamera pada Pi

  6. Pasang semula Grove Base Hat.

Programkan kamera

Raspberry Pi kini boleh diprogramkan untuk menggunakan kamera dengan menggunakan pustaka Python PiCamera.

Tugas - aktifkan mod kamera legasi

Malangnya, dengan keluaran Raspberry Pi OS Bullseye, perisian kamera yang disertakan dengan OS telah berubah, menyebabkan PiCamera tidak berfungsi secara lalai. Terdapat pengganti yang sedang dibangunkan, dipanggil PiCamera2, tetapi ia belum sedia untuk digunakan.

Buat masa ini, anda boleh menetapkan Pi anda ke mod kamera legasi untuk membolehkan PiCamera berfungsi. Soket kamera juga dilumpuhkan secara lalai, tetapi menghidupkan perisian kamera legasi secara automatik akan mengaktifkan soket tersebut.

  1. Hidupkan Pi dan tunggu sehingga ia selesai boot.

  2. Lancarkan VS Code, sama ada terus pada Pi, atau sambung melalui sambungan Remote SSH.

  3. Jalankan arahan berikut dari terminal anda:

    sudo raspi-config nonint do_legacy 0
    sudo reboot
    

    Ini akan menukar tetapan untuk mengaktifkan perisian kamera legasi, kemudian reboot Pi untuk membuat tetapan itu berkuat kuasa.

  4. Tunggu Pi untuk reboot, kemudian lancarkan semula VS Code.

Tugas - programkan kamera

Programkan peranti.

  1. Dari terminal, buat folder baru dalam direktori rumah pengguna pi yang dipanggil fruit-quality-detector. Buat fail dalam folder ini yang dipanggil app.py.

  2. Buka folder ini dalam VS Code.

  3. Untuk berinteraksi dengan kamera, anda boleh menggunakan pustaka Python PiCamera. Pasang pakej Pip untuk ini dengan arahan berikut:

    pip3 install picamera
    
  4. Tambahkan kod berikut ke fail app.py anda:

    import io
    import time
    from picamera import PiCamera
    

    Kod ini mengimport beberapa pustaka yang diperlukan, termasuk pustaka PiCamera.

  5. Tambahkan kod berikut di bawah ini untuk memulakan kamera:

    camera = PiCamera()
    camera.resolution = (640, 480)
    camera.rotation = 0
    
    time.sleep(2)
    

    Kod ini mencipta objek PiCamera, menetapkan resolusi kepada 640x480. Walaupun resolusi yang lebih tinggi disokong (sehingga 3280x2464), pengelas imej berfungsi pada imej yang jauh lebih kecil (227x227) jadi tidak perlu menangkap dan menghantar imej yang lebih besar.

    Baris camera.rotation = 0 menetapkan putaran imej. Kabel reben masuk ke bahagian bawah kamera, tetapi jika kamera anda diputar untuk memudahkannya mengarah ke item yang ingin anda klasifikasikan, maka anda boleh menukar baris ini kepada bilangan darjah putaran.

    Kamera tergantung di atas tin minuman

    Sebagai contoh, jika anda menggantung kabel reben di atas sesuatu supaya ia berada di bahagian atas kamera, maka tetapkan putaran kepada 180:

    camera.rotation = 180
    

    Kamera mengambil masa beberapa saat untuk memulakan, oleh itu baris time.sleep(2).

  6. Tambahkan kod berikut di bawah ini untuk menangkap imej sebagai data binari:

    image = io.BytesIO()
    camera.capture(image, 'jpeg')
    image.seek(0)
    

    Kod ini mencipta objek BytesIO untuk menyimpan data binari. Imej dibaca dari kamera sebagai fail JPEG dan disimpan dalam objek ini. Objek ini mempunyai penunjuk kedudukan untuk mengetahui di mana ia berada dalam data supaya lebih banyak data boleh ditulis ke hujung jika diperlukan, jadi baris image.seek(0) menggerakkan kedudukan ini kembali ke permulaan supaya semua data boleh dibaca kemudian.

  7. Di bawah ini, tambahkan kod berikut untuk menyimpan imej ke fail:

    with open('image.jpg', 'wb') as image_file:
        image_file.write(image.read())
    

    Kod ini membuka fail yang dipanggil image.jpg untuk penulisan, kemudian membaca semua data dari objek BytesIO dan menulisnya ke fail.

    💁 Anda boleh menangkap imej terus ke fail dan bukannya objek BytesIO dengan memberikan nama fail kepada panggilan camera.capture. Sebab menggunakan objek BytesIO adalah supaya kemudian dalam pelajaran ini anda boleh menghantar imej ke pengelas imej anda.

  8. Arahkan kamera ke sesuatu dan jalankan kod ini.

  9. Imej akan ditangkap dan disimpan sebagai image.jpg dalam folder semasa. Anda akan melihat fail ini dalam penjelajah VS Code. Pilih fail untuk melihat imej. Jika ia memerlukan putaran, kemas kini baris camera.rotation = 0 seperti yang diperlukan dan ambil gambar lain.

💁 Anda boleh menemui kod ini dalam folder code-camera/pi.

😀 Program kamera anda berjaya!


Penafian:
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI Co-op Translator. Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.