Je voudrais savoir quand le produit dans la voie automatique, c'est-à-dire le produit final transformé, est terminé à l'atelier d'usinage. Je souhaite connaître la position de la poignée rouge de la vanne (affichage ouverture / fermeture).
Le produit est jaune et le fond (voie) est la couleur principale du blanc, du bleu ou du noir. Le capteur prêt à l'emploi est trop cher, je veux donc que vous le fabriquiez à moindre coût.
Connectez la tarte aux râpes au WIFI local. http://"ラズパイのIPアドレス"/home.php
Spécifiez la partie appropriée de l'image de la caméra et extrayez-la. Spécifiez la gamme de couleurs et le GPIO de sortie lorsqu'il entre dans la gamme de couleurs. Le voyant d'alarme est activé par la sortie de GPIO. L'alarme est annulée par la réinitialisation de l'alarme.
téléchargement python OpenCV Site de référence: Dossiers d’expérience et mémos d’ingénieurs en informatique ayant appris l’informatique
sudo apt-get install libopencv-dev
sudo apt-get install python-opencv
Téléchargement Apache
Site de référence @ mono_taro
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install apache2
apachectl -v
téléchargement php Site de référence: L'âge de pierre moderne.
sudo apt install php7.2 libapache2-mod-php7.2
# Créer php et html
#### **`/var/www/html/home.php`**
```ruby
<html>
<head>
<meta http-equiv="content-type" charset="utf-8">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="refresh" content="5" >
</head>
</html>
<form action="set.php" method="get">
<body>
<h1>Image de la caméra</h1>
<?php
$lines_reset = file('/home/pi/Documents/reset.csv');
foreach($lines_reset as $line_reset){
$data_reset = explode(',',$line_reset);
if ($data_reset[0] == 1){
echo "<FONT COLOR=\"RED\">Une alarme est actuellement en cours. Pour annuler, appuyez sur le bouton bas.</FONT>";}
}
?>
<img src="1.jpg?1">
<h2>Image extraite</h2>
<img src="2.jpg?1">
</body>
<?php
$lines = file('/home/pi/Documents/color.csv');
foreach($lines as $line){
$data = explode(',',$line);
echo '<p>';
echo 'Rouge R',$data[0];
echo 'Vert G:',$data[1];
echo 'Bleu B:',$data[2];
echo '</p>';
}
?>
<a href="./set.html">Écran de réglage</a>
<a href="./reset.html">Réinitialisation d'alarme</a>
</form>
/var/www/html/set.html
<form action="set.php" method="get">
<p>
<a href="./home.php">Revenir</a>
</p>
<img src="1.jpg ">
<p>Spécification de la gamme de couleurs</p>
<p>Limite inférieure rouge: <input type="number" name="r_2_1" value="1" min="0" max="255"></p>
<p>Limite supérieure rouge: <input type="number" name="r_2_2" value="1" min="0" max="255"></p>
<p>Limite inférieure verte: <input type="number" name="g_2_1" value="1" min="0" max="255"></p>
<p>Limite supérieure verte: <input type="number" name="g_2_2" value="1" min="0" max="255"></p>
<p>Limite inférieure bleue: <input type="number" name="b_2_1" value="1" min="0" max="255"></p>
<p>Limite supérieure bleue: <input type="number" name="b_2_2" value="1" min="0" max="255"></p>
<p>Fichier d'extraction d'image: le haut et le bas sont des distances d'en haut, gauche et droite sont des distances de gauche</p>
<p>Top top: <input type="number" name="top" value="1" min="0" max="2000"></p>
<p>Bot inférieur: <input type="number" name="bot" value="100" min="0" max="2000"></p>
<p>Gauche gauche: <input type="number" name="left" value="1" min="0" max="2000"></p>
<p>Droite droite: <input type="number" name="right" value="100" min="0" max="2000"></p>
<p>Intervalle d'obturation, nombre de fois spécifié</p>
<p>Intervalle d'obturation secondes (s): <input type="number" name="interval" value="60" min="10" max="6000"></p>
<p>Nombre de fois: <input type="number" name="nutime" value="1" min="1" max="100"></p>
<input type="submit" />
<p> </p>
<p>Explication supplémentaire des couleurs</p>
<p>Rouge R255 G0 B0</p>
<p>Noir R0 G0 B0</p>
<p>Blanc R255 G255 B255</p>
<p>Jaune R255 G255 B0</p>
<p>Gris R128 G128 B128</p>
<p>Veuillez rechercher d'autres couleurs par couleur RVB.</p>
<p>Le nombre de fois spécifié est le nombre de fois où le relais fonctionne lorsqu'il est continuellement dans la plage spécifiée.</p>
</form>
/var/www/html/set.php
<meta http-equiv="content-type" charset="utf-8">
<?php
$r_2_1=htmlspecialchars($_GET["r_2_1"],ENT_QUOTES);
$r_2_2=htmlspecialchars($_GET["r_2_2"],ENT_QUOTES);
$g_2_1=htmlspecialchars($_GET["g_2_1"],ENT_QUOTES);
$g_2_2=htmlspecialchars($_GET["g_2_2"],ENT_QUOTES);
$b_2_1=htmlspecialchars($_GET["b_2_1"],ENT_QUOTES);
$b_2_2=htmlspecialchars($_GET["b_2_2"],ENT_QUOTES);
$top=htmlspecialchars($_GET["top"],ENT_QUOTES);
$bot=htmlspecialchars($_GET["bot"],ENT_QUOTES);
$left=htmlspecialchars($_GET["left"],ENT_QUOTES);
$right=htmlspecialchars($_GET["right"],ENT_QUOTES);
$interval=htmlspecialchars($_GET["interval"],ENT_QUOTES);
$nutime=htmlspecialchars($_GET["nutime"],ENT_QUOTES);
?>
<body>
<?php echo $_GET["r_2_1"]; ?>
<?php
$data = [
[$_GET["r_2_1"], $_GET["r_2_2"], $_GET["g_2_1"], $_GET["g_2_2"], $_GET["b_2_1"], $_GET["b_2_2"],
$_GET["top"], $_GET["bot"], $_GET["left"], $_GET["right"],
$_GET["interval"], $_GET["nutime"]],
];
$fp = fopen('/home/pi/Documents/position.csv', 'w');
foreach ($data as $line) {
fputcsv($fp, $line);
}
fclose($fp);
?>
<p>
<a href="./home.php">Revenir</a>
</p>
/var/www/html/reset.html
<meta http-equiv="content-type" charset="utf-8">
<meta http-equiv="Cache-Control" content="no-cache">
<form action="reset.php" method="get">
<input type="submit" />
</form>
/var/www/html/reset.php
<meta http-equiv="content-type" charset="utf-8">
<?php
$data = [["0"]];
$fp = fopen('/home/pi/Documents/reset.csv', 'w');
foreach ($data as $line) {
fputcsv($fp, $line);}
fclose($fp);
?>
<p>
<a href="./home.php">Revenir</a>
</p>
/home/pi/Documents/gazou.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import cv2, os
import numpy as np
import csv
import time
import RPi.GPIO as GPIO
time.sleep(60)#Temps d'attente au démarrage de Raspeye
#Paramètres GPIO
PIN = 14
GPIO.setmode(GPIO.BCM)
GPIO.setup(PIN, GPIO.OUT)
#Emplacement de stockage du fichier image
image_file = '/var/www/html/1.jpg' #la photographie
image_file_2 = '/var/www/html/2.jpg' #Vérification 1
#Emplacement du CSV pour la lecture
poss = '/home/pi/Documents/position.csv'
colo_0 = '/home/pi/Documents/color0.csv'
colo_1 = '/home/pi/Documents/color.csv'
poss_reset = '/home/pi/Documents/reset.csv'
while True:
try :
with open(poss) as data0:#Lire l'emplacement de la découpe
reader = csv.reader(data0)
data1 = [row for row in reader]
#Lecture de plage
r_2_1 = int(data1[0][0]) #Limite inférieure rouge img2
r_2_2 = int(data1[0][1]) #Limite supérieure rouge img2
g_2_1 = int(data1[0][2]) #Limite inférieure verte img2
g_2_2 = int(data1[0][3]) #Limite supérieure verte img2
b_2_1 = int(data1[0][4]) #Limite inférieure bleue img2
b_2_2 = int(data1[0][5]) #Limite supérieure bleue img2
#img2.Découpez une partie de jpg
top_2 = int(data1[0][6])
bot_2 = int(data1[0][7])
left_2 = int(data1[0][8])
right_2 = int(data1[0][9])
#Nombre de secondes de répétition et nombre de confirmations d'opération
jobs_s = int(data1[0][10])
time.sleep(jobs_s)
with open(poss_reset) as data_reset:#Réinitialiser la lecture CSV
reader_reset = csv.reader(data_reset)
data_reset1 = [row for row in reader_reset]
data_resset2 = int(data_reset1[0][0])
with open(colo_0) as data2:#Lire les données par défaut pour l'écriture
reader = csv.reader(data2)
data3 = [row for row in reader]
cam = cv2.VideoCapture(0)
#Lire la vidéo de la caméra
_, img = cam.read()
#Exporter en tant que fichier image
img2 = img[top_2 : bot_2, left_2: right_2]
#Enregistrer l'image
cv2.imwrite(image_file, img)
cv2.imwrite(image_file_2, img2)
#Valeur moyenne RVB de sortie
#Rendez-le unidimensionnel avec aplatir et obtenez la moyenne avec la moyenne
r2 = img2.T[2].flatten().mean()
g2 = img2.T[1].flatten().mean()
b2 = img2.T[0].flatten().mean()
if data_resset2 == 0:
GPIO.output(PIN, GPIO.LOW) #Coupé pour le moment
if r_2_1 < r2 < r_2_2 and g_2_1 < g2 < g_2_2 and b_2_1 < b2 < b_2_2:
GPIO.output(PIN, GPIO.HIGH)
data_resset2 = 1
#Obtenir la valeur moyenne RVB
data3[0][0] = '%.0f' % r2
data3[0][1] = '%.0f' % g2
data3[0][2] = '%.0f' % b2
#Enregistrer CSV
with open(colo_1, 'w') as f:
writer = csv.writer(f)
for data4 in data3:
writer.writerow(data4)
data_reset1[0][0] = data_resset2
with open(poss_reset, 'w') as f:
writer = csv.writer(f)
for data_reset2 in data_reset1:
writer.writerow(data_reset2)
#post-processus
cam.release()
cv2.destroyAllWindows()
except:
time.sleep(30)
pass
/home/pi/Documents/position.csv
1,1,1,1,1,1,1,100,1,100,60,1
/home/pi/Documents/color0.csv
100,100,100,100,100,100
/home/pi/Documents/color.csv
100,100,100,100,100,100
/home/pi/Documents/reset.csv
0
Démarrez automatiquement gazou.py avec sudo. Seul sudo écrira l'image jpg dans / var / www / html / Site de référence @ yuru-camper
C270N HD WEBCAM site logicool
Étant donné que l'écran de réglage est difficile à définir comme indiqué ci-dessous, je souhaite pouvoir sélectionner l'emplacement d'extraction avec la souris. Je souhaite également pouvoir déterminer les paramètres de couleur avec la souris. Dans l'état actuel, le paramètre doit répéter de nombreux essais et erreurs.