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/fi/4-manufacturing/lessons/2-check-fruit-from-device/pi-camera.md

7.6 KiB

Tallenna kuva - Raspberry Pi

Tässä osassa oppituntia lisäät kameran sensorin Raspberry Pi:hin ja luet kuvia siitä.

Laitteisto

Raspberry Pi tarvitsee kameran.

Kamera, jota käytät, on Raspberry Pi Camera Module. Tämä kamera on suunniteltu toimimaan Raspberry Pi:n kanssa ja se liitetään Pi:n omaan liitäntään.

💁 Tämä kamera käyttää Camera Serial Interface -protokollaa, joka on Mobile Industry Processor Interface Alliancen kehittämä, tunnettu nimellä MIPI-CSI. Tämä on erityinen protokolla kuvien lähettämiseen.

Liitä kamera

Kamera voidaan liittää Raspberry Pi:hin nauhakaapelilla.

Tehtävä - liitä kamera

Raspberry Pi -kamera

  1. Sammuta Pi.

  2. Liitä kameran mukana tuleva nauhakaapeli kameraan. Vedä varovasti pidikkeen mustaa muoviklipsiä ulospäin, jotta se irtoaa hieman, ja liu'uta kaapeli liittimeen siten, että sininen puoli on poispäin linssistä ja metalliset pinnit kohti linssiä. Kun kaapeli on kokonaan sisällä, työnnä musta muoviklipsi takaisin paikalleen.

    Voit katsoa animaation, joka näyttää, miten klipsi avataan ja kaapeli asetetaan, Raspberry Pi:n Getting Started with the Camera module -dokumentaatiosta.

    Nauhakaapeli liitetty kameramoduuliin

  3. Poista Grove Base Hat Pi:stä.

  4. Vie nauhakaapeli Grove Base Hatin kameran aukon läpi. Varmista, että kaapelin sininen puoli on kohti analogisia portteja, jotka on merkitty A0, A1 jne.

    Nauhakaapeli kulkee Grove Base Hatin läpi

  5. Aseta nauhakaapeli Pi:n kameraliitäntään. Vedä jälleen mustaa muoviklipsiä ylös, aseta kaapeli ja työnnä klipsi takaisin paikalleen. Kaapelin sininen puoli tulisi olla kohti USB- ja Ethernet-portteja.

    Nauhakaapeli liitetty Pi:n kameraliitäntään

  6. Kiinnitä Grove Base Hat takaisin paikalleen.

Ohjelmoi kamera

Raspberry Pi voidaan nyt ohjelmoida käyttämään kameraa PiCamera Python-kirjaston avulla.

Tehtävä - ota käyttöön vanha kameratila

Valitettavasti Raspberry Pi OS Bullseye -version julkaisun myötä kameran ohjelmisto muuttui, ja oletuksena PiCamera ei enää toimi. Työn alla on korvaava ohjelmisto, nimeltään PiCamera2, mutta se ei ole vielä valmis käytettäväksi.

Toistaiseksi voit asettaa Pi:n vanhaan kameratilaan, jotta PiCamera toimii. Kameraliitäntä on myös oletuksena pois käytöstä, mutta vanhan kameran ohjelmiston käyttöönotto aktivoi liitännän automaattisesti.

  1. Käynnistä Pi ja odota, että se käynnistyy.

  2. Käynnistä VS Code joko suoraan Pi:ssä tai yhdistä Remote SSH -laajennuksen kautta.

  3. Suorita seuraavat komennot terminaalista:

    sudo raspi-config nonint do_legacy 0
    sudo reboot
    

    Tämä ottaa käyttöön asetuksen, joka aktivoi vanhan kameran ohjelmiston, ja käynnistää Pi:n uudelleen, jotta asetus tulee voimaan.

  4. Odota, että Pi käynnistyy uudelleen, ja käynnistä VS Code uudelleen.

Tehtävä - ohjelmoi kamera

Ohjelmoi laite.

  1. Luo terminaalista uusi kansio pi-käyttäjän kotihakemistoon nimeltä fruit-quality-detector. Luo tiedosto tässä kansiossa nimeltä app.py.

  2. Avaa tämä kansio VS Codessa.

  3. Kameran kanssa vuorovaikuttamiseksi voit käyttää PiCamera Python-kirjastoa. Asenna Pip-paketti seuraavalla komennolla:

    pip3 install picamera
    
  4. Lisää seuraava koodi app.py-tiedostoon:

    import io
    import time
    from picamera import PiCamera
    

    Tämä koodi tuo tarvittavat kirjastot, mukaan lukien PiCamera-kirjaston.

  5. Lisää tämän alle seuraava koodi kameran alustamiseksi:

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

    Tämä koodi luo PiCamera-objektin ja asettaa resoluution 640x480. Vaikka suurempia resoluutioita tuetaan (jopa 3280x2464), kuvantunnistin toimii paljon pienemmillä kuvilla (227x227), joten ei ole tarpeen tallentaa ja lähettää suurempia kuvia.

    Rivi camera.rotation = 0 asettaa kuvan kierron. Nauhakaapeli tulee kameran alapuolelta, mutta jos kamera on käännetty helpottamaan kohteen suuntaamista, voit muuttaa tätä riviä kierron asteiden mukaan.

    Kamera roikkuu juomatölkin yläpuolella

    Esimerkiksi, jos ripustat nauhakaapelin kameran yläpuolelle, aseta kierto 180 asteeseen:

    camera.rotation = 180
    

    Kameran käynnistyminen kestää muutaman sekunnin, joten time.sleep(2)-rivi on tarpeen.

  6. Lisää tämän alle seuraava koodi kuvan tallentamiseksi binäärimuodossa:

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

    Tämä koodi luo BytesIO-objektin binääridatan tallentamista varten. Kuva luetaan kamerasta JPEG-tiedostona ja tallennetaan tähän objektiin. Objekti sisältää sijainti-indikaattorin, joka kertoo, missä kohtaa dataa ollaan, joten rivi image.seek(0) siirtää sijainnin takaisin alkuun, jotta kaikki data voidaan lukea myöhemmin.

  7. Lisää tämän alle seuraava koodi kuvan tallentamiseksi tiedostoon:

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

    Tämä koodi avaa tiedoston nimeltä image.jpg kirjoittamista varten, lukee kaiken datan BytesIO-objektista ja kirjoittaa sen tiedostoon.

    💁 Voit tallentaa kuvan suoraan tiedostoon ilman BytesIO-objektia antamalla tiedostonimen camera.capture-kutsulle. Syynä BytesIO-objektin käyttöön on se, että myöhemmin tässä oppitunnissa voit lähettää kuvan kuvantunnistimelle.

  8. Suuntaa kamera johonkin kohteeseen ja suorita tämä koodi.

  9. Kuva tallennetaan ja nimetään image.jpg nykyiseen kansioon. Näet tämän tiedoston VS Code -tiedostoselaimessa. Valitse tiedosto nähdäksesi kuvan. Jos se tarvitsee kiertoa, päivitä rivi camera.rotation = 0 tarpeen mukaan ja ota uusi kuva.

💁 Löydät tämän koodin code-camera/pi -kansiosta.

😀 Kameran ohjelmointi onnistui!


Vastuuvapauslauseke:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.