[PYTHON] [Einführung in RasPi4] Umgebungskonstruktion; OpenCV / Tensorflow, japanische Eingabe ♪

RasPi4 Ich habe es endlich bekommen, also habe ich zum ersten Mal seit einiger Zeit die Umgebung aufgebaut. Es wurde ähnlich wie Jetson_nano gemacht. Dieser Artikel ist eine Fortsetzung des letzten Males, und ich werde bis zu dem Punkt erklären, an dem die Anwendung funktioniert. 【Referenz】 0. [Jetson_nano] Tensorflow-, Chainer- und Keras-Umgebung können aus der Installation erstellt werden ♬

  1. Wie man eine Bilderkennungsumgebung mit tiefem Lernen von Raspberry Pi 4 von null bis 1 Stunde erstellt
  2. OpenCV 4 mit Raspberry Pi
  3. Japanische Lokalisierung der Raspberry Pi-Tastatureingabe

Was ich getan habe

・ Umgebungskonstruktion bis OpenCV / Tensorflow ・ Überprüfung des OpenCV / Tensorflow-Betriebs ・ Umweltbau, bis zu japanischem Input ・ Ich schreibe das

・ Umgebungskonstruktion bis OpenCV / Tensorflow

Dies wurde gemäß dem Umweltkonstruktionsverfahren von Herrn Karaage durchgeführt (Referenz 1).

Karaages Umweltbauverfahren.


$ git clone https://github.com/karaage0703/raspberry-pi-setup
$ cd raspberry-pi-setup
$ ./setup-opencv-raspbian-buster.sh
$ ./setup-tensorflow-raspbian-buster.sh

Jetzt können Sie OpenCV und Tensorflow einfach installieren. Außerdem habe ich für die Entwicklung zusätzlich Folgendes installiert.

jupyter-notebook.


$ sudo apt install jupyter-notebook

Auch dieses Mal habe ich alles auf einmal mit Karaages Skript installiert, aber da die Wahrscheinlichkeit groß ist, dass es einen Unterschied zum neuesten gibt, werden die folgenden Elemente nacheinander aus Referenz 2 installiert.

Neueste Betriebssystemumgebung.


$ sudo apt-get update
$ sudo apt-get upgrade

CMake-Umgebung.


$ sudo apt-get install build-essential cmake unzip pkg-config

Bilddateibibliothek.


$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev

Bibliothek für Videostream.


$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev 
$ sudo apt-get install libxvidcore-dev libx264-dev

Bildanzeigebibliothek.


$ sudo apt-get install libgtk-3-dev 
$ sudo apt-get install libcanberra-gtk*

Computerbibliothek.


$ sudo apt-get install libatlas-base-dev gfortran

・ Überprüfung des OpenCV / Tensorflow-Betriebs

Ich habe den folgenden Code zur Überprüfung des Betriebs verwendet. Ich habe keine Keras installiert, aber wie in Referenz 0 oben heißt es tf.keras ...., sodass Sie die Lib von Keras verwenden können.

import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(512, activation=tf.nn.relu),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

Das Ergebnis ist wie folgt

$ python3 tensorflow_ex.py
Train on 60000 samples
Epoch 1/5
60000/60000 [==============================] - 41s 685us/sample - loss: 0.2220 - acc: 0.9342
Epoch 2/5
60000/60000 [==============================] - 41s 676us/sample - loss: 0.0962 - acc: 0.9700
Epoch 3/5
60000/60000 [==============================] - 41s 678us/sample - loss: 0.0688 - acc: 0.9788
Epoch 4/5
60000/60000 [==============================] - 41s 678us/sample - loss: 0.0539 - acc: 0.9830
Epoch 5/5
60000/60000 [==============================] - 41s 678us/sample - loss: 0.0435 - acc: 0.9857
10000/10000 [==============================] - 3s 295us/sample - loss: 0.0652 - acc: 0.9812

・ OpenCV-Betriebsüberprüfung

Hier werde ich versuchen, den folgenden Code zu verschieben, der mit der folgenden Referenz verschoben wurde. Der Vorgang ist langsam, aber ich konnte das von der Kamera aufgenommene Bild als Film speichern. 【Referenz】 ・ RasPi: Ich habe mit OpenCV gespielt ♬

import numpy as np
import cv2

# cv2.cv.CV_FOURCC
def cv_fourcc(c1, c2, c3, c4):
    return (ord(c1) & 255) + ((ord(c2) & 255) << 8) + \
        ((ord(c3) & 255) << 16) + ((ord(c4) & 255) << 24)

cap = cv2.VideoCapture(0) #'dougasozai_car.mp4')
GRAY_FILE_NAME='douga_camera_5s.avi'
FRAME_RATE=30
ret, frame = cap.read()

# Define the codec and create VideoWriter object
height, width, channels = frame.shape
out = cv2.VideoWriter(GRAY_FILE_NAME, \
                      cv_fourcc('X', 'V', 'I', 'D'), \
                      FRAME_RATE, \
                      (width, height), \
                      True)  #isColor=True for color

#Fenstervorbereitung
cv2.namedWindow('frame')
cv2.namedWindow('gray')
cv2.namedWindow('hsv')
cv2.namedWindow('mask')
cv2.namedWindow('res')
cv2.namedWindow('gaussian')

while ret == True:
    #ret, frame = cap.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    hsv =cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    hsv =cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    #Gaußsche Glättung
    # (5, 5)Wird durch die Standardabweichung in x- und y-Richtung geändert, um den Grad der Unschärfe zu ändern, ist das letzte Argument int,Es scheint ein Grenztyp zu sein, aber die Bedeutung der Zahlen ist unbekannt
    g_frame = cv2.GaussianBlur(frame, (15, 15), 0)
    gg_frame = cv2.cvtColor(g_frame, cv2.COLOR_BGR2GRAY)

    # define range of blue color in HSV
    lower_blue = np.array([110,50,50])
    upper_blue = np.array([130,255,255])

    # Threshold the HSV image to get only blue colors
    mask = cv2.inRange(hsv, lower_blue, upper_blue)

    # Bitwise-AND: mask and original image
    res = cv2.bitwise_and(frame,frame, mask= mask)
    cv2.imshow('frame',frame)
    cv2.imshow('gray',gray)
    cv2.imshow('hsv',hsv)
    cv2.imshow('mask',mask)
    cv2.imshow('res',res)
    cv2.imshow('gaussian',g_frame)
    #Graues Bild zum Schreiben von Grau, Erweiterungsänderung für Rahmen
    #Für Farbe raus= cv2.VideoWriter()Mit isColor=Richtig, falsch, wenn grau
    out.write(g_frame)  #OK by cv_fourcc('X', 'V', 'I', 'D')
    #Wenn Sie eine Taste drücken, wird es gestoppt
    if cv2.waitKey(1000*5) >= 0:  
        break
    ret, frame = cap.read()
cap.release()
out.release()
cv2.destroyAllWindows()

Das Ausführungsbeispiel lautet wie folgt (obwohl es sich um ein Standbild handelt) 2020-02-08-215532_1920x1080_scrot.png Zumindest hat dies funktioniert, sodass OpenCV verfügbar ist.

・ Umweltbau, japanischer Input

Es wäre schön, hier die Objekterkennung zu versuchen, aber dieses Mal möchte ich eine Konversations-App veröffentlichen, damit ich Japanisch eingeben kann. Nehmen wir zunächst an, dass die japanische Lokalisierung letzte Nacht abgeschlossen wurde, und folgen Sie Referenz 3. "Raspberry Pi hat standardmäßig ein US-Layout für die Tastatur, daher werden wir das JIS-Layout verwenden." Wenn überhaupt, hatte ich das Gefühl, dass es sich um ein JIS-Layout handelt. .. ..

$ sudo raspi-config

1.4 Internationalisierungsoptionen auswählen (Tastatur bewegen ↑ ↓) Wählen Sie und drücken Sie die ENTER-Taste 2. Wählen Sie I3 Tastaturlayout ändern und drücken Sie die [Eingabetaste]. 3. Wählen Sie Generic 105-key (Intl) PC und drücken Sie die [Eingabetaste]. 4. Wählen Sie Andere und drücken Sie die [Eingabetaste]. 5. Wählen Sie Japanisch und drücken Sie die [Eingabetaste]. 6.Japanisch - Wählen Sie Japanisch (OADG 109A) und drücken Sie die [Eingabetaste] 7. Wählen Sie Standard für das Tastaturlayout und drücken Sie die Eingabetaste 8. Wählen Sie No compose key und drücken Sie die [Eingabetaste]. Ich denke, dass Sie zum ersten Bildschirm zurückkehren werden, wählen Sie also und beenden Sie [Enter], um den Vorgang zu beenden (Sie können den Cursor mit ← → auf der Tastatur bewegen). Hier einmal aktualisieren

$ sudo apt-get update

Wenn Sie Befehle eingeben können, installieren Sie die japanische Eingabe auf der Tastatur.

$ sudo apt-get install -y uim uim-anthy

Beim Neustart wird das Array usw. angezeigt.

$ sudo reboot

Nach dem Neustart sollte die Tastatur in der Lage sein, das JIS-Layout einzugeben. → Ist das Tastenlayout nicht US-Layout?

Installation von japanischen Schriftarten und IME

Fügen Sie die japanische Schriftart und den IME gemäß dem folgenden Referenzverfahren ein. 【Referenz】 Japanische Eingabeeinstellungen für Himbeerkuchen Erstens sind das Display usw. auf Japanisch, so dass es vielleicht ausreicht, nur IME in diese Arbeit aufzunehmen, aber ich habe es vorerst in einen Kreis gesetzt.

$ sudo apt-get update

Installation japanischer Schriftarten

$ sudo apt-get install fonts-vlgothic

Das Folgende ist die wesentliche Installation von japanischem IME IME anders als oben.

$ sudo apt-get install ibus-anthy

Unterwegs (j / n) y ENTER

Starten Sie abschließend neu, um die japanische Anzeige zu aktivieren.

$ sudo reboot

Das Bild ist wie folgt. Ich denke, Sie können Englisch-Japanisch usw. am rechten Ende dieser oberen Leiste wählen. Vorerst können Sie jetzt Japanisch eingeben. Wenn dies jedoch unverändert bleibt, muss die Umschaltung einzeln in der oberen Reihe ausgewählt werden. Vergrößerte Ansicht des rechten Endes (aus Pinta) pinta_selectArea.jpg

2020-02-09-221858_1920x1080_scrot.png

One-Shot-Schlüssel wechseln

Der One-Shot-Schaltschlüssel für Jetson-nano wurde durch das folgende Verfahren gefunden. Mit anderen Worten, wenn Sie Folgendes auswählen, können Sie mit den Tasten halber Breite / voller Breite automatisch zwischen englischen Zeichen und A wechseln. Außerdem wurde die Eingabe auf das japanische Tastaturlayout zurückgesetzt. 2020-02-09-223602_896x434_scrot.png

Das,. .. .. Möglicherweise benötigen Sie die Tasteneingabeeinstellungen und den obigen IME nicht

Zusammenfassung

・ OpenCV / Tensorflow wurde erfolgreich installiert ・ Japanische Eingabe (105 Tastenanordnung) ist jetzt möglich

・ Installieren Sie die Konversations-App ・ Ich möchte eine Spracheingabe vornehmen und die Sprachkonversation abschließen ・ Ich frage mich, ob ich eine Überwachungskamera machen werde. .. .. "Leute dort, setzen Sie eine Maske auf"

Recommended Posts

[Einführung in RasPi4] Umgebungskonstruktion; OpenCV / Tensorflow, japanische Eingabe ♪
Ab Ubuntu 20.04 Einführung in die Umgebungskonstruktion
[Einführung in RasPi4] Umgebungskonstruktion, Mecab des Verarbeitungssystems für natürliche Sprache usw. .. .. ♪
Einführung in OpenCV (Python) - (2)
Aufbau der Python-Entwicklungsumgebung 2020 [Von der Python-Installation bis zur Einführung in die Poesie]
[Ubuntu 18.04] Aufbau einer Tensorflow 2.0.0-GPU-Umgebung
Einführung in Private TensorFlow
Aufbau der Ubuntu14.04 + GPU + TensorFlow-Umgebung
[Tensorflow] Aufbau der Tensorflow-Umgebung unter Windows 10
[Raspi4; Einführung in den Sound] Stabile Aufzeichnung der Toneingabe mit Python ♪
Einführung in Deep Learning zum ersten Mal (Chainer) Erkennung japanischer Zeichen Kapitel 1 [Umgebungskonstruktion]
Umgebungskonstruktion von Python und OpenCV
Ändern Sie den Ubuntu-Tofu in die japanische Umgebung
Einführung in TensorFlow - Hallo World Edition
Python-Umgebungskonstruktion (Pyenv, Anaconda, Tensorflow)
Spigot (Papier) Einführung in die Erstellung eines Plug-Ins für 2020 # 01 (Umgebungskonstruktion)
Python3 TensorFlow für Mac-Umgebungskonstruktion
Einführung in die Bildanalyse opencv python
OpenCV3 & Python3 Umgebungskonstruktion unter Ubuntu
Eine Einführung in OpenCV für maschinelles Lernen
[Python] Straße zu Schlangen (1) Umgebungskonstruktion
[Einführung in die Udemy Python3 + -Anwendung] 41. Eingabefunktion
Wahrscheinlich die einfachste Einführung in TensorFlow
Anfänger lesen "Einführung in TensorFlow 2.0 für Experten"
Einführung eines japanischen Eingabesystems in Serene Linux
Einführung in Docker Erstellen einer Ubuntu-Umgebung in Ubuntu
[Super Einführung] Maschinelles Lernen mit Python - Von der Umgebungskonstruktion bis zur Implementierung von Simple Perceptron-
Einführung in Python Bereiten wir die Entwicklungsumgebung vor
Vom Aufbau der Kivy-Umgebung bis zur Anzeige von Hello World
Einführung von ferenOS 2 (Einstellungen nach der Installation, japanische Eingabeeinstellungen)
Aufbau der Kissenumgebung - Für Docker + iPython (und OpenCV)
Einführung in Python "Re" 1 Erstellen einer Ausführungsumgebung
[Einführung in cx_Oracle] (5.) Umgang mit japanischen Daten
Von 0 bis Django Entwicklungsumgebung Konstruktion bis Grundbetrieb
[TF] So erstellen Sie Tensorflow in einer Proxy-Umgebung
[Python] Umgang mit japanischen Zeichen mit openCV
Von der Python-Umgebungskonstruktion zur virtuellen Umgebungskonstruktion mit Anaconda
Schritte zum schnellen Erstellen einer umfassenden Lernumgebung auf einem Mac mit TensorFlow und OpenCV