Ich würde gerne wissen, wann das Produkt in der automatischen Spur, dh das endgültig verarbeitete Produkt, in der Maschinenwerkstatt fertiggestellt ist. Ich möchte die Position des roten Griffs des Ventils wissen (Anzeige öffnen / schließen).
Das Produkt ist gelb und der Hintergrund (Spur) ist die Grundfarbe Weiß, Blau oder Schwarz. Der fertige Sensor ist zu teuer, deshalb möchte ich, dass Sie ihn billig herstellen.
Verbinden Sie den Raspeltorte mit dem lokalen WIFI. http://"ラズパイのIPアドレス"/home.php
Geben Sie das relevante Teil aus dem Kamerabild an und extrahieren Sie es. Geben Sie den Farbbereich an und geben Sie GPIO aus, wenn der Farbbereich eingegeben wird. Die Alarmlampe wird am Ausgang des GPIO aktiviert. Der Alarm wird durch Zurücksetzen des Alarms gelöscht.
Python OpenCV herunterladen Referenzseite: Erfahrungsberichte und Memos von Softwareentwicklern, die Informatik gelernt haben
sudo apt-get install libopencv-dev
sudo apt-get install python-opencv
Apache herunterladen
Referenzseite @ mono_taro
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install apache2
apachectl -v
PHP herunterladen Referenzseite: Die moderne Steinzeit.
sudo apt install php7.2 libapache2-mod-php7.2
# Erstellen Sie PHP und 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>Kamerabild</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\">Derzeit läuft der Alarm Um abzubrechen, drücken Sie die Abwärtstaste</FONT>";}
}
?>
<img src="1.jpg?1">
<h2>Extrahiertes Bild</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 'Rot R.',$data[0];
echo 'Grün G:',$data[1];
echo 'Blau B:',$data[2];
echo '</p>';
}
?>
<a href="./set.html">Einstellungsbildschirm</a>
<a href="./reset.html">Alarm zurücksetzen</a>
</form>
/var/www/html/set.html
<form action="set.php" method="get">
<p>
<a href="./home.php">Rückkehr</a>
</p>
<img src="1.jpg ">
<p>Farbbereichsspezifikation</p>
<p>Rote Untergrenze: <input type="number" name="r_2_1" value="1" min="0" max="255"></p>
<p>Rote Obergrenze: <input type="number" name="r_2_2" value="1" min="0" max="255"></p>
<p>Grüne Untergrenze: <input type="number" name="g_2_1" value="1" min="0" max="255"></p>
<p>Grüne Obergrenze: <input type="number" name="g_2_2" value="1" min="0" max="255"></p>
<p>Blaue Untergrenze: <input type="number" name="b_2_1" value="1" min="0" max="255"></p>
<p>Blaue Obergrenze: <input type="number" name="b_2_2" value="1" min="0" max="255"></p>
<p>Bildextraktionsdatei: Oben und unten sind Abstände von oben, links und rechts sind Abstände von links</p>
<p>Top Top: <input type="number" name="top" value="1" min="0" max="2000"></p>
<p>Unterer Bot: <input type="number" name="bot" value="100" min="0" max="2000"></p>
<p>Links Links: <input type="number" name="left" value="1" min="0" max="2000"></p>
<p>Richtig richtig: <input type="number" name="right" value="100" min="0" max="2000"></p>
<p>Verschlussintervall, angegebene Anzahl von Malen</p>
<p>Verschlussintervall Sekunden.: <input type="number" name="interval" value="60" min="10" max="6000"></p>
<p>Anzahl: <input type="number" name="nutime" value="1" min="1" max="100"></p>
<input type="submit" />
<p> </p>
<p>Ergänzende Farberklärung</p>
<p>Rot R255 G0 B0</p>
<p>Schwarz R0 G0 B0</p>
<p>Weiß R255 G255 B255</p>
<p>Gelb R255 G255 B0</p>
<p>Grau R128 G128 B128</p>
<p>Bitte suchen Sie nach anderen Farben nach RGB-Farbe.</p>
<p>Die angegebene Anzahl von Malen gibt an, wie oft das Relais arbeitet, wenn es sich kontinuierlich innerhalb des angegebenen Bereichs befindet.</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">Rückkehr</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">Rückkehr</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)#Wartezeit beim Starten von Raspeye
#GPIO-Einstellungen
PIN = 14
GPIO.setmode(GPIO.BCM)
GPIO.setup(PIN, GPIO.OUT)
#Speicherort der Bilddatei
image_file = '/var/www/html/1.jpg' #Fotografie
image_file_2 = '/var/www/html/2.jpg' #Überprüfung 1
#Ort der CSV zum Lesen
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:#Lesen Sie die Position des Ausschnitts
reader = csv.reader(data0)
data1 = [row for row in reader]
#Bereich gelesen
r_2_1 = int(data1[0][0]) #Rote Untergrenze img2
r_2_2 = int(data1[0][1]) #Rote Obergrenze img2
g_2_1 = int(data1[0][2]) #Grüne Untergrenze img2
g_2_2 = int(data1[0][3]) #Grüne Obergrenze img2
b_2_1 = int(data1[0][4]) #Blaue Untergrenze img2
b_2_2 = int(data1[0][5]) #Blaue Obergrenze img2
#img2.Schneiden Sie einen Teil von jpg aus
top_2 = int(data1[0][6])
bot_2 = int(data1[0][7])
left_2 = int(data1[0][8])
right_2 = int(data1[0][9])
#Anzahl der Wiederholungssekunden und Anzahl der Betriebsbestätigungen
jobs_s = int(data1[0][10])
time.sleep(jobs_s)
with open(poss_reset) as data_reset:#CSV-Lesevorgang zurücksetzen
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:#Standarddaten zum Schreiben lesen
reader = csv.reader(data2)
data3 = [row for row in reader]
cam = cv2.VideoCapture(0)
#Video von der Kamera lesen
_, img = cam.read()
#Als Bilddatei exportieren
img2 = img[top_2 : bot_2, left_2: right_2]
#Bild speichern
cv2.imwrite(image_file, img)
cv2.imwrite(image_file_2, img2)
#RGB-Durchschnittswert ausgeben
#Machen Sie es eindimensional mit Abflachung und erhalten Sie den Durchschnitt mit Mittelwert
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) #Vorerst schneiden
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
#RGB-Durchschnittswert abrufen
data3[0][0] = '%.0f' % r2
data3[0][1] = '%.0f' % g2
data3[0][2] = '%.0f' % b2
#Speichern Sie 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)
#Nachbearbeitung
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
Starten Sie gazou.py automatisch mit sudo. Nur sudo schreibt das JPG-Bild nach / var / www / html / Referenzseite @ yuru-camper
C270N HD WEBCAM Logicool-Site
Da der Einstellungsbildschirm wie unten gezeigt schwer einzustellen ist, möchte ich den Extraktionsort mit der Maus auswählen können. Ich möchte auch in der Lage sein, die Farbeinstellungen mit der Maus zu bestimmen. Im aktuellen Zustand muss die Einstellung viele Versuche und Irrtümer wiederholen.