RasPi4 Je l'ai enfin compris, alors j'ai créé un environnement pour la première fois depuis longtemps. Cela a été fait de la même manière que Jetson_nano. Cet article est une continuation de la dernière fois, et j'expliquerai jusqu'au point où l'application fonctionne. 【référence】 0. [Jetson_nano] L'environnement Tensorflow, Chainer et Keras peut être créé à partir de l'installation ♬
・ Construction d'environnement; jusqu'à OpenCV / Tensorflow ・ Vérification du fonctionnement OpenCV / Tensorflow ・ Construction de l'environnement; jusqu'à l'entrée japonaise ・ J'écris ceci
Cela a été effectué selon la procédure de construction environnementale de M. Karaage (référence 1).
Procédure de construction de l'environnement de Karaage.
$ git clone https://github.com/karaage0703/raspberry-pi-setup
$ cd raspberry-pi-setup
$ ./setup-opencv-raspbian-buster.sh
$ ./setup-tensorflow-raspbian-buster.sh
Vous pouvez désormais installer facilement OpenCV et Tensorflow. En outre, j'ai également installé les éléments suivants pour le développement.
jupyter-notebook.
$ sudo apt install jupyter-notebook
De plus, cette fois, j'ai tout installé en même temps avec le script de Karaage, mais comme il y a une forte possibilité qu'il y ait une différence par rapport au dernier, les éléments suivants sont installés séquentiellement à partir de la référence 2.
Dernier environnement OS.
$ sudo apt-get update
$ sudo apt-get upgrade
Environnement CMake.
$ sudo apt-get install build-essential cmake unzip pkg-config
Bibliothèque de fichiers image.
$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
Bibliothèque pour flux vidéo.
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev
Bibliothèque d'affichage d'images.
$ sudo apt-get install libgtk-3-dev
$ sudo apt-get install libcanberra-gtk*
Bibliothèque de calcul.
$ sudo apt-get install libatlas-base-dev gfortran
J'ai utilisé le code suivant pour la vérification de l'opération. Je n'ai pas installé keras, mais comme je l'ai fait dans la référence 0 ci-dessus, comme indiqué ci-dessous, tf.keras ...., vous pouvez donc utiliser Lib of keras.
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)
Le résultat est le suivant
$ 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
Ici, je vais essayer de déplacer le code suivant qui a été déplacé avec la référence suivante. L'opération est lente, mais j'ai pu enregistrer l'image prise par l'appareil photo sous forme de film. 【référence】 ・ RasPi: J'ai joué avec OpenCV ♬
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
#Préparation de la fenêtre
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)
#Lissage gaussien
# (5, 5)Est modifié par l'écart type dans les directions x et y pour changer le degré de flou, le dernier argument est int,Cela semble être un type de bordure, mais la signification des nombres est inconnue
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)
#Image grise pour écrire en gris, changement d'extension pour le cadre
#Pour la couleur, hors= cv2.VideoWriter()Avec isColor=Vrai, Faux si gris
out.write(g_frame) #OK by cv_fourcc('X', 'V', 'I', 'D')
#Si vous appuyez sur une touche, il s'arrêtera
if cv2.waitKey(1000*5) >= 0:
break
ret, frame = cap.read()
cap.release()
out.release()
cv2.destroyAllWindows()
L'exemple d'exécution est le suivant (bien qu'il s'agisse d'une image fixe) Au moins cela a fonctionné, donc OpenCV est disponible.
Ce serait bien d'essayer la détection d'objets ici, mais cette fois, je voudrais publier une application de conversation, donc j'aimerais pouvoir saisir le japonais. Tout d'abord, supposons que la localisation japonaise a été terminée la nuit dernière et suivez la référence 3. "Raspberry Pi a une disposition américaine pour le clavier par défaut, nous allons donc utiliser la disposition JIS." Si quoi que ce soit, j'ai senti que c'était une mise en page JIS. .. ..
$ sudo raspi-config
1.4 Sélectionnez les options d'internationalisation (Déplacer sur le clavier ↑ ↓)
Sélectionnez et appuyez sur la touche ENTER
2. Sélectionnez I3 Modifier la disposition du clavier et appuyez sur [Entrée]
3. Sélectionnez Generic 105-key (Intl) PC et appuyez sur [Enter]
4. Sélectionnez Autre et appuyez sur [Entrée]
5. Sélectionnez Japonais et appuyez sur [Entrée]
6.Japonais - Sélectionnez Japonais (OADG 109A) et appuyez sur [Entrée]
7. Sélectionnez La configuration par défaut du clavier et appuyez sur Entrée
8. Sélectionnez Aucune touche de composition et appuyez sur [Entrée]
Je pense que vous reviendrez au premier écran, alors sélectionnez
$ sudo apt-get update
De plus, lorsque vous pouvez taper des commandes, installez l'entrée japonaise sur le clavier.
$ sudo apt-get install -y uim uim-anthy
Lorsque vous redémarrez, la matrice etc. sera reflétée.
$ sudo reboot
Après le redémarrage, le clavier devrait pouvoir taper dans la disposition JIS → La disposition des touches n'est-elle pas la disposition américaine?
Insérez la police japonaise et IME conformément à la procédure de référence suivante. 【référence】 Paramètres d'entrée japonais de la tarte aux framboises En premier lieu, l'affichage, etc. sont en japonais, il peut donc suffire de ne mettre que l'IME dans ce travail, mais je l'ai mis dans un cercle pour le moment.
$ sudo apt-get update
Installation de polices japonaises
$ sudo apt-get install fonts-vlgothic
Ce qui suit est l'installation essentielle de l'IME japonais IME différent de ce qui précède.
$ sudo apt-get install ibus-anthy
En chemin (o / n) y ENTER
Enfin, redémarrez pour activer l'affichage japonais.
$ sudo reboot
L'image est la suivante. Je pense que vous pouvez choisir anglais-japonais, etc. à l'extrémité droite de cette barre supérieure. Pour le moment, vous pouvez désormais saisir le japonais. Cependant, si vous le laissez tel quel, vous devez sélectionner le changement un par un dans la rangée supérieure. Vue agrandie de l'extrémité droite (en Pinta)
La clé de commutation à un coup pour Jetson-nano a été trouvée par la procédure suivante. En d'autres termes, si vous sélectionnez ce qui suit, vous pouvez basculer automatiquement entre les caractères anglais et A avec les touches demi-largeur / pleine largeur. En outre, l'entrée est revenue à la disposition du clavier japonais.
cette,. .. .. Vous n'aurez peut-être pas besoin des paramètres d'entrée clés et de l'IME ci-dessus
・ OpenCV / Tensorflow a été installé avec succès ・ La saisie japonaise (arrangement de 105 touches) est désormais possible
・ Installez l'application de conversation ・ Je veux faire une entrée vocale et terminer la conversation vocale ・ Je me demande si je vais faire une caméra de surveillance. .. .. "Les gens là-bas, mettent un masque"
Recommended Posts