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 ♬
・ Umgebungskonstruktion bis OpenCV / Tensorflow ・ Überprüfung des OpenCV / Tensorflow-Betriebs ・ Umweltbau, bis zu japanischem Input ・ Ich schreibe das
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
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
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) Zumindest hat dies funktioniert, sodass OpenCV verfügbar ist.
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
$ 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?
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)
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.
Das,. .. .. Möglicherweise benötigen Sie die Tasteneingabeeinstellungen und den obigen IME nicht
・ 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