Transkripte
1. Kurs-Einführung: Hallo. Willkommen zu unserer Klasse Python Open City Mastering
Computer Vision Mein Name ist John the Shortcut. Ich bin FOSTEC-Webentwickler, Python-Programmierer bei
Online Instructor und werde
Sie durch den gesamten Kurs Ich freue mich sehr, Sie auf dieser Reise in
die Welt der Computer Vision
und Bildverarbeitung
begleiten zu In diesem Kurs werden wir uns
eingehend mit Open C befassen, der
Industriestandardbibliothek, die die Magie der
Computervision nach Python
bringt. Am Ende dieses Kurses werden
Sie nicht nur
die Grundlagen von OpenCV verstehen, sondern Sie werden auch
praktische Fähigkeiten erwerben, die Sie dank
unseres zehn praktischen Projekts
sofort anwenden können dank
unseres zehn praktischen Projekts
sofort anwenden Lassen Sie uns nun sehen, was genau wir von hier
lernen werden Wir werden mit den Grundlagen beginnen. Zunächst werden wir
lernen, wie wir OpenCV auf
unserem lokalen Computer installieren
können Dann werden wir das Bild lesen, die
Größe ändern und Frames neu skalieren Wir werden
verschiedene Formen zeichnen und Text auf das Bild setzen Dann werden wir
wichtige Funktionen lernen. Als Nächstes werden wir
den Übergang, die
Rotation, die Translation und die Erkennung von
Leitungen lernen Rotation, die Translation und die Erkennung von
Leitungen Farbräume, Farbkanäle,
Unschärfe, BTIS-Operation,
Maskierung, Graustufenhistogramm,
Farbbildhistogramm Farbbildhistogramm Nachdem wir das gesamte Grundkonzept kennengelernt
haben, werden wir in
den Projektbereich übergehen Wir werden
mehrere reale Projekte durchführen, z. B. Texterkennung
und -extraktion mit
OpenCV und das Zeichnen von
Rechtecken und Extrahieren von Objekten schwarzen Punkten und weißen Punkten Dieser Pin koordiniert
, wenn wir auf ein Bild klicken. Dann kommen wir zum wichtigsten Teil, dem unsichtbaren
T-Shirt-Projekt
, unsichtbaren
T-Shirt-Projekt
, Hintergrundsubstriktion und der
Phasenerkennung mit OpenCV Außerdem werden wir ein anderes Projekt
kontaktieren Objekte
ähnlicher Farbe in Python
erkennt. Und das ist nicht das
Ende. Von Zeit zu Zeit werden
wir diese Klasse
aktualisieren und
neue Projekte in diese Klasse aufnehmen,
wie Fingererkennung, Augenerkennung, Helligkeitssteuerung mit dem
Finger und vieles mehr. Jede Woche werde ich ein neues Konzept
hinzufügen. Am Ende dieses Kurses werden
Sie in der Lage sein, Ihre eigenen
Computer-Vision-Projekte zu erstellen und Ihre Aufgabe zu automatisieren. Nach diesem Kurs können
Sie Bereiche
wie KI und Argumentationsrealität erkunden . Worauf
warten Sie also noch? Lass uns zusammen anfangen.
2. Installation von openCV in unserer lokalen Maschine: Hallo, dies ist der erste
Tutorial-bezogene Python-OpenCV-Kurs Zur Hölle. Mein Name ist John Shoker Ich hoste einen Webentwickler
und unterrichte online. Wir beginnen
unser Tutorial mit der
Installation von OpenCV auf
unserem lokalen Computer Lassen Sie uns also auf
den Computerbildschirm springen. Wie Sie sehen können, befinden wir uns
auf meinem Computerbildschirm und ich öffne Windows Power Shell Im Grunde ist OpenCV eine
Computer-Vision-Bibliothek. Es ist in den Sprachen Python,
C Plus und Java verfügbar . Eine Computer Vision ist eine
Anwendung von Deep Learn. Und es
konzentriert sich hauptsächlich auf Mediendateien. Es könnten Bilder sein,
andernfalls Videodateien. Ich gehe davon aus, dass
Sie Python bereits auf Ihrem Computer installiert haben. Und um zu überprüfen, ob es
auf Ihrem
lokalen Computer installiert ist oder nicht, geben Sie
einfach Python Space Virgin ein. Drücken Sie dann die Eingabetaste. Nachdem Sie
Enter asiMCC gedrückt haben, wird Python-Version 3.11 0.4
zurückgegeben Stellen Sie einfach sicher, dass Sie die
neueste Version von Python haben, andernfalls höher als 3.7. Ich hoffe also, dass Sie Python bereits auf Ihrem Computer installiert haben. Aber jetzt werde ich
die Pakete installieren , die für diesen Kurs
benötigt werden. Also werde ich
unser Hauptpaket
OpenCV installieren, um OpenCV in Ihrem System zu installieren, einfach um P, installiere OpenCV Ctrip. Dash-Python. Manchmal sagen dir die Leute
vielleicht,
lade einfach OpenCV Dash Python Im Grunde ist Opens Dash
Python das Hauptpaket. Es ist das Hauptmodul, aber Opensi Ctrip enthielt Hauptmodul, das Contribute-Module
enthält, die
von der Community bereitgestellt werden Also werde ich die Eingabetaste drücken
und auf den Download warten. Wie Sie sehen können, ist die Anforderung
bereits erfüllt. Ich habe dieses Modul bereits heruntergeladen, aber Sie müssen den
Download-Vorgang abschließen. Damit werde
ich auch meine P-Version aktualisieren. Also werde ich diesen
Befehl kopieren und hier einfügen. Dann drücke ich die Eingabetaste. Es wird meinen Pin aktualisieren. Also habe ich meine P-Version erfolgreich
aktualisiert. Aber wenn Sie es bemerken, können Sie sehen, beim Versuch, OpenCV herunterzuladen, auch die
Numpie-Warnung heruntergeladen wird Numbi ist eine Art Python-Pakete für wissenschaftliche
Berechnungen. Es verwendet ausgiebig Matrix,
Manipulation usw. Vielleicht müssen wir Numpy
in einem Teil dieses Tutorials verwenden, aber machen Sie sich darüber keine Sorgen, denn
es ist einfach und relativ einfach
zu starten Das ist es also für dieses Tutorial. In diesem Tutorial
zeige ich Ihnen nur, wie wir Open C
herunterladen können .
Im nächsten Tutorial werden
wir lernen, wie wir
Bilder und Videos mit OpenC lesen können Bilder und Videos mit OpenC Vielen Dank, dass
Sie sich dieses Video Seien Sie gespannt auf dieses Tutorial
3. Bilder und Videos mit openCV lesen: Hallo, alle zusammen. Willkommen
zurück in einem anderen Bereich. In diesem Video werden wir
lernen, wie wir
Bilder und Videos
mit Python Open Cit lesen können Bilder und Videos
mit Python Open Cit Lassen Sie uns also in den
ISA Studio-Code-Editor springen. Wie Sie sehen können, öffne ich hier
meinen Visa Studio-Code-Editor. Und auf der Website kannst
du sehen, dass das mein
derzeitiger Job ist. Zuerst werde
ich in meinem aktuellen
Arbeitsverzeichnis eine Python-Five erstellen und sie
main dot py main dot py nennen. In der ersten Hälfte des Videos werden
wir darüber sprechen, wie wir Bilder lesen können. Und als Nächstes
werden wir darüber sprechen, wie wir Videos lesen können. Also müssen
wir in unserer Python-Datei zuerst OpenCV importieren, also geben wir,
Import CV two als C ein. Und um ein Bild in OpenCV zu lesen, müssen
wir imaged
Meth verwenden, wir müssen cd dot Image R eingeben Und um ein Bild in OpenCV zu lesen, müssen
wir imaged
Meth verwenden, wir müssen cd dot Image R eingeben
. IMR Dann müssen
wir innerhalb der Runden
innerhalb des Zitats den Dateipfad angeben wir Wie Sie in meinem
Arbeitsverzeichnis sehen können, gibt es einen anderen
Ordner namens images. Und wenn ich ihn öffne, siehst du
hier, müssen
wir auf zwei Bilder tippen,
Katze mit einem Punkt JPG Katze Punkt JPG. Also werde
ich zuerst Cat Dot JPG lesen. Also werde
ich in dem Zitat zuerst den
Ordnernamen Images taggen. Bilder Schrägstrich Ich werde auf das Bild
zielen, Cat Dot JPG Außerdem möchte ich
dieses Bild in einer Variablen festhalten, und unsere Arie ist ING. ING entspricht der
Cv-Punktbildwurzelfunktion. Sobald wir dieses Bild gelesen
haben, müssen wir dieses Bild zeigen. Um dieses Bild zu zeigen,
müssen wir eine Methode verwenden,
nämlich Image Show, Art CV Dot Image Show. IN der Show. Dann
die runden Pressen einsetzen, insgesamt
müssen
zwei Parameter übergeben Bei dieser Methode wird
das Bild in einem neuen Fenster angezeigt. Also zuerst müssen wir hier den Namen
des neuen Fensters
angeben,
und das kann der Hämatyp Als Nächstes müssen wir die
Matrix übergeben, das Bild, das wir gelesen haben. Also werde ich IMG eingeben, diese Variable, und ich
werde diesen Punkt setzen. Jetzt möchte ich
vor dem Ausführen dieses Bereichs
eine Funktion zur Tastaturbelegung ausführen da wir hier
ein bestimmtes D benötigen , also rufe ich eine andere Methode
auf, die als Wet-Key bekannt ist. Swing-Punkt-Wet-Taste. Dieser. Und statt
der runden Pressen werde
ich Z bestehen.
Es ist eine Funktion zur Tastenbelegung. Es heißt, auf etwas Bestimmtes zu warten. Bis ich eine beliebige
Taste der MIL-Tastatur drücke. Wenn ich Null übergehe, wird
es unendlich lange warten. Im Grunde möchte ich sagen, dass das Bild nicht entfernt
wird, bis ich eine Taste auf
unserer Tastatur
drücke . Lassen Sie uns den Code
in unserem Terminal ausführen. Also werde ich die Datei einrichten
und nachdem ich die Datei eingerichtet
habe, werde ich auf die Schaltfläche Ausführen klicken. Nachdem Sie die Run-Taste gedrückt haben, wird, wie Sie sehen können, das Bild
zurückgegeben. Hier öffnet es das Fenster und zeigt
das Bild in diesem Fenster an. Und wenn du dieses Fenster
schließen willst, kannst
du jede Taste
auf deiner Tastatur loben. Andernfalls können Sie
auf dieses Schließen-Symbol klicken. Also werde ich die Leertaste
loben. Also, wie Sie sehen können,
macht es das Fenster kaputt. Das ist cool. Das Bild, das ich aus meinem aktuellen
Arbeitsverzeichnis öffne, ist ein Bild mit kleiner Auflösung. Lass es mich dir zeigen.
Wie Sie in meinem aktuellen Arbeitsverzeichnis sehen können,
gibt es zwei Bilder. Holen Sie sich ein Punkt-JPG und dann Go-Punkt-JPG. Beide Bilder sind identisch, aber ihre Auflösung
ist unterschiedlich. Wenn ich Ihnen G Dot JPG zeige, können Sie
jetzt sehen, dass es die
Abmessung 604 13 hat. Aber wenn ich über meinen Cursor fahre,
erhalte ich ein Punkt-JPG.
Jetzt können Sie sehen, dass die Größe viel größer
ist
als die vorherige Es ist 5.026 x 3.458. Jetzt öffne ich
dasselbe Katzenbild, aber dieses Mal
öffne ich die größere Kommen wir also zum
Salt Studio-Code. Ich werde den Namen
des Bildes ändern. Ich werde aus Cat One Dot GPG
machen, und ich werde diese Datei bearbeiten und ich werde diesen Code ausführen Und ich werde die
Run-Taste drücken. ,
verschwindet das Bild nach dem Drücken der Run-Taste Wie Sie sehen können,
verschwindet das Bild nach dem Drücken der Run-Taste weit vom Bildschirm. Also werde ich
dieses Bild schließen, indem ich
eine beliebige Taste meiner Tastatur drücke. Ich werde B drücken. Nachdem ich B gedrückt habe, wird
das Fenster geschlossen. Dieses Bild ist viel größer
als meine Bildschirmauflösung. Derzeit haben
wir natürlich keine eingebauten Techniken zur Größenänderung eingebaut, die je nach
Computerauflösung
funktionieren, aber wir können die Größe des Bildes Im nächsten Tutorial
werde ich darüber sprechen. Wenn Sie also ein großes Bild haben, kann es
möglicherweise vom Bildschirm verschwinden. Konzentrieren Sie sich in diesem Tutorial einfach auf das Lesen von Bildern und Videos. Das ist also zum Lesen von Bildern. Konzentrieren wir uns nun darauf, wie
wir Videos lesen können. Aber vorher wähle ich den gesamten Code aus und kopiere ihn. Dann werde ich eine weitere Geldbuße
in meinem Arbeitsverzeichnis
erstellen ,
nämlich Main Two Dot Pine. Und ich werde den gesamten Code
aus meiner vorherigen Geldbuße
einfügen . Dieses Mal werden wir
Video fünf lesen. Also werde ich diese Zeilen zunächst
auskommentieren. Ich brauche es vorerst nicht. Aus diesem Grund zeige ich Ihnen mein
aktuelles Arbeitsverzeichnis Es gibt einen anderen
Ordner namens Videos. Wenn ich es öffne, gibt es
ein Video, Video eins.nb4. Und um ein Video zu lesen, werde ich
hier eine variable Aufnahme erstellen Wie hier werde ich die
Videoaufnahmemethode verwenden. Cv Punkt, Video CaptureT eins. Und Runden. Diese Methode nimmt entweder Itiser-Werte wie
eins, zwei, drei Andernfalls können wir einen Dateipfad
übergeben. Jetzt können Sie einen Teil davon bekommen, warum wir diesen Wert übergeben müssen. Denn wenn Sie einen Integer-Wert verwenden, können
Sie eine
Verbindung zu Ihrer Webcam herstellen. Wenn Sie eine Webcam haben, können
Sie Null übergeben. In den meisten Fällen
referenziert Webkem mit einer Ganzzahl von Null. Wenn Sie mehrere haben, können
Sie die Zahl ändern. Aber vorher werde
ich zuerst das vorhandene
Video aus unserem Dateipfad lesen. Ich habe das einzige Zitat gesagt. Zuerst müssen wir den Ordnernamen
angeben, einige Arten von Videos, dann haben
wir
in diesem Videoordner dieses Video. Wählen Sie also Intro Video eins.b4 aus. Denken Sie daran, dass sich das Lesen von Videos vom Lesen von Bildern
unterscheidet. Wir müssen Videos
Bild für Bild lesen. Deshalb müssen wir Hilo benutzen. Also hier werde ich Hilo benutzen. Wild, stimmt. Dann befindet sich in der
While-Schleife Crew Comma, ein
Frame, der der Funktion Capture
Dot Read entspricht Funktion zum Erfassen von Punkten. Diese
Capture-Punkt-Lesefunktion liest dieses Video Bild für Bild. Es liest den Frame und dieser Wert zeigt an ob es erfolgreich ist, ob
Sie arbeiten oder nicht. Um das Video anzuzeigen, zeigen wir tatsächlich die
einzelnen Frames an. Nachdem wir also jeden
Frame dieses Videos gelesen
haben, müssen wir die Frames anzeigen. Um diese Frames anzuzeigen, verwenden
wir die Funktion zum
Anzeigen von Bildern. Geben Sie also Cv dot image show
is at the round Wie Sie wissen, müssen
wir zuerst
einen Fensternamen übergeben , nämlich Video. Dann übergebe ich
die eigentlichen Frames. Also muss ich diesen
variablen Frame übergeben. Also kopiere den Variablennamen und ich werde ihn hier einfügen. Im Moment benötige ich
diese Wet-Key-Funktion nicht, also werde ich sie entfernen. Ja, wir brauchen den Wet-Key, aber wir werden
ihn mit der P-Bedingung verwenden. Also ihr Typ, I v Punkt Wet Key, innerhalb der Runde gedrückt hält die
Dame zwei und Null X F gleich, gleich b, innerhalb der
Runde pressSOD von B, dann wird es dich
umbringen Dann möchte
ich innerhalb der IP-Bedingung diese VI-Schleife unterbrechen Sobald wir die I-Schleife
verlassen haben, müssen
wir
den Capture-Pointer loslassen. Also müssen wir
Release-Funktionen für den Typ
Captured Dot, Release
, Release verwenden . Außerdem müssen wir
alle Fenster zerstören. He Krawatte, CV, Punkt, zerstöre alle Fenster. Dieser. Das ist es. Fassen Sie jetzt den Port zusammen. Die Capture-Variable ist eine Instanz
von Video Capture Gloss. Dann lesen
wir statt einer Schleife das Video
Bild für Bild. Dann haben wir jeden
Frame mit der IMS-Methode angezeigt. Wenn CVD 820 und Null
xFF org,
D entsprechen, dann unterbrechen Sie den Wenn ich also B drücke, werden keine Videoframes mehr
angezeigt Im Grunde möchte ich
sagen, wenn ich D drücke, wird es die Last
unterbrechen. Dann lassen wir
das Aufnahmegerät los und zerstören alle Fenster. Lassen Sie uns nun die
Datei einrichten und den Code ausführen. Nachdem ich diesen
Code ausgeführt habe, wird, wie Sie sehen können
, unser Video abgespielt. Und wenn ich D lobe, schließt
es unser Fenster. Und wenn du
deine Webcam öffnen willst, ja, das kannst du. Beginnen Sie einfach mit dieser Zeile
und kommentieren Sie die
vorherige Zeile und ändern Sie das
Videoaufnahmevideo. Ich möchte Null verwenden , weil ich
nur eine Kamera an meinen Computer angeschlossen habe. Nach Schritt diese Datei, wenn ich diesen Code
ausführe und
einige Sekunden warte ,
kannst du jetzt dein Video direkt mit
OpenCV aufnehmen und es ablesen Wenn Sie also dieses Fenster
schließen möchten, müssen Sie
nur den Befehl B
drücken Wenn Sie eine andere Taste drücken, wird Ihr Fenster nicht
geschlossen. In unserem Zustand, sagen wir hier, D, welcher wird den Kreislauf
durchbrechen? Lassen Sie mich Ihnen nun etwas
Wichtiges zeigen. Also werde
ich zuerst mein Terminal ausschalten, dann werde ich diese Zeile
auskommentieren und diese
auskommentieren Und ich werde diese Datei unterschreiben. Nachdem ich diese Datei eingerichtet habe, werde
ich dieses Video erneut abspielen. Diesmal können Sie feststellen, dass
nach Abschluss des Videos ein
Fehler in unserem Terminal angezeigt wird. Nach 10 Sekunden,
nach Abschluss des Videos, gibt es also , wie Sie in meinem
Terminal sehen können, einen Helden. Es ist gemein, wenn unser
Video vorbei ist, andernfalls gestoppt, dann
wird es den Helden zeigen. Wenn dieses
Video keinen Frame enthält, kann es zum Helden zurückkehren. Insbesondere wird dieser Fehler
abzüglich 215 Assertion Feel
zurückgegeben abzüglich 215 Assertion Feel Das bedeutet, dass an diesem Speicherort offensichtlich keine Mediendatei
gefunden werden konnte diesem Speicherort offensichtlich keine Mediendatei
gefunden Es wird
dieselbe Art
von Fehler auch mit dem Bild zurückgeben . Lass es mich dir zeigen. Also werde
ich mein Terminal beenden und
zur Hauptdatei von Dot Pi zurückkehren. Wenn ich den Dateipfad ändere, wenn ich es in die
dritte Kategorie schaffe, ist, wie Sie wissen, keine Datei
in unserem Verzeichnis CD Drei verfügbar. Wenn ich diese Datei einstelle
und diesen Befehl ausführe, wie Sie in meinem Terminal sehen können, kommt es zu demselben Fehler, negativ 215 Assertion Fade Es zeigt genau den
gleichen Fehler wie beim Video. Es konnte kein Bild gefunden werden. Das ist also sehr viel
für dieses Video. In diesem Tutorial lernen wir,
wie wir Bilder lesen können. Außerdem lernen wir, wie
wir Videos lesen können. Damit
lernen wir auch, wie wir Videos über unsere Webcam
lesen können . Das ist es also für dieses Tutorial. Im nächsten Tutorial
werden wir lernen, wie
wir die Größe und
Skalierung von Frames ändern können Es könnte ein Bild sein,
sonst ein Video. Also danke, dass
du dir dieses Video Stune für das nächste Tutorial
4. Größenanpassung und Reskalierung von Frames: Hey, Leute, schön, dass ihr wieder da seid. Ich bin wieder
mit einem weiteren Tutorial Thema Open CT zurück. Und
in diesem Tutorial werden
wir lernen, die Größe zu
ändern und neu zu skalieren Wie Sie sehen können,
springen wir zum
Benutzer-Studio-Code-Editor In diesem Abschnitt erfahren wir
, wie wir die Größe und Skalierung von Videos und
Bildern mithilfe von Open C ändern und
neu skalieren können . Um
einen Videoframe oder ein Bild neu zu skalieren, müssen
wir eine Funktion erstellen, und unser Funktionsname
ist Dann innerhalb der Runde weniger, hier müssen wir einen Parameter übergeben, das
Bild
an die V-Größe anpassen und
die Wie hier müssen wir den Skalenwert angeben,
um wie viel wir skalieren wollen. Im Moment werde ich 0,75 setzen. Dann setze
ich in der Rescal-Funktion den Wert so ein, dass W der Rahmenpunktform
entspricht, statt dem quadratischen ss, werde
ich eins übergeben Dann werde ich mit der Skala
multiplizieren. Und als Nächstes werde ich
diese Zeile duplizieren und durch Höhe
ersetzen. Und innerhalb des
Quadrats werde ich Null überschreiten. Rahmenpunktform eins,
grundsätzlich mit Ihrem Bild und Rahmenpunktform
Null geben die Höhe an. Und wie Sie wissen, sind Breite
und Höhe indischer,
also müssen wir
sie in einen Indiser umwandeln Ich werde die Funktion int verwenden. Es, und wir müssen Round*** verwenden um dasselbe
auch für
die
Höhe in rundem Messing zu tun . Und jetzt werde ich
eine Variable namens Dimension deklarieren. Dimension entspricht, und ich
möchte ein Tupel erstellen. Also statt der Runden übergebe
ich welches Koma, und unser nächster Wert ist Höhe Und als Nächstes gebe ich die
V-Punkt-Resize-Funktion zurück. Also gebe ich
return, Cv dot, resize zurück. Drücken Sie im Lauf
zuerst, ich übergebe den Frame Als Nächstes werde ich Dimension
bestehen. Komma-Interkolon-Wert
entspricht Cv-Punkt Enter-Bereich Bereich eingeben. Civ dot resize ist eine
offene CI-Funktion. Es wird verwendet, um die Größe eines Bildes zu ändern, und Rahmen ist unser Bild, dessen Größe wir ändern möchten Und Dimension gibt die
neue Größe für das Bild an, und es sollte ein Tempel sein, der Höhe
und Breite entspricht Und dieser Parameter gibt die Interpolitionsmethode an, die zur Größenänderung des
Bildes verwendet wird Die Interpolationsmethode
bestimmt, wie Pixelwerte berechnet werden,
wenn CVI Enter area ist eine spezielle
Interpolationsmethode , die für das Verkleinern von Bildern optimiert wurde. Sie kann bei der Reduzierung der
Bildgröße zu einer besseren Qualität als
andere Methoden führen andere Methoden Mach dir keine Sorgen. Wir werden später mehr darüber
erfahren. Jetzt möchte ich ein
fünftes Video lesen , also brauche ich dieses nicht. Also um diesen zu widerrufen und
zurück zu meinen Punkt Pi Five. Aus diesem Abschnitt werde
ich diesen Teil kopieren. Und zurück zur Neuskalierung von Punkt Pi Five, und ich werde
ihn hier einfügen Im Moment brauche ich
diese Leitung nicht, weil ich meine Webcam
nicht benutzen möchte Nachdem ich diesen
Rahmen in unserer VLU gelesen
habe, möchte ich die Größe des Also werden wir diese Funktion
aufrufen. Aber vorher werde ich eine Variable
deklarieren, und unser Variablenname
ist frame resize Frame unter sco resize. Entspricht, ich nenne
diese Funktion Rescale-Frame. Also kopiere ich den Funktionsnamen und füge ihn hier ein, dann müssen
wir innerhalb der runden Kleider und innerhalb der runden Pressen und innerhalb der runden Pressen diesen
variablen Rahmen übergeben Dann müssen
wir diese Variable mit der Image-Show-Methode anzeigen. Also werde ich diese Zeile
duplizieren. Und zuerst werde ich diesem Fenster
einen Namen geben, dessen Videogröße geändert wurde. Und dann müssen wir
die Variable frame resized übergeben. Also kopiere ich diese Variable
und drücke den Frame damit. Und ich werde diese Datei einrichten. Und bevor ich diesen Code ausführe, werde
ich
diese zwei Zeilen entfernen. Ich brauche das nicht mehr. Ansonsten kann ich diesen
auskommentieren. Und ich werde
diese Datei erneut einrichten. Wenn ich diese Datei eingerichtet habe und diesen Befehl ausführe
, werden
insgesamt zwei Dateien geöffnet. Zuerst wird das Originalfenster
geöffnet,
dann wird das Fenster mit
der geänderten Größe geöffnet. Lass mich dir das beweisen. Wenn ich also nach dem Einstellen dieser Datei diesen Code
in meinem Terminal ausführe, werden,
wie Sie sehen können
, insgesamt zwei Fenster geöffnet. Dies ist das Originalfenster
mit hoher Auflösung, und dies ist das
Skalenfenster mit niedriger Auflösung.
So funktioniert es also. Die Größe dieses Videos wurde um 0,75% geändert. Wenn Sie es weiter reduzieren möchten, müssen Sie
nur den Wert
reduzieren Standardmäßig wird diese Funktion jedes Mal um 0,75%
herunterskaliert Wenn Sie jedoch Ihren eigenen Wert
übergeben möchten, müssen Sie
nur das
Komma übergeben und den
Skalierungswert auf 0,20% skalieren Und wenn ich diesen Code ausführe, können Sie
hier sehen,
dass dies unsere Originalgröße ist, und dies ist die
entscheidende Version Jetzt ist es um 20% herunterskaliert. Also werde ich das Fenster von D bis
D loben , bevor
es keinen Rahmen mehr Mit derselben Funktion können
Sie die Bildgröße ändern Lassen Sie mich Ihnen zeigen, wie wir die Größe eines Bildes ändern
können. Aber vorher werde ich diese Zeilen
auskommentieren. Jemand verwendet einen Kommentar mit mehreren , um alle Zeilen auszukommentieren. Dann erstelle ich eine Variable und unser Variablenname
ist in der Bildgröße geändert Underscovimage. Resis ist genauso abgebildet wie
hier. Ich werde die Funktion Recrese Frame verwenden Also werde ich
den Funktionsnamen kopieren und die Funktion aufrufen Statt des runden Prozesses müssen
wir das
Bild bereitstellen, das ich zeigen möchte. Also werde ich diese Zeilen noch einmal
auskommentieren und diese Variable
in dieser Funktion
übergeben . Bild. Und dann verwende ich die
Funktion I'm Show. Ich kopiere diese Zeile
und füge sie hier ein. Zuerst
ändere ich den Fensternamen
, also resize asco C. Und dann
rufe ich cv dot wetKeyFunction auf Cv Punkt Weittaste. Im Inneren des Rundkleids werde ich
die Null überschreiten. Das ist es Bevor ich diese Datei eingerichtet und
den Code ausgeführt habe, habe ich mich nicht geirrt. Hier müssen wir diese
Variable übergeben. Bild verkleinert Und wieder werde ich
diese Datei einrichten und diesen Code ausführen. Um diesen Code auszuführen, ist dies,
wie Sie sehen können, die
Originalgröße dieses Bildes, und dies ist die maßstabsgetreue
Version dieses Bildes. Wir haben das
Bildfenster erfolgreich verkleinert. Mit derselben Funktion können
wir also Bilder skalieren. Wir können auch Videos skalieren. Denken Sie daran, dass diese Methode für Bilder,
Videos und leichte Videos geeignet
ist . Mit einer Funktion können
Sie also alle Tics ausführen. Das ist es also für dieses Tutorial. Im nächsten Tutorial
werden wir lernen, wie wir mit OpenCL Formen zeichnen
können
5. Verschiedene Formen zeichnen und Text auf das Bild setzen: Hallo zusammen und willkommen
zurück zu einer anderen ID. In diesem Tutorial
werde ich darüber sprechen, wie wir Bilder zeichnen
und schreiben können. Lassen Sie uns also in den
Code-Editor von Studio einsteigen. Also werde
ich zuerst eine Python-Datei erstellen. Also hier werde ich
tippen, Draw Dot Py. Und dann werde ich unsere Bibliotheken
importieren. Zuerst importiere ich CV Import, CV 2 als CV. Dann werde ich NumPi als NP
importieren. Import, Num Pi, als N
P. Außerdem kannst du sehen, dass
ich dieses Bild bereits in
mein aktuelles Wing Dy Cat JPG eingefügt Dann werde ich dieses
Bild mit InrdFunction lesen. Geben Sie hier also die erste hemo
crative Variable IMG ein, ich werde
C dot image read verwenden Ich habe gelesen. Dann das runde
Messing, ich beim Angebot Wir müssen
den Dateipfad angeben, CAT Two Dot JPG. Dann müssen wir dieses
Bild mit der Funktion I show anzeigen. Also gebe ich cv
dot image show IM ein, also Is the RoundRef müssen
wir diesem Fenster einen
Namen zuweisen, nämlich C. Und als Nächstes übergebe
ich die Variable, die ING image ist Und dann müssen wir
Wet kwatho v dot wet key,
wet key benutzen , und innerhalb
der Runde drücke
ich, ich gebe Z weiter. Ich
werde diese Es gibt zwei Möglichkeiten, auf Bilder
zu zeichnen. In
einem eigenständigen Bild
wie diesem können Sie alles zeichnen . Sie können auch
ein leeres Bild erstellen. Also entscheide ich, wo ein leeres Bild
erstellt werden soll. Hier tippt leer, was entspricht, ich werde tt Nullen verwenden Dann das runde Messing, ich werde die
Auflösung 500 mal 500 erfüllen Außerdem müssen wir
es in ein rundes Messing stecken. Sie bestehen ich vom Typ
D, größerer Typ. Parameter vom Typ B, D. In diesem einzigen Kurs werde
ich INT 8 eingeben. Dann beende die Rundenrennen. Dies ist der
Datentyp eines Bildes. Und wenn Sie dieses Bild
sehen möchten, müssen Sie
nur diesen Befehl
eingeben. Sie können den Befehl copy
this command und hern
pist zeigen und ich werde at
durch ban ersetzen Außerdem möchte ich die Variable
ändern. Ich habe zwei leere Felder, und ich werde diese Datei einstellen. Nachdem ich diese Datei festgelegt habe,
werde ich den Bereich ausführen. Also werde ich auf die Schaltfläche Ausführen klicken
. Nachdem Sie auf diese Schaltfläche zum Ausführen geklickt haben, können Sie sehen, jetzt sehen Sie, jetzt haben Sie zwei Fenster im Trend. Ein Fenster ist ein KAT-Bild und ein anderes Fenster
ist ein leeres Bild. Und wie Sie sehen können,
ist dies ein quadratisches Bild 500 Pixeln Anstatt KAT Image zu verwenden, werde
ich mein Objekt
in dieses leere Bild zeichnen Also hier werde ich die Zeilen
auskommentieren,
diese beiden Zeilen. Andernfalls können wir es entfernen. Im Moment werde ich mich
dazu äußern. Jetzt werde ich dieses leere Bild zuerst in einer bestimmten Farbe
malen. Also werde ich einen Koman eingeben das Bild in
einer bestimmten Farbe
malen Um das leere
Bild mit einer neuen Farbe zu füllen, müssen Sie
hier eine weitere übergeben Wir müssen den Farbkanal für das Attribut
vier übergeben. Wir werden RGB mit
drei Farbkanälen verwenden. Jetzt können wir Werte für
drei Farbkanäle verwenden. Also, um das leere Bild zu färben, tippe ich
zuerst leer, dann sagst du das quadratische Kleid,
ich werde das Codon weitergeben Entweder ich oder das Pixel, ich
wähle alle Pixel aus. Dann möchte ich
es mit grüner Farbe füllen. Also werde ich
0255, 255, Null bestehen. Es wird dieses schwarze
Bild mit grüner Farbe füllen. Dann müssen wir die
Image-Show-Funktion ausführen. Also hier, um Punkt zu tippen (Imho runderF), um
einen Namen anzugeben. Zuerst müssen wir einen Namen für
das Fenster
angeben und ich werde grün Beim nächsten Wert müssen wir die Variable
übergeben. Das tut. Und ich werde das einstellen.
Um diese Datei einzurichten, wenn ich diesen Befehl ausführe,
können Sie ihn mit zwei Fenstern sehen.
Das ist ein schwarzes Fenster. Dies ist das
Standardfenster, und dies ist das neue Fenster mit
grüner Feldfarbe. Und um eine andere Farbe zu erhalten, müssen Sie
nur die Werte
ändern. Angenommen, Hand oder Pass Null
Komma Null, komm hoch, 255. Ich lege diese
Datei fest und führe diesen Code a
aus. Um diesen Code auszuführen,
können Sie jetzt ein anderes Ergebnis sehen Dieses Mal
füllte sich dieses Fenster mit roter Farbe. Er verwendet die Slicing-Technik
, um alle Pixel auszuwählen. Nicht nur das, wenn Sie einen bestimmten Bereich
mit Farbe
füllen möchten , ja, können
Sie, Sie müssen die Datei mit Start- und
Endpunkt
angeben Nehmen wir an, bei unserem ersten Blick
werde ich 200 mal 300 überschreiten. Beim nächsten Mal werde ich 300
bis 400 überschreiten. Wenn ich diese Datei einstelle
und diesen Code ausführe, können Sie ihn
jetzt an dieser Position in einem roten
quadratischen Feld sehen. So
können wir also neu eingefärbt füllen. Als Nächstes
werde ich ein
Rechteck zeichnen Also werde ich zuerst
beide Zeilen entfernen, weil
ich sie nicht benötige, und dann gebe ich
einen einzigen Beinbefehl ein. Also gebe ich Hashtag ein und
ziehe ein Rechteck weiter. Um ein Rechteck zu zeichnen, verwenden wir
eine Methode,
nämlich cv dot Rig
Tangle. Dieser. Und um das Rechteck zuerst zu zeichnen, müssen
wir ein Bild übergeben. Also werde
ich in der runden Aussparung Schwarz passieren. Und auch die Funktion
akzeptiert mehrere Argumente. Bild 0.1 0.2, Farbe, Dicke, und wenn Sie den
Linientyp angeben
möchten , ja, können Sie das tun. Für den Startpunkt,
innerhalb des runden Kleides,
gebe ich also Null, Komma Null, und für den Endpunkt gebe
ich 250
Pixel mal 50 Pixel Dann müssen wir Farbe übergeben. Und für den Farbwert übergebe
ich 02550 Und auch hier
müssen wir Dicke,
Sonnentyp und Dicke übergeben ,
und ich werde die Dicke Vo zwei übergeben Und wenn es fertig ist,
müssen wir auch dieses Bild zeigen. Also gebe ich
cv dot image show IM ein, also gebe ich in den Rundkleidern zuerst einen Fensternamen ein Also werde ich Rectangle eingeben. Komma. Dann gib das Bild In welchem Bild möchte ich
das Rechteck anwenden , das schwarz ist. Dieser. Ich werde
diese Datei einrichten. Wenn ich diese Datei eingerichtet habe und
diesen Code ausführe , können Sie das Ergebnis
sehen. Jetzt können Sie das Fenster in
diesem Fenster sehen , es zeichnet ein Rechteck. Aber Sie stellen fest, dass Harry
insgesamt drei Fenster erstellt , weil wir Funktion zum Anzeigen von Bildern dreimal
aufrufen. Also werde ich vorerst
einen Kommentar abgeben. Deshalb werde ich diese Zeile vorerst
auskommentieren. Auch diesen
werde ich kommentieren . Ich brauche ihn nicht. Ich wundere mich auch nicht über
die quadratische Schachtel, also kommentiere ich sie aus. Also, wenn ich diesen Code noch einmal ausführe,
seht ihr das Ergebnis. Dies ist das Rechteck, das wir in dem leeren Bild
erstellen. Und wie Sie sehen können, beginnen wir dieses Rechteck an
der Ausgangsposition. Und wenn ich die Ausgangsposition
ändere, nehme ich 50 mal 50 an. Dann stelle diese Datei ein
und führe diesen Code erneut aus, ihr seht das Ergebnis. Jetzt fängt es
an dieser Position an. Und wenn Sie
die Höhe dieses Rechtecks erhöhen möchten und die gesamte
Bildhöhe nutzen möchten, geben Sie
in diesem Fall einfach den Vorgang ein. Auch hier fange ich mit 0-0 an, und dieses Mal werde
ich 500 mal 500 überschreiten Und ich werde diese Datei einrichten. Nachdem ich diese Datei eingerichtet habe,
werde ich diesen Code erneut ausführen. Jetzt können Sie sehen, dass es den gesamten
Bildrahmen mit dem Rechteck
bedeckt . Und wenn Sie den Hub of Area
verwenden möchten, müssen Sie
nur 250500 übergeben und diese Datei einrichten und dieses Fenster
löschen Nachdem Sie diese Datei eingerichtet und
diesen Code ausgeführt haben, können Sie das Ergebnis
sehen So können Sie
Größe und Position
dieses Rechtecks von diesen Tierärzten aus definieren dieses Rechtecks von diesen Tierärzten aus Jetzt entscheiden Sie, dass Sie dieses Rechteck mit Farbe
füllen möchten dieses Rechteck mit Farbe
füllen Dazu möchten Sie nur den Dickenwert
ändern. Also werde
ich zuerst dieses Fenster löschen
und dann die Dicke
ändern, die
Dicke entspricht dem V-Punktfeld. Also, nachdem ich diese Geschichte geschrieben habe, wenn ich diesen Code ausführe, können Sie das Ergebnis
sehen. Wie Sie sehen können, möchte ich dieses Mal ein Rechteck mit
grüner Farbe füllen. Jetzt werde ich dir etwas
zeigen. Anstatt diese Werte zu übergeben, können
Sie shape verwenden. Sie können einen exakt fad
geformten Bereich verwenden. Lass es mich dir zeigen Also werde ich diese Zeile
duplizieren und die vorherige Zeile kommentieren. Und dieses Mal verwende
ich statt
eines numerischen Werts die Form. Also habe ich den
Bildnamen leer gebunden. Leer, Punkt, Form. Dann in der quadratischen Resis,
hier werde ich an einem vorbeigehen. Und dann werde ich diesen Wert durch zwei
teilen. Dann übergebe ich ein Komma und
gebe eine leere
Punktform Und innerhalb dieser quadratischen Resis übergebe
ich Null und
teile sie durch zwei Wenn ich diese Folie einstelle
und diesen Code ausführe, entsteht
im Grunde eine quadratische Form, denn
wie Sie sehen können, ist
hier die Höhe
500 und die Breite 500 Und wenn wir 500 durch zwei teilen, ergibt das 250. Und wenn wir
diese 500
wieder durch zwei teilen , ergibt das 215. Es wird also ein Quadrat
entstehen. Im Grunde werden wir
die Form verkleinern. Wenn ich also diesen Trupp leite, nachdem ich diesen Boden angelegt habe, können Sie
hier sehen, wie er
eine quadratische Form annimmt. Und seine Höhe ist die Hälfte
der Bildhöhe und auch die Hälfte
der Bildbreite. Auf die gleiche Weise, wenn
ich es durch
drei teile und dann
diese Datei hochlade und Code ausführe, können Sie
jetzt eine
andere Form sehen. Diesmal
wird die Höhe durch
drei geteilt und die Bildbreite
durch zwei geteilt. Aus diesem Grund wurde eine
rechteckige Form erstellt. Im Grunde möchte
ich Ihnen zeigen, dass Sie, anstatt einen exakten numerischen Wert zu
verwenden, die Form verwenden können,
um den Wert zu berechnen. Gehen wir nun zur nächsten Form über. Lass uns einen Kreis zeichnen. Also hier gebe ich
einen einzeiligen Kommentar und ich gebe einen Kreis zeichnen ein. Außerdem werde ich die Zeilen
auskommentieren . Ich brauche es nicht. Um einen Kreis zu erstellen, müssen
wir die CV Dot
Circle-Methode, CV Dot Circle, verwenden. Und innerhalb der Runden müssen
wir zuerst das
Bild bereitstellen, das sich dort befindet Dann müssen wir
die Koordinate
der Mittelposition übergeben die Koordinate
der Mittelposition Also werde
ich innerhalb der runden
Adressen vorerst die
mittlere Position
dieses Bildes übergeben , die 25250 ist Dann müssen
Sie in dieser Funktion die Radiuswelle passieren Und hier
übergebe ich den Radiuswert 40. Außerdem müssen wir die Farbe
angeben. Also werde
ich in der runden Aussparung 002 55 weiterleiten, was wiederum die rote Farbe BGR
zurückgeben Und dann müssen wir
die Dicke dieses Randes angeben. Die Dicke ist so eng, ich drei oder drei Pixel brauche und werde das auch tun. Und dann müssen wir dieses Bild
anzeigen. Also Hemo-Typ: CV, Punkt,
Bild zeigen, ich zeige. Dann wollen die
Pressen in der Runde zuerst den Fensternamen
übergeben und der
Fenstername ist Kreis Und das nächste Fenster, das ich
übergeben werde, ist der
Bildname, der dort steht. Und ich werde diese
Datei einrichten. Wenn ich diese Datei eingerichtet habe und diesen Code
in meinem Terminal ausführe, wird Folgendes erstellt. Es erzeugt einen Kreis an der
mittleren Position dieses Bildes. Und jetzt, wenn du diesen Kreis füllen
willst, dann musst du
die Dicke ändern. Aber dieses Mal werde
ich einen anderen Hund benutzen. Anstatt das Cv-Punktfeld zu verwenden, verwende ich
hier minus eins. Wenn ich diesen Wert übergebe und
diese Datei festlege und
diesen Code erneut ausführe, können Sie
jetzt sehen, dass unser Kreis mit roter Farbe
gefüllt ist. Das ist also eine weitere Methode, die
Sie mit Farbe kombinieren können. Sie müssen nur den
Dickenwert minus eins übergeben. Sie können auch
cv dot fill it verwenden. Und jetzt werde ich Ihnen
zeigen, wie wir mit geöffnetem
C
eine eigenständige Linie zeichnen können mit geöffnetem
C
eine eigenständige Linie . Also werde ich dieses Fenster
ausgraben und zuerst beide Linien
auskommentieren. Und hier werde ich
versuchen, einen Kommentar abzugeben, und ich werde
versuchen, eine Linie zu zeichnen. Um die Linie zu erstellen, müssen
wir die
V-Punkt-Linienmethode, die CV-Punktlinie, verwenden . Dann müssen
wir in das runde Kleid zuerst das
Bild weitergeben, wo wir die Linie ziehen sollen,
die schwarz ist. Und jetzt müssen wir die
Koordinatoren dieser Linie übergeben. Dafür werde ich dieselben Werte
verwenden. Also werde ich diesen
Abschnitt kopieren und dort einfügen. Ich werde nur den
Dickenwert dieser Linie ändern. Hier übergebe ich den dritten
Dickenwert. Außerdem werde ich die Farbe
ändern und
weiße Farbe verwenden, komplett weiß. Also werde ich 255255, 255
bestehen. Wenn ich diese Datei eingerichtet habe und diesen Code in
meinem Terminal ausführe ,
können Sie das Ergebnis sehen Und bevor ich die
Datei festlege, führe ich diesen Code aus, wir müssen dieses Bild zeigen. Also werde ich diesen Abschnitt
kopieren, ihn hier einfügen und den Kreis mit Linie
durchtrennen. Das heißt, ich stelle diese
Datei ein und führe den Code aus. Nachdem ich diesen Code ausgeführt habe, können
Sie das Ergebnis sehen. Das ist also das Licht, das wir mit Open Ceri
erzeugen. Und wenn Sie
die Ausgangsposition ändern möchten, müssen Sie
nur die Ansicht ändern Nehmen wir an, ich
fange ab 2020 damit an. Wenn ich diese Datei einstelle und dieses Fenster
lösche und diesen Code
neu schreibe, kannst
du sehen, dass er diesmal an dieser Position
beginnt Wir behandeln also bereits
die meisten dieser Formen. Als letztes werde
ich über Text sprechen,
wie wir Text auf ein Bild setzen können. Dafür werde
ich zuerst dieses Fenster löschen und
dann die Zeilen
auskommentieren. Außerdem werde ich einen Kommentar
eingeben. Dieses Mal werden
wir Text auf Bild schreiben. Es ist eine sehr einfache
Kunst, Text auf ein Bild zu setzen. Zuerst müssen Sie cb dot eingeben und dort die
put-Textmethode aufrufen Text eingeben. Dann müssen wir innerhalb der
RoundSESF das Bild
auswählen, in das
wir den Text einfügen möchten In unserem Fall leer. Poma, zehn, wir
müssen den Text angeben
, den du in unser Bild
einfügen willst In unserem Fall hallo n. Dann müssen wir
die Position definieren, von der aus
wir den Text schreiben wollen In der runden
Phase
übergebe ich also 225 Komma 225 Als Nächstes können wir jetzt die Schriftphase
angeben. Hier müssen
wir also, um die Schriftphase und die Schriftphase zu
bestehen, die Schriftphase und die Schriftphase zu
bestehen, etwas OpenCV
in den folgenden Schriftphasen verwenden Und wir werden die CV-Punkt-Schrift und den
Unterstrich
verwenden , hier
haben wir viele Optionen Wir haben eine komplexe kleine Duplexebene, aber wir
werden X verwenden, diese Und die nächste
müssen wir als Maßstab durchgehen. Und ich möchte auf 1,0 skalieren. Und als Nächstes müssen wir
die Schriftfarbe und
ihren Durchgang Null,
255 Komma Null und auch
die Dicke angeben die Schriftfarbe und
ihren Durchgang Null, 255 Komma Null und auch
die Dicke Und was die Dicke angeht,
werde ich etwas übergeben. Ich denke, zwei sind genug, und Hoppla, ich muss
den Befehl zwischen diesen beiden geben und das war's Dann müssen wir die
Image-Show-Funktion aufrufen, der Punkt meiner Meinung nach. Dann
müssen wir in
der Runde zuerst einen
Fensternamen angeben, der Text ist Dann müssen wir
das Bild schwarz angeben. Und ich werde diese Datei einrichten. Wenn ich diese Datei eingerichtet habe und diesen Code in
meinem Terminal ausführe ,
können Sie das Ergebnis sehen. Wie Sie sehen können,
haben wir diesem Bild erfolgreich Geschmack verliehen. Ich hoffe, Ihnen ist klar
, wie wir verschiedene
Formen und Linien erstellen
können. Außerdem können wir einem Bild
Geschmack verleihen. Das ist es also für dieses Tutorial. Also danke, dass du
dir dieses Video angesehen hast. Traurig für das nächste Tutorial.
6. Wichtige Funktion im offenen Lebenslauf: Hallo zusammen und willkommen
zurück zu einem weiteren Video. In diesem Tutorial werden
wir
über die grundlegenden Funktionen
beim offenen Speichern sprechen . Beginnen wir nun
mit der ersten Funktion. Mit dieser Funktion können
wir
Bilder in Graustufenbilder umwandeln Bilder in Graustufenbilder Wir haben dieses Bild bereits ausgewählt
und zeigen es an. Es ist ein Farbbild des BGIRImage-Kanals. bGIR steht für
Blau, Grün und Rot. Jetzt gibt es Möglichkeiten, wie wir bgirImage in ein Graustufenbild
konvertieren
können bgirImage in ein Graustufenbild
konvertieren Dafür werden wir die CVD-Farbmethode
verwenden. Zuerst
deklariere ich eine Variable Grau CV, Dot, CV decolor
entspricht Da sind die runden
Pressen, zuerst müssen
wir das Bild bereitstellen,
welches Bild ich in Graustufen
umwandeln möchte, und unsere Bildvariable ist IMG. Beim nächsten Parameter müssen
wir
nun den Farbcode übergeben, der CV Punkt, farbig
, Underscoe BGR ist , Als Nächstes werde ich dieses Bild anzeigen. Ich werde dieses
Funktionsbild kopieren und es hier einfügen. Dann werde ich das graue Katzenbild
durch eine graue Variable
ersetzen . Ich möchte diese
Datei einrichten. Wenn ich diese Datei einrichte, wenn ich diesen Code
in meinem Terminal ausführe, können
Sie das Ergebnis sehen. Das ist das Farbbild und
das ist das Graustufenbild. Es ist sehr einfach,
VGRImage in ein Graustufenbild umzuwandeln. In der nächsten Funktion werden
wir besprechen, wie wir ein Bild verwischen können Hier gebe ich einen einzelnen
Kommentar ein und ich
gebe Blur ein Ich werde diese
Linie über das Unschärfekoma verschieben. In Open CP gibt es mehrere
Unschärfetechniken, aber wir werden Gersionblur
verwenden Zuerst werde ich eine variable Unschärfe
deklarieren. Blur entspricht Cv
GusionBlrtie, GH Gasianblur. Dann zuerst in der
Runress, nur um die Bildquelle bereitzustellen , die IMG ist. Komma, als nächstes müssen
wir in dieser Funktion den Wert für
die Kernelgröße angeben und wir müssen den Wert
als Band angeben . Hier erwähnen wir die
Größe des Ist die Runde gegen,
ich werde bestehen und hier werde ich Kernelgröße drei und drei
bestehen Als Nächstes müssen wir die Grenze
definieren. Ich werde CV Dot,
Border Default bestehen . Dieser. Dann müssen wir
dieses Unschärfebild anzeigen. Ich werde dieselbe
Funktion verwenden, Bild anzeigen. Ich kopiere diese Funktion und
füge sie hier ein. Zuerst werde ich
den Fensternamen Grau durch Unschärfe ersetzen den Fensternamen Grau durch Unschärfe ersetzen Dann ersetze ich
den Variablennamen, unsere Bildquelle, der
Blur ist. Ich werde zufrieden stellen Aber bevor ich diesen Code ausführe, werde
ich diese beiden Zeilen
auskommentieren. Ich brauche es nicht mehr. also nach dem Einstellen dieser Datei Wenn ich also nach dem Einstellen dieser Datei diesen Code
in meinem Terminal ausführe, können
Sie das Ergebnis sehen, aber es ist nicht allzu klar. In diesem Bild
fügen wir wenig hinzu. Wenn wir es mit
dem Originalbild vergleichen, möchte ich Ihnen zeigen, dass ich
dieses Terminal lösche und diese Zeile
lobe Außerdem werde ich dieses Mal den
Kernelwert erhöhen. Ich werde
es drei auf 77 mal
sieben machen und dann
diese Datei einstellen und diesen
Code in meinem Terminal ausführen Jetzt können Sie
beide Bilder vergleichen. Dies ist das normale Bild
und dies ist das Unschärfebild. Hier fügen wir Gersionblur hinzu. Mit dem Kernelwert können wir auf Englisch mehr Blut
hinzufügen. Kommen wir nun zur nächsten Funktion
,
der Alterskaskade Hier werde ich eine einzelne
Zeile
erstellen und dann Age Cascade eingeben Mit dieser Funktion finden
wir im Grunde Kanten in einem Bild. In Open
C sind viele H-Kaskaden
verfügbar . In diesem Tutorial werden
wir jedoch die CIH-Kaskade verwenden, die in der
Computer-Vision-Welt ziemlich bekannt ist Im Grunde handelt es sich um einen
mehrstufigen Prozess , der Unschärfe,
Gradierung und vieles mehr beinhaltet .
Fangen wir also an Also werde ich zuerst eine Variable
deklarieren, und unser Variablenname ist Canny, weil wir jede Kaskade verwenden
werden, die mit C
zugewiesen ist, wir Punkt In den Rundkleidern müssen
wir zuerst
dieses Quellbild
IMG W angeben, müssen
wir zuerst
dieses Quellbild
IMG W angeben das wir auch an den Schwellenwert
übergeben müssen Als ersten Wert
verwende ich 125 und für den zweiten Wert
175 Versuchen wir nun,
dieses Bild in unserem Fenster anzuzeigen. Aber bevor ich diese Funktion
kopiere, zeige ich
das Bild und kommentiere
sie aus. Dann füge ich es
hier ein und ersetze BlaikN. Außerdem werde
ich
den Variablennamen, Ken, ersetzen Lassen Sie uns jetzt den
Code in unserem Terminal ausführen. Nachdem wir diesen Code
in unserem Terminal ausgeführt
hatten, sah er so aus. So steht es geschrieben. Wie Sie
in diesem Beispiel sehen können, können
wir
mit der Kaskadierung den Rand des
SCAT-Images
detaktieren Nicht nur das, wir
können auch die Kanten reduzieren,
wenn wir ein unscharfes Bild übergeben.
Lass es mich dir zeigen Also dieses Mal werde ich Blurry Age an eine
EM-Quelle
weitergeben, diese hier Ich werde
ING durch Blut ersetzen und ich werde diese Datei einrichten Wenn ich nach der Satis-Datei
diesen Code in meinem Terminal ausführe, können Sie
jetzt sehen, dass wir das Rauschen reduzieren
können Durch die Verwendung von unscharfem Bild wurde
das Rauschen reduziert Aber wenn wir
den Blutwert reduzieren, lassen Sie mich Ihnen zeigen, ob
ich Gerson-Blut verwende, drei mal drei, und
dann diese Datei, wenn ich sie entschlüssele,
können Sie jetzt das Ergebnis sehen Jetzt können Sie sehen, dass es
die Kanten vergrößert. Es verstärkt den
Lärm dieser Zeit. Ändert man den
Blutwert eines Bildes, dann kann man
ihn deutlicher erkennen. In der nächsten Funktion werden
wir
besprechen, wie wir ein Bild
erweitern können Um das Bild zu erweitern, werden
wir bestimmte Struktur
und ein bestimmtes Element
verwenden Die Struktur und die
Elemente, die wir
verwenden werden, entsprechen tatsächlich dem Zeitalter. Zuerst lösche ich mein Terminal und dann gebe ich einen einzigen Kommentar ein
und
tippe Dilating the Mache Und dann werde ich eine Variable
deklarieren. Er tippt dilate it gleich Cv dot, dilate Dann werde
ich im RoundReesf das CE-Bild weitergeben,
dieses hier, ein Bild dieses hier, ein Um die Variable CE zu übergeben müssen wir
die Kernelgröße angeben Nach der Innenseite der runden Kleider werde
ich 33 bestehen, und es gibt auch Wiederholungen. Ich bin Typ Iteration Eins. Lassen Sie uns nun dieses Bild anzeigen. Dafür verwende ich
die Onto-Funktion und füge sie hier
ein und
ersetze Canny durch Dilate Ich kopiere diesen
Variablennamen und ersetze Canny durch dilated Außerdem müssen
wir Dann werde ich diese Datei einrichten
und dann werde
ich diese Datei einrichten Lassen Sie uns etwas Platz
zwischen den Funktionen schaffen. Ansonsten sieht es sehr auffällig aus. Dann werde ich diese Zeile
auskommentieren. Ich möchte dieses Mal nicht das
Originalbild zeigen. Ich möchte nur das schicke
Bild und das erweiterte Bild zeigen. Bitte stellen Sie sicher, dass ich
diesen Code in meinem Terminal ausführe Sie können fast
das gleiche Ergebnis sehen Dies ist das erweiterte Bild, und dies ist nur das Ky-Bild Das sind die Kanten und das
sind die erweiterten Kanten. Wenn Sie genau hinschauen, können
Sie sehen, dass die erweiterten Kanten viel dicker
sind
als die vorherigen Lassen Sie mich es Ihnen zeigen, wenn ich den
Iterationswert erhöhe. Ich werde
die Terminals schließen. Und dann werde ich
die Iteration Willow erhöhen. Oh, ich werde es schaffen. Also werde ich drei daraus machen
und dann diese Datei einrichten. Dann werde ich diesen
Code erneut in meinem Terminal ausführen. Nachdem ich diesen
Code in meinem Terminal ausgeführt habe, können
Sie das Ergebnis sehen. Erweiterte Kanten sind
viel dicker als
C-Kanten . So funktioniert es Jetzt werde ich
die LST-Funktion besprechen, mit der wir
die
Größe von Bildern ändern und sie zuschneiden können Hier gebe ich
einen einzigen Endbefehl und dann Resize ein Wir haben bereits in unseren vorherigen Videos gelernt, wie wir die
Größe unseres Frames ändern können vorherigen Videos gelernt, wie wir die
Größe unseres Frames ändern Diese Funktion ist
sehr einfach zu bedienen. Zuerst müssen wir
eine Variable deklarieren und unser
Variablenname lautet resize Entspricht dem Punkt Cv. Dann müssen
wir in der
Laufaussparung zuerst das
Quellbild übergeben, das ING ist Hier ist der Pass ING, und als nächstes müssen wir
die Dimension des Bildes übergeben. Ich werde es auf 500 mal 500 setzen, aber es wird das
Seitenverhältnis ignorieren. Ich werde kommentieren, was
das vorherige ONO funktioniert hat. Ich brauche es vorerst nicht und ich werde diese Datei
einrichten und muss
auch die
Funktion p aufrufen, um die Bildgröße Um diese
Variable durch Harze zu ersetzen. Außerdem werde ich den Fensternamen
ändern und diese Datei einrichten Lassen Sie uns nun auf den Code eingehen
und sehen, was er geschrieben hat. Nach diesem Code
können Sie das Ergebnis sehen. Es testet unser Bild erfolgreich, aber es folgt nicht
dem Seitenverhältnis. Wenn ich es mit dem
Originalbild vergleiche, lass es mich dir zeigen. Wenn ich diese Zeile dekommentiere und
dann diese Datei erneut setze
und diesmal
400 mal 400, 400 mal 400 übergebe einstelle und diese Datei einstelle und diesen Code ausführe, kannst
du das Ergebnis sehen Dies ist das Originalbild, und das ist das Bild zur Größenänderung Sie können den Unterschied
zwischen den Seitenverhältnissen sehen Als Nächstes zeige ich Ihnen, wie wir das Bild zuschneiden können Ich lösche die Fenster und füge einen
weiteren Kommentar hinzu: Zuschneiden Auf der Grundlage
ihres Pixelwerts können
wir den
Teil eines Bildes auswählen Lassen wir das Bild also fallen. Also
werde ich zuerst
eine Variable Crop Tikal zwei deklarieren , ich werde das
Quellbild IMG übergeben Dann müssen wir eckige Klammern
verwenden und die Punkte übergeben Zuerst
wähle ich 50 Doppelpunkt 200 aus. Und der nächste Punkt
ist 200 bis 400. Dann werde ich dieses Bild
mit der Bildfunktion
anzeigen . Also kopiere ich diese
Funktion und füge sie hier ein
und ersetze die variable Größe durch Cro. Ändere auch den Fensternamen Crop Ich
werde diese Datei einstellen. Bevor ich diese Datei festlege,
müssen wir diese Zeile auskommentieren. Außerdem müssen wir es
mit dem Originalbild vergleichen. also nach dem Einstellen dieser Datei Wenn ich also nach dem Einstellen dieser Datei diesen Code
in meinem Terminal ausführe, können
Sie das Ergebnis sehen. Dies ist das Originalbild
und das ist das zugeschnittene Bild Dies ist der Teil des Zuschneidebilds
dieses Originalbilds. Wenn ich also versuche, dem zu entsprechen, ja, wir können dem entsprechen. So wurde es langsamer. Das ist also so ziemlich viel für dieses Video Wir haben gerade die
grundlegenden Funktionen in
Open C gelernt . Im nächsten Tutorial werden
wir etwas über
Bildtransformation lernen. Also danke, dass du
dir dieses Video angesehen hast. Seien Sie gespannt auf das
nächste Tutorial.
7. Offene CV-Bildübersetzung1: Hallo und willkommen zum
Python Open City-Kurs. In diesem sechsteiligen Set werden wir die grundlegende
Bildtransformation
erlernen. Dies sind gängige Techniken, die Sie auf Ihre Bilder anwenden
möchten, einschließlich
Translation, Drehung, Größenänderung und Umdrehen Fangen wir mit der Übersetzung an. Übersetzung besteht
im Grunde darin,
das Bild entlang der Xs- und YX-Linien zu versenden . Mithilfe der Übersetzung können Sie das Bild von oben
nach links nach rechts
versenden. Du kannst es auch kombiniert moben. Um das Bild zu übersetzen, können
wir eine
Übersetzungsfunktion erstellen Lassen Sie uns eine Funktion deklarieren. Dafür binde ich BA und unser
Funktionsname ist translate. Übersetze innerhalb der Rundreses und ich werde drei Parameter
übergeben Zuerst müssen wir das Bild
übergeben,
welches Bild ich IMG übersetzen
möchte Dann werde ich X xs bestehen und als nächstes werde ich YxS bestehen Dann brauchen
wir in dieser Funktion, um das Bild zu übersetzen, um das Bild zu übersetzen, eine Übersetzungsmatrix Also werde ich
eine variable Transmt deklarieren. Transmat benötigt zwei,
und ich werde
eine Funktion namens float
32 aus dem Numbi-Modul verwenden ,
NP, tot, float, dot, float 32. Aber bevor wir das NumPi-Modul
importieren müssen Hier geben wir ein, importieren
NumPi als NP und dieses, nehmen eine Liste und
müssen
innerhalb dieser Liste zu einer anderen
Liste wechseln. Eine weitere Liste In unserer ersten Liste werden
wir Eins, Nullkomma X sagen, und in unserer zweiten Liste übergebe
ich
Null, ein Komma Y. Sobald wir die
Übersetzung der Matrix erstellt haben,
müssen wir das Tmage
angeben Ich werde eine weitere
Variable namens Tension deklarieren. Eine Dimension, die
am entspricht, wird durch ein Tupel übergeben. Im Inneren des runden Kleides, an dem
Amul vorbeifließt, ein Bild von Methyl Bildform innerhalb
des Quadrats SS, am Typ eins, wie Sie wissen, wird das Bild damit definiert Außerdem müssen wir
die Bildhöhe angeben. Dafür müssen wir Bild, Punkt, Form
eingeben. In den eckigen Kleidern werde
ich die Null überschreiten. Es ist definierte Flüssigkeit. Dann können wir einen Typ zurückgeben, VT in Ordnung
zurückgeben. F in Ordnung. In den runden Pressen werde
ich das Bild weitergeben. Dann werde ich
die Matrixübertragung bestehen und wir
müssen die Dimension passieren Lassen Sie uns jetzt unser
erstes übersetztes Bild erstellen. Aber bevor ich
Ihnen sage, wenn ich einen Minus-X-Wert übergebe, wird die Lippenseite
des Bilds verschoben, und wenn ich einen Minus-Y-Wert verwende, wird
das Bild kopfüber versendet Und wenn ich
das Bild nach rechts verschieben möchte, müssen wir einen
positiven X-Wert übergeben Und wenn ich es nach unten verschiebe, müssen wir einen
positiven Y-Wert verwenden Lassen Sie uns nun das
übersetzte Bild erstellen. Um also eine andere
Variable einzugeben, übersetzen Sie sie. Übersetzen ist gleichbedeutend mit übersetzen. Übersetze, dann müssen
wir innerhalb
des Rundenprozesses das Bild übergeben. Erster Wert, ich werde dieses Bild
übergeben, ING. Dann müssen wir die
xs-Richtung und die xs-Richtung übergeben. Ich werde einen
positiven Hundert-Wert
für xs für YxS übergeben , ich werde auch einen positiven Hundert-Wert
übergeben Nachdem wir zufrieden sind,
müssen wir dieses
Bild jetzt in unserem Fenster anzeigen Dafür müssen wir die Methode
c dot Imho oder Cv
dot Imo Image show verwenden Methode
c dot Imho oder Cv
dot Imo Image Dann müssen
wir statt
RoundRef einen Namen für dieses
Fenster angeben, Ich kopiere diesen Variablennamen
und füge ihn hier ein. Als Nächstes müssen wir das Bild verwenden. Welches Bild möchte ich fw. Ich möchte dieses
Bild falten und übersetzen. Ich nenne diese Variable und
werde diese Datei setzen. Wenn ich nach dem Setzen dieser Datei
diesen Code in meinem Terminal ausführe, können Sie
hier das Ergebnis sehen. Das ist der Unterschied
zwischen zwei Hinterteilen. Das ist unser Originalbild
und das ist unser
übersetztes Bild Hier versenden wir das
Bild, 100 Punkte xs und positive 100 Punkte yxs Es wird um 100 Pixel nach unten und nach rechts um 100 Pixel versendet Lassen Sie uns nun das Bild versenden, um 100 Pixel nach
links und
um 100 Pixel nach unten. Dieses Mal werde ich negative Werte
verwenden. Ich möchte es in die Richtung -100
Pixel X verschieben. Ich möchte Lippenseite sagen und auch, ich möchte es nach unten verschieben Also unser X Van im Angebot. Nachdem wir diese Datei eingerichtet haben, lassen Sie uns den Code
in unserem Terminal ausführen. Nachdem Sie den Code
in unserem Terminal ausgeführt
haben, können Sie das Ergebnis sehen. Wie Sie sehen können, wurde
diesmal die Lippenseite des Bildes und auch
das Bild nach unten verschoben Wenn Sie das Bild jedoch nach oben
verschieben möchten, geben Sie es
in diesem Fall einfach an, einen negativen
YXS-Wert zu übergeben -100 Pixel. Lassen Sie uns nun den Code ausführen und sehen, ob er richtig funktioniert oder nicht Bis zum Ausführen des Codes
können Sie das Ergebnis sehen. Dieses Mal versenden wir dieses Bild 100 Punkten auf der linken Seite
und 100 Punkten auf der Oberseite So funktioniert das Übersetzen. In unserem Startabschnitt habe
ich auch die Arbeitsmethode mit positiven und
negativen Werten erwähnt Arbeitsmethode mit positiven und
negativen Werten Wenn Sie
es nach links verschieben möchten, verwenden Sie minus X, und wenn Sie es nach oben
verschieben möchten, verwenden Sie minus Y. Wenn Sie es nach rechts verschieben möchten, verwenden Sie positives X,
und wenn Sie
es nach unten
bewegen möchten, dann verwenden Sie positives Y.
Das ist es dann verwenden Sie positives Y. für dieses Tutorial im nächsten Teil, in dem wir
8. Offene CV-Bilddrehungsteil2: Schön, dass ihr wieder da seid, Leute. In diesem Abschnitt erfahren
wir, wie wir Bilder
mit Python OpenC drehen
können Wie Sie in meinem
Visual Studio-Code-Editor sehen können, Harry bereits eine Python-Datei
erstellt, Punkt Pi
gedreht, und ich habe das
Bild bereits mit der Funktion
image it erweitert Dann ist Rotation genau das
, wonach es sich anhört. Ein Bild
in bestimmten Winkeln drehen. Zuerst erstelle ich eine Funktion,
Dave, und unser Funktionsname ist Rotation. Diese Funktion benötigt insgesamt drei Argumente, das Bild, und
als nächstes
nimmt sie den Winkel, den Drehwinkel. Außerdem nehmen Sie einen anderen
Parameter,
nämlich den Drehpunkt, also T, ROT, Punkt, der gleich nun ist. Dann müssen
wir in dieser Funktion die Höhe
und Breite dieses Bildes erfassen. Dafür werden die
Runden sofort vom Typ Höhe, Breite gleich, ich verwende die
ING-Shape-Methode, Ng. Innerhalb des Quadrats, Basis,
Hämatyp, Doppelpunkt zwei. Ich meine die ersten beiden Werte,
nämlich Höhe und. Als Nächstes verwende ich die
IP-Bedingung. Wenn der Drehpunkt keiner ist,
dann drehen wir innerhalb dieser IP-Bedingung das Bild um die
Mitte und um
den Mittelpunkt zu bekommen, gebe
ich einen anderen
variablen Wurzelpunkt ein,
um den Mittelpunkt zu bekommen,
ihr Typ Rotpunkt Mitte und um
den Mittelpunkt zu bekommen, gebe
ich einen anderen
variablen Wurzelpunkt um den Mittelpunkt zu bekommen, entspricht
dem innerhalb des Rundkleides, wir müssen durch zwei teilen Geben Sie also Breite, geteilt,
geteilt durch zwei ein. Auf die gleiche Weise müssen
wir die Höhe durch die Höhe
teilen, die durch zwei geteilt wird. Gibt
die Mittelposition zurück, andernfalls die
Mittelpunktkoordinaten dieses Bildes. Jetzt müssen wir
die Rotationsmatrix erstellen. Dafür werde ich
zuerst Unentschieden erstellen und
eine variable
Rotman-Rotationsmatrix deklarieren . Eine Rotationsmatrix, die einem
Punkt entspricht, erhält eine Rotationsmatrix. Tor-Rotationsmatrix
zwei d, diese. Dann in den Rundkleidern, hier müssen Sie
den Drehpunkt passieren, der die Mittelposition ist Ich übergebe diesen
Wert, den Rotpunkt. Oder Punkt. Wenn das auch so ist, müssen
wir den Winkel überschreiten. Dann werde ich das Waagenfläschchen
weitergeben. Wenn Sie das Bild skalieren möchten, wenn Sie das
Bild drehen, können
Sie in diesem Fall zu etwas anderem übergehen, andernfalls können Sie den
Standardmaßstabswert
verwenden , der 1,0 ist. Dann müssen wir
die Dimension als Tupel angeben. Geben Sie die Dimension Dimension ein, die dem Tupel
entspricht Ich werde
Breite und Höhe übergeben Jetzt können wir
das gedrehte Bild zurückgeben, smtIRTURN, hier
nenne ich die Methode v dot Dann in das runde Messing, hier zuerst, werde ich das
Bild weitergeben Dann werde ich die Verrottungsmatte und die
Rotationsmatrix
weitergeben und auch
CA zwischen ihnen bereitstellen. Dann müssen wir die Dimension
übergeben. Das ist also die Funktion
, die das Bild drehen kann. Jetzt müssen wir diese Funktion
aufrufen. Dafür werde ich
eine Variable namens rotate erstellen. Rotate gleich hier nenne ich die Funktion
rotate und innerhalb
der Roundres
übergebe ich zuerst das
Quellbild IMG, dann würde ich den
Drehwinkel übergeben, der 45 ist Ich werde diese Datei einrichten. Jetzt müssen wir dieses
Bild in unserem Fenster erstellen. Dafür müssen wir die Bildfunktion
verwenden. Geben Sie hier also v (Punkt
) ein. Ich bin in der runden Presse Zuerst
müssen wir diesem Fenster, das gedreht wird, einen Namen
geben . Ich kopiere den Namen
und gebe ihn hier weiter. Dann müssen wir
Komma verwenden und wir müssen die Bildquelle
übergeben,
die gedreht wird Ich werde diese
Münze setzen. Wenn ich nach dem Einstellen dieser Datei diesen Code
in meinem Terminal ausführe, können
Sie das Ergebnis sehen. Sie können sehen, dass dies
unser Originalbild ist und dass dies unser gedrehtes Bild ist. Hier drehen wir das Bild gegen den
Uhrzeigersinn. Wenn Sie
dieses Bild im Uhrzeigersinn drehen möchten, müssen Sie
nur das
Negativvideo um -45 Grad weiterleiten Wenn Sie zufrieden sind, ob ich
diesen Code erneut ausgeführt habe, können Sie das Ergebnis
sehen Diesmal dreht es das Bild
im Uhrzeigersinn. So können wir
ein Bild mithilfe von Open Saving drehen. Wir können dieses
Bild in jedem beliebigen Winkel drehen. Das ist es für dieses Tutorial. Danke, dass du dir dieses Video angesehen hast.
9. Bildübersetzung für offene Cv-Bilder Teil 3: Willkommen zu einer weiteren Transformation
im Zusammenhang mit einem Tutorial. In diesem Tutorial
werden wir lernen, die Größe zu ändern, zu streichen und zuzuschneiden Fangen wir also mit dem Praktischen an. Wir haben bereits in unseren
vorherigen Tutorials über
die Größenänderung gelernt in unseren
vorherigen Tutorials über
die Größenänderung Wir müssen die Funktion zur Größenänderung von
Cv-Punkten verwenden Also
werde ich zuerst
eine Variable namens reside deklarieren eine Variable namens reside Die Größe entspricht der C-Punktgrößenänderungsfunktion,
befindet sich. Dann verwende
ich innerhalb der Runden zunächst ein variables
IMG-Bild innerhalb der Runden.
Wir müssen die Größenänderungsdimension angeben Ich muss 300 mal 300 bestehen. Als Nächstes müssen wir
den Interpolionswert übergeben. Ich habe
Interpolation eingegeben und
werde dort v dot interQPT one verwenden Enter Quvit ist langsam, aber es gibt ein besseres Bild zurück . Dann stimmen Sie einfach zu,
die Funktion
zum Anzeigen von Bildern aufzurufen und sie hier zu platzieren . Diesmal ändere
ich zuerst den
Fensternamen. Die Größe wurde geändert. Außerdem werde ich die Variable
aufrufen, diese. Ich werde
diesen einstellen. Lassen Sie uns nun die Datei einrichten und den Code in unserem Terminal
ausführen. Nachdem Sie diesen Code ausgeführt
haben, können Sie das Ergebnis sehen. Dies ist unser Originalbild
und das ist unser verkleinertes Bild Lassen Sie uns nun über unsere
nächste Transformation sprechen, nämlich das Umdrehen Zuerst werde ich diese Zeile
auskommentieren. Dann werde ich hier
lernen, wie wir ein
Bild mit Open SNing umdrehen können Dafür müssen
wir keine Funktion definieren. Zuerst gebe ich einen Befehl mit
einer einzigen Länge und
dann Flipping Dann deklariere ich
eine Variable namens flip. Slip entspricht C Dot Flat. Dann würde
ich in den runden Pressen das Bild, das ich umdrehen möchte, IMG weitergeben. Hier müssen wir ein U übergeben. Es wäre Null,
Eins, andernfalls minus Eins. Fangen wir mit Null an. Dann werde ich diese
Flotte ausstellen. Dafür müssen wir die Funktion zum Anzeigen von
Bildern verwenden, und ich werde
den Fensternamen,
Resize, durch Flip ersetzen den Fensternamen,
Resize, durch Flip ersetzen Außerdem werde ich die Variable
laid ersetzen . Ich werde
diese Datei einrichten. Null bedeutet im Grunde,
dass das Bild vertikal
gespiegelt wird, und wenn Sie einen Wert überschreiten,
wird
das Bild horizontal umgedreht gespiegelt wird, und wenn Sie einen Wert überschreiten, wird
das Bild horizontal Wenn Sie den Wert minus eins überschreiten, wird das Bild
sowohl in
horizontaler als auch in vertikaler Richtung
umgedreht sowohl in
horizontaler als auch in vertikaler Richtung Fangen wir mit der
Vertikalen an, geben Sie Null an. Wenn ich nach dem Einstellen dieser Datei diesen Code in
meinem Terminal ausführe ,
können Sie das Ergebnis sehen. Vertikal wird das Bild umgedreht. Jetzt werde ich dieses Bild
horizontal beleuchten. Ich bestehe einen. Wenn ich diese Datei eingerichtet habe und diesen Code ausführe, können Sie
jetzt sehen, wie
das Bild horizontal umgedreht wird. Im Grunde
spiegelt es das Bild wider. Sie können sehen, wie der Spiegel zurückgesetzt wurde. Und wenn Sie das Bild dafür in
beide Richtungen
drehen wollen , müssen
Sie minus eins durchgehen. Wenn ich diese Datei einstelle und
diesen Code ausführe , können Sie das Ergebnis
sehen. Jetzt können Sie sehen, wie das
Bild sowohl vertikal als auch horizontal umgedreht wird.
So funktioniert Flip. Als Nächstes werde ich diese Zeile
auskommentieren und dieses Mal werden
wir etwas
über das Zuschneiden lernen, wie wir ein Bild zuschneiden können Zuschneiden haben wir bereits
in unseren vorherigen Tutorials gelernt in unseren vorherigen Zunächst werde ich einen
Kommentar und Healt Cropping deklarieren. Dann deklariere ich eine Variable Crop, die dem Wert entspricht , dann müssen wir
diesen Quelltext ImageMG übergeben Dann biegen Sie die quadratische Aussparung wir müssen die Position,
den Punkt, den Startpunkt
und den
Endpunkt des Zuschnitts definieren den Punkt, den Startpunkt
und den
Endpunkt des Hier werde ich die
kleine
Schnitttechnik 200, kalt 400 bestehen kleine
Schnitttechnik 200, kalt 400 Dies ist der Startpunkt,
und für den Endpunkt werde
ich 300 400 überschreiten Das ist der Punkt, und
ich werde ihn zufrieden stellen. Nachdem wir diese Datei eingerichtet haben,
müssen wir dieses Bild anzeigen. Dafür müssen wir die
Image-Show-Funktion verwenden. Also kopiere ich diese Funktion und füge sie hier ein und
ersetze flip durch ra. Außerdem müssen wir
den Crop mit variabler Länge ersetzen und wir müssen diese Datei festlegen. Wenn ich nach dem Einstellen dieser Datei
diesen Code in meinem Terminal ausführe, können
Sie das Ergebnis sehen. Ups, es funktioniert nicht. Ich glaube, ich habe einen Fehler gemacht. Hoppla, wie du ein Komma benutzt hast. Wir müssen den Doppelpunkt Si verwenden. Danach
werde ich wieder diese Datei einrichten
und diesen Code ausführen. Wenn ich diesen Code ausführe,
können Sie das Ergebnis sehen. Das ist es, was es zurückgibt. Das ist das beschnittene Bild. Ich denke, das ist
genau diese Position. Wenn ich den
Erntewert um 50,
um 200 und 100 um 200 ändere . Dann stelle diese Datei ein und
führe diesen Code aus. Lass uns sehen. Das ist das Gebiet, das es zurückgegeben hat. Das haben wir bereits
in unseren vorherigen Tutorials gelernt. Das ist es also für dieses Tutorial. Im nächsten Tutorial werden
wir lernen, wie man
Contre Detection erkennt Danke, dass du dir dieses Video angesehen hast, Styune für das nächste Tutorial
10. Konturerkennung Opencv: Hallo, alle zusammen. Willkommen
zu einem anderen Video. In diesem Video
werden wir
darüber sprechen, wie wir Konturen
identifizieren können. Hinweise sind im Grunde genommen die
Grenze von Objekten. Es besteht aus Linien und Kurven. In einem einfachen Satz ist
Kontur der Umriss
oder die Form von etwas. Es ist vor allem eine Kurve,
ansonsten eine unregelmäßige Figur. Das Wort Kontur stammt von einem italienischen Wort,
das Kontur ist. Aber wenn ich von
mathematischen Gesichtspunkten spreche, sind
Schnitte und Kanten etwas
anderes eine sehr nützliche Sache wenn Sie sich mit Formanalysen befassen Es ist auch nützlich für die Erkennung
und Wiedererkennung. In diesem Tutorial möchte
ich Ihnen eine Vorstellung
von Konturen
vermitteln und wie wir sie in
offenem C verwenden können. Wie Sie sehen können, lesen wir hier eine Bilddatei und
dieses Bild mit der IMF-Funktion Wenn Sie diesen
Code in meinem Terminal lernen, können
Sie dieses Bild sehen. Es ist unser CAT-Image. Es ist das exakte CAT-Bild. Als Nächstes werde ich dieses
Bild in ein Graustufenbild umwandeln Dafür HemotypeGray. Grau entspricht CV-Punkt. Ich werde eine
Methode namens CVD-Farbe verwenden. C VT-Farbe innerhalb der runden RessSF. Wir müssen
das Quellbild übergeben , das ist Also um diese Variable zu übergeben. Dann werde ich CV Dot Color
verwenden. Lebenslauf farbig. Farbe und ich möchte
diese Farbe in BGR Grün umwandeln. Unterstreichen Sie BGR grau. Und dann müssen wir dieses Bild
anzeigen. Ich werde diese
Zeile kopieren und hier einfügen. Ich werde Tati Gray ersetzen. Außerdem müssen wir
den Variablennamen
Gray ersetzen . Ich möchte diese Datei einrichten. Wenn ich nach dem Einstellen dieser Datei
diesen Code in meinem Terminal eingegeben habe, können
Sie das Ergebnis sehen,
Sie können den Unterschied sehen. Das ist unser A-Bild
und das ist unser Graustufenbild Danach möchte ich mir
die Ränder dieses Bildes ansehen. Dafür werde ich den E-Kantendetektor
verwenden. Zuerst
deklariere ich eine Variable KE gleich C Punkt K. Dann übergebe ich innerhalb
der Runde gegen zuerst das Quellbild, das ING ist. Dann müssen Sie den
Schwellenwert von insgesamt zwei überschreiten. Und hier übergebe ich 125 Komma und der
zweite Wert ist 175 Dann werde ich dieses Bild
anzeigen. Ich werde diese Funktion, die
ich gerade zeige, kopieren und
hier einfügen und
Grau durch K ersetzen. Außerdem werde
ich
dieses tatsächliche farbige Bild auskommentieren. Ich möchte nicht, dass drei
Bilder auf meinem Display angezeigt werden. diese Datei verärgert, wenn ich
diesen Code in meinem Terminal ausführe Hier können Sie das Ergebnis sehen. Das ist das Graustufenbild
und das ist das
Kantenerkennungsbild Und jetzt möchte ich die
Konturen in diesem Bild finden. Also werden wir die
Konturmethode verwenden. Lass es mich dir zeigen. Also hier werde ich diese Methode und
diese Methode verwenden um im Grunde
Konturen und Hierarchien zu schreiben Also hier werde ich
Konturen eingeben, die zweite
Variable sind Hierarchien Also hier werde ich die
Methode Civ Dot Find Contu verwenden. Dann werde
ich im Inneren des runden Kleides
die Kanten so weit wie möglich kämmen Sie machen Bewegungen, in welchem
Modus sie die Konturen finden. Es könnte CivtrorCT sein. Lass mich dir Civ
Dot RetorScoett eins zeigen. Es gibt viele Touren. Wir haben den externen Modus Wenn ich dir jetzt die hintere,
externe COM-Liste,
FloODF zeige , würde ich gerne mit der Liste
gehen, weil sie die gesamte Kontur zurückgibt,
ohne Tree zu verwenden, ich würde
gerne die Liste Die nächste Methode, die
ich übergeben werde, ist
die Methode zur Konturannäherung. Also nach COVA werde ich
Cividt Chain Approach eingeben ,
nun, diesen Lassen Sie uns
diese Zeile nun noch einmal erklären. Hier können Sie sich die Einzelheiten des
Lebenslaufs ansehen. Diese Funktion ret leitet sich
von einem Binärbild ab, und Ki ist das Quellbild In welchem Bild
möchten Sie das Konducé erkennen. CVR least ist der Modus von Contu Retraable
und bei der nächsten Methode,
CV Dot Chain Approximant, werden
alle Punkte der Konturen gespeichert und die Hierarchie ist
die Variable Es enthielt Informationen über Bildtropolos und die Konturvariable ist
die Bildtropolos und die Konturvariable ist
die Liste aller Konturen. Sie speichert alle
Konturen, die wir in
diesem Bild finden, und jede Kontur
speichert einen Nampi an einem Punkt Wie ich dir schon gesagt habe, ist
Kontur eine Liste, und wenn du ausdrucken willst, wie viele Konturen wir in
diesem Bild finden, ja, das kannst du Sie müssen nur die
Druckfunktion verwenden, dann müssen
Sie in der runden Aussparung die Len-Funktion A und dann die
Len-Funktion A verwenden. Dann werde
ich in der runden Aussparung die Konturen passieren. Das hier, und ich werde
diese Datei einrichten. Wenn ich nach dem Setzen dieser Datei diesen Code in meinem Ravinal
ausführe, ist
dies das Ergebnis, das wir gefunden haben,
nämlich dass es im Grunde 359
Konturen zurückgegeben hat Und wenn Sie
das Rauschen der Konturen reduzieren möchten,
können Sie dieses Bild verwischen können Sie Lassen Sie uns also das graue Bild verwischen. Also hier werde ich
eine weitere variable Unschärfe erzeugen. Blur, tut mir leid, nicht blau. Unschärfe, entspricht
V-Punkt-Gaußscher Unschärfe. Dann müssen
wir in die runde Aussparung das
Quellbild einfügen, das grau Damit müssen wir den Werten
übergeben, wie viel Grau ich haben möchte. Nachdem wir das Quellbild übergeben haben, müssen wir
auch die K-Größe
definieren. Ich möchte Kernelgröße sagen. Dann müssen
wir innerhalb der Resis-Runde die Kernelgröße übergeben Also hier übergebe ich fünf CA Five. Dann müssen wir
einen anderen Wert übergeben, die Grenzzeit. Also gebe ich CV Punkt, Border ein und verwende hier die
Standardeinstellung, Border Deform Außerdem möchte ich dieses Unschärfebild
anzeigen. Also kopiere ich diese Funktion, ich zeige sie und
werde sie hier einfügen und Grau durch Unschärfe ersetzen Dann werde ich diese Datei einrichten. Wenn ich nach dem Einstellen dieser Datei
diesen Code in meinem Terminal ausführe ,
seht ihr das Ergebnis. Das ist das unscharfe Graubild, und das ist das Kyimage Als Nächstes werde ich
die Kanten dieses Bildes finden. Dafür müssen wir die
Variable und diesen Abschnitt übergeben. Hier, kann. Ich möchte zufrieden stellen. Ungefähr zufrieden. Wenn ich
diesen Code in meinem Terminal ausführe, gibt er Folgendes zurück Jetzt können Sie sehen, dass es insgesamt 23 Contu
zurückgibt. Es hat die Anzahl der
Konturen reduziert, weil Helden Längen verwenden. So können wir
Contu anhand eines Bildes finden. Es gibt eine andere Möglichkeit, Konturen aus einem Bild zu
finden Aber ich werde in diesem
Tutorial nicht darauf eingehen. Ich werde es
im nächsten Tutorial behandeln.
11. Konturerkennung Opencv Teil 2: Hey, schön euch wieder zu sehen, Leute. Dies ist der zweite
Teil dieses Tutorials. In diesem Abschnitt
werden wir sehen, wie wir verschiedene Methoden
verwenden können , um Leitungen zu finden Ohne den Canny
Edge Detector werden
wir Threshold verwenden Es ist eine weitere
Funktion von OpenCV. Also werde ich mich zunächst auf die Linse konzentrieren.
Ich brauche es nicht. Dann werde
ich da unten zuerst eine Variable deklarieren, mit. Außerdem werde ich Müll
deklarieren. Entspricht CV Punkt H. Dieser. Und es wird dieses graue Bild
aufnehmen. Also werde ich das in Grau
kopieren. Außerdem müssen wir den
Schwellenwert überschreiten. Den ersten Schwellenwert werde
ich 125 überschreiten und den zweiten
Schwellenwert werde ich 255 überschreiten. Mach dir
darüber keine Sorgen. In
unseren kommenden Tutorials werden wir
mehr über Threshold erfahren. Threshold
binarisiert das Bild grundsätzlich. Wenn die Intensität eines
Pixels unter 125 liegt, wird sie auf Null gesetzt Ich möchte sagen, dann
wird es auf Schwarz gesetzt. Und wenn die Bildintensität über 125
liegt, wird sie auf 255 eingestellt,
andernfalls auf weiße Farbe. Und bei unserer Methode für feine Konturen werden
wir
diese Thrash-Variable übergeben Müll. Nicht nur das, hier müssen
wir
einen weiteren Wert in der
Threshold-Funktion übergeben , nämlich den Schwellenwert t. Also das Pass-Komma,
und hier möchte ich CV mit den Punkten BinArt eins
verbinden Stellen Sie nun diese Datei ein
und führen Sie den Code in einem Terminal aus, um zu sehen, wie
viele Konturen zurückgegeben Um den Code auszuführen, geben Sie,
wie Sie sehen können, vollständig 1073 Contoure zurück Lassen Sie uns nun das
Thrash-Bild anzeigen, nicht das Graubild. Also kopiere ich diese Zeile und
kommentiere sie aus und rufe die OnshoFunction und ersetze Auch hier werde
ich diese Datei einrichten und den Code in meinem Terminal ausführen Bis zum Ausführen des Codes
in meinem Terminal ist
dies das Ergebnis, das wir farmen. Dies ist das Ergebnis, das es zurückgibt. Das ist das
Schwarz-Weiß-Bild. Nein, es ist das Binärbild und es besteht aus
schwarzen und weißen Punkten. Mach dir darüber keine Sorgen.
Wir werden in unserem Abschnitt für Fortgeschrittene
darüber sprechen. Nur eine Sache, an die Sie sich erinnern
müssen: Er wird das Bild grundsätzlich
binarisieren Es ist die binäre
Form eines Bildes. Null steht für diese Farbe und
255 steht für weiße Farbe. Lassen Sie mich Ihnen jetzt eine Sache zeigen. Zuerst werde ich
Num Pi importieren. Meine Zeit, ich importiere Num Pi als NP. Abgesehen von diesen werde
ich
eine leere Variable erstellen, der
B Blan entspricht, und hier rufe ich die
Funktion von NumpInp Punkt Os auf Dann nehme
ich in der runden Aussparung die
Bildform, diese variable Form Also hier werde ich
meinen Punkt Shae eingeben. Dann innerhalb des quadratischen
Widerstandspolons Zwei nehme
ich
all das zu V.
Als Nächstes müssen wir
den Datentyp B, Typ, übergeben,
und hier innerhalb
dieses einfachen Anführungszeichens Als Nächstes müssen wir
den Datentyp B, Typ, übergeben, und hier innerhalb
dieses einfachen Anführungszeichens übergebe
ich UI NT, H. Und dann werde ich dieses Bankbild mit
der Image-Show-Funktion anzeigen Ich kopiere diese Zeile
und füge sie hier ein. Und zerreiße dieses Bild mit Leerzeichen. Ich werde diese
Datei einrichten. Diese Datei einrichten. Wenn ich diesen Code
in meinem Terminal ausführe, können
Sie das Ergebnis sehen. Dies ist das leere
Bild, das wir erstellen. Dies ist die genaue Größe
dieses CAT-Bildes. Nun stellt sich die Frage, zu
welchem Zweck wir
dieses leere Bild erstellen. Denn in diesem leeren Bild werde
ich zeichnen oder nachzeichnen. Ich werde diese
Kontur in diesem leeren Bild erstellen. Deshalb erstelle ich
dieses leere Bild. Und um die Konturen zu zeichnen, müssen
wir eine Funktion namens
Draw Contube verwenden , also geben
Sie V-Punkt ein, zeichnen Sie diesen Punkt , und innerhalb des runden Kleides müssen wir
zuerst das leere
Bild übergeben Geben Sie also Schwarz ein. Als Nächstes müssen wir
die Konturliste übergeben. Diese Variable. Wie ich dir schon sagte, ist
diese Kontur eine Liste. Ich speichere alle Kontroll-WS. Also, um die Contra-Konturen zu bestehen. Als Nächstes müssen wir den
Konturindex übergeben. Ich möchte sagen, wie viele
Conti Sie übergeben möchten, und ich will alle Op. also werde ich Native One bestehen Als Nächstes müssen wir die Farbe
angeben, und wir müssen die
Farbe im Bizer-Format bereitstellen. Also möchte ich rote Farbe.
00 Komma 255 Außerdem müssen wir
die Dicke passieren und ich möchte Dicke zwei passieren Und jetzt müssen wir
dieses leere Bild entfernen. Um diese Zeile zu kopieren, bin
ich mir sicher und werde
sie hier einfügen. Außerdem kommentiere ich die vorherige Zeile. Ich
brauche es jetzt nicht. Und ich werde diese Datei einrichten. Nachdem ich diese Datei eingerichtet habe, lassen Sie uns den Code in unserem Terminal
ausführen. A Ich führe den Code in meinem
Terminal aus und funktioniert nicht richtig. Ich glaube, mein Code enthält einen
Fehler. Ich glaube, ich habe einige Fehler gemacht, also lass es uns überprüfen. Hier, dieser hier, ich brauche
diese Schneidetechnik nicht. Ich möchte nur die
Bildpunktform verwenden. Es wird
den Bildformbereich erfassen. Lassen Sie uns also die
Datei einrichten und erneut ausführen. Bis zur Ausführung dieses Codes,
wie Sie sehen können, hat er Folgendes zurückgegeben Es hat das Katzenbild zurückgegeben. Im Grunde zeichnen wir hier anhand
der Leitungspunkte
ein neues Bild Zuerst nehmen wir ein leeres Bild, dann verwenden wir die Konduktionspunkte
aus dem Dreschwortbild und wenden sie auf das leere Bild an.
Es ist nicht dasselbe vom Schwellenbild aus, Gehen Sie vom Schwellenbild aus, um die Kanten
zu erfassen. Anhand dieser Kanten zeichnen
wir ein Bild
auf unsere leere Seite. Wenn ich die Dicke verringere, finde
ich, dass es
hübscher aussieht. Lass uns sehen Ich reduziere
die Dicke auf
2:1 und lasse es wieder abkühlen. Ja, die Nerven sehen ziemlich klar aus. Sie können auch ein anderes Ergebnis erzielen wenn Sie den
Schwellenwert ändern. Angenommen, ich reduziere den
Schwellenwert 255-175, dann wird
ein anderes Ergebnis zurückgegeben Mach dir keine Sorgen. erfahren unserem
kommenden Tutorial werden wir mehr über
Schwellenwerte Also danke, dass du
dir dieses Video angesehen hast, Statute für das nächste Tutorial Im nächsten Tutorial werden
wir über
Farbräume sprechen
12. Farbräume: Hallo Leute, schön,
dass ihr wieder da seid. Ich bin wieder mit einem weiteren Tutorial zum
Thema Open CV zurück. Und in diesem Tutorial lernen
wir Farbräume kennen. Farbräume sind im Grunde genommen
Farbräume. RGB ist ein Farbraum, Graustufen ist ein Farbraum. Wir haben auch verschiedene
Farbräume wie HSV, AAD und Mini Beginnen wir nun damit, das
Bild mit Graustufen zu konvertieren Also werden wir das
GR-Bild in ein Graustufenbild konvertieren. Wie Sie wissen, ist Bier der
Standardfarbmodus in Open C. Dafür
deklariere ich eine Variable Grau,
Grau entspricht dem zugewiesenen CVI-Punkt Ich verwende eine Methode
namens CVD-Farbe, CVT-Farbe Dann müssen
wir innerhalb der Runden zuerst das
Quellbild übergeben, das IMG ist, dann müssen wir die Farbe übergeben Farbe senden. Unterstreichen Sie, und ich
möchte BGR in Grau umwandeln, und ich werde
diese Datei
unterschreiben Dann werde ich
dieses Bild mit der Imho-Methode anzeigen. Hier fest, Cm Dot, IMO. In der runden Klammer gebe
ich zuerst den Namen des
Fensters weiter, der grau ist Als Nächstes müssen wir
das Quellbild übergeben,
das grau variabel ist Und ich möchte diese
Datei einrichten. Wenn ich nach dem Einrichten dieser Datei diesen Code
in meinem Terminal ausführe, ist dies,
wie Sie sehen können unser Originalbild und dies
ist unser Graustufenbild Hier konvertieren wir ein BGR-Bild
in ein Graustufenbild. Jetzt werde ich
BGR in das HSV-Format konvertieren. HSV steht für Hue Saturation W. Zuerst gebe ich ein Coman
BGR HSVT ein , wende die HSV-Farbe
an und möchte das gleiche Codo Zuerst gebe ich ein Coman
BGR HSVT ein, wende die HSV-Farbe
an und möchte das gleiche Codo kopieren. Und ich habe es hier aufgebaut. Zuerst werde ich
den Variablennamen Grad
zwei HSv ändern zwei HSv Dann werde ich Bijiac auf
HSV umstellen. Dieser. Außerdem werde
ich den Fensternamen ändern, Grau
durch HSV
und variable Länge ersetzen Ich möchte zufrieden stellen. Wenn ich diesen Code nach Satisfy
in meinem Terminal ausgeführt habe, wollen wir sehen, was er zurückgibt. Dies ist der
GSv-Farbmodus dieses Bildes. Lassen Sie uns nun über
eine andere Art von
Farbraum sprechen , nämlich AAB Hier gebe ich einen weiteren
einzigen Befehl ein, den Hashtag. Dieses Mal werde ich VGR in LAB
konvertieren. Also noch einmal, ich werde
diesen Abschnitt kopieren und hier einfügen, und dieses Mal werde
ich HSB in AB ändern Außerdem werde ich
den Farbcode ändern, jia zu LAB. Dann müssen wir
den Fensternamen
LAB ändern , um auch
die variable Länge zu ändern. Wenn ich nach dem Einrichten dieser Datei
diesen Code in meinem Terminal ausführe, wollen wir sehen, was er zurückgibt. Dies ist der
LAV-Farbmodus dieses Bildes. So langsam ist es. Wie Sie wissen, verwendet
OpenCV standardmäßig das gR-Format. Außerhalb von OpenC verwenden
wir jedoch das RGB-Format, das
dem BGR entgegengesetzt ist Es ist ein inverser
Farbmodus des BGR-Formats. Jetzt möchte ich dieses
Bild im RGB-Modus öffnen. Ich werde dieses Bild
außerhalb des geöffneten C öffnen. Zuerst
kommentiere ich die Zeilen, dann
importiere ich Moni mat leave,
some type, import, Mt leave Dieses hier nennt er eine bestimmte
Funktion, Pi-Plot, ein Diagramm. Wenn Sie dieses
Modul nicht in Ihrem System installieren, öffnen
Sie einfach Ihr
Windows Power Shin und binden Sie PIP install Matt
Blot und klicken Es wird
es in Ihrem System installieren. Ich habe es bereits installiert, also werde ich es
nicht installieren E.
Also verrückt nach Blot Leap, lies das Bild in AGM Aber haben wir
dieses Bild mit Open C geöffnet? Ich habe das Bild in BGM gelesen Lassen Sie uns dieses Bild
mit Mt Blot Leap öffnen. Er tippt PLT, Punkt, ich würde die
IMS-Funktion ausführen, ich bin Dann übergebe
ich in den Runres das Quellbild IMG,
image, this Dann werde ich dieses Bild mit der
PLT-Punkt-Funktion
anzeigen PLT-Punkt-Funktion Lassen Sie uns den
Code zertifizieren und in unserem Terminal ausführen. Erscheint auf diesem Code
in unserem Terminal, dies ist der BGIR-Modus
dieses Bildes und dies ist der
RGB-Modus dieses Bildes Grundsätzlich wird die
entgegengesetzte Farbe dieses
Originalbildes angewendet dieses
Originalbildes Das ist BigImage und
das ist ein RGB-Bild. Öffne dieses Bild
im Bizer-Modus und
standardmäßig Mtlot, also das Bild im RGB-Modus standardmäßig Mtlot, also Deshalb
denkt Matt Plotly, dass es sich um eine RGB-Farbe handelt. Deshalb können wir die
entgegengesetzte Version dieser Farbe sehen. Lass mich dir jetzt etwas zeigen. Ich werde dieses Fenster löschen und beide Zeilen auskommentieren. Lass mich dir etwas zeigen. Ich kommentiere sowohl diese
Zeile als auch dieses Mal werde
ich
BGA in RGB-Farbe umwandeln Hier Art des Kommentars
BGR zwei RGB. Also werde ich zuerst eine Variable RGB
deklarieren, die der CVD-Punkt-CVD-Farbe und der CVT-Farbe entspricht CVD-Punkt-CVD-Farbe und der CVT-Farbe Dann ist die
runde Auflösung Bild IMG, Komma VT-Farbe Unterstrich. Diesmal möchte ich BGR
in RGB konvertieren. Dieser. Dann werde
ich dieses Bild anzeigen. Hämatyp-Lebenslauf, den ich zeige. Ist die Rundung zuerst, müssen
wir
den Anzeigenamen, der RGB ist,
übergeben , dann müssen wir den Variablennamen RGB
übergeben .
Das ist es. Lassen Sie uns nun den Code ausführen
und sehen, was er zurückgibt. diesen Code ausführen, können
Sie auch sehen, dass er als
RGB-Version dieses Bildes geschrieben wurde. Es sieht jetzt
ziemlich ähnlich aus wie
Matt, weil wir hier VGA
in ein RGB-Bild konvertieren. Aber wenn ich das in Code ausführe, Code
kopiere und es dort einfüge das in den Code
kopiere und es dort einfüge und beide Zeilen
auskommentiere
und auskommentiere, und diesmal als Variable, werde
ich RGB und
nicht Bild übergeben und diese Datei einrichten
und diesen Code erneut ausführen Jetzt können Sie feststellen, dass
Metap dieses Mal das
eigentliche Originalbild zurückgibt, was
bei Cat Window ähnlich ist Das ist unser originales BGR-Bild. Jetzt sehen unser RGB-Bild
und unser BGR-Bild
gleich aus , weil wir das
BGR-Bild mit OpenCem in ein
RGB-Bild konvertieren BGR-Bild mit OpenCem in ein
RGB-Bild Dann übergebe ich dieses Bild im
Bild an die Funktion
mit Matplot Leave Deshalb hat es dieses Ergebnis
zurückgegeben. Nur eine Sache, an die Sie sich erinnern
müssen: Der Standardfarbcode von Met Plot Leave ist RGB und der
Standardfarbcode von OpenCV ist GR Jetzt können Sie sehen, wie Harry Bzierimage in Graustufen,
Bzierimage in HSV und
Bier-Bild in LAB konvertiert Bier-Bild in LAB Aber Open C hat auch einen Nachteil. Sie können Graustufenbilder nicht
in HSV umwandeln. Außerdem können Sie
HSV nicht direkt in LAB konvertieren. Wenn Sie das tun möchten, müssen
Sie zuerst das Festplatten-Image in BGR konvertieren,
dann können Sie das BGR-Image in
HSV ändern Ich werde
HSV in ein BGR-Bild konvertieren. Hier ist type single und command
und ich tippe dieses Mal
werde ich H a in BGR konvertieren. Und zuerst
werde ich einen
variablen HHV-Unterstrich, GR, deklarieren variablen HHV-Unterstrich Diese sind variabel und
dieses Mal werde ich
C dot, CVT color ausführen C dot, CVT Fügen Sie diese Funktion ein, ich
übergebe zuerst das
Quellbild, das HSV ist Ich werde diesen Abschnitt auskommentieren
. Und dieses Mal werde ich den HSV
überholen, dieses Mal. Als Nächstes übergebe ich die Farbe,
das ist CV-Punkt, Farbe, Unterstrich und dieses Mal werde
ich
Hs V in BGR umwandeln , dieses Mal
zeige ich dieses Bild an Geben Sie also cv dot No
in die Run-Verse ein, innerhalb der einzelnen Codes.
Zuerst gebe ich
einen Namen an, der HSV zu BGR ist Dann werde ich die Variable
angeben. Bevor ich diese
Datei einstelle, führe
ich diesen Code aus, ich werde
alle Bildfunktionen auskommentieren. Ich möchte das Original zeigen. Außerdem weiß ich nicht, was ich diesen zeigen
soll. Ich habe auch
diese beiden Zeilen herausgefunden. Überarbeiten Sie diese Datei, lassen Sie uns den Code
untersuchen und sehen,
was er Wenn Sie diese Datei weiter oben sehen,
können Sie das Ergebnis sehen. Das ist unser Originalbild, und das ist unsere Videoaufnahme von
HSV Two Lassen Sie
mich Ihnen zum besseren Verständnis das HSV-Bild zeigen. Wenn ich das HSE-Bild zeige, werde ich diese Datei zeigen Nachdem ich diesen
Code ausgeführt habe, ist
dies, wie Sie sehen können , das ursprüngliche
Katzenbild, ich brauche es nicht. Dies ist die
HSV-Version dieser Farbe, und wir konvertieren das HSV-Bild
in BjerImageEGY Wir können das
HSV-Bild jedoch nicht direkt in ein Graustufenbild konvertieren HSV-Bild Das ist es also für dieses Tutorial. In diesem Tutorial
habe ich versucht,
einige kleine Farbräume in
OpenCV zu behandeln einige kleine Farbräume in
OpenCV Also danke, dass du dir dieses Video Stune für
das
13. Farbkanäle: Hallo, Leute.
Schön, dich wieder zu sehen. Ich bin wieder mit
einem weiteren Tutorial zurück .
Real Tate O Pensimi Und in diesem Tutorial werden
wir
Farbkanäle lernen In diesem Tutorial werden wir
insbesondere
lernen, wie wir Farbkanäle
teilen können, und wir werden
auch lernen, wie wir Farbkanäle zusammenführen können Ein Farbbild
besteht grundsätzlich aus mehreren Kanälen, Rot, Blau und Grün Alle Bilder, die Sie auf
einem digitalen Medium sehen , bestehen aus
drei Farbkanälen:
Rot, Blau und Grün. Bilder werden also mit dem
dreifarbigen Kanal erstellt, und OpenCV ermöglicht es uns, die
Farbkanäle zu teilen Wie Sie in meinem
aktuellen Arbeitsverzeichnis sehen können, haben
wir ein Bild, PIC Wenn wir dieses Bild öffnen, müssen
wir,
wie Sie sehen, drei subtile Operationen durchführen, drei Operationen mit drei
verschiedenen Farben, rot,
grün, blau. Dies ist ein einzelnes Bild, und OpenCV kann die
drei Farbkanäle
Blau, Grün Das werden wir
also in diesem Video machen. Außerdem werden wir
dieses Bild verwenden
und dieses Bild in
drei Farbkanäle aufteilen Also für die drei Farbkanäle nehme
ich
drei Variablen, B,
G, R gleich, ich werde
die Geschwindigkeit der Farbkanäle Dafür gebe
ich Cv dot ein, ich führe Spit Function,
Cv Dot, Spit Function , Speed Und in der Runde drücke ich das Bild IMG weiter Diese
Split-Funktion teilt
das Bild in blaue,
grüne und rote Farben auf. Beenden Sie jedoch zunächst die Konvertierung dieses Bildes in
das Graustufenbild Und wenn Sie dieses
Bild dafür in einem Fenster anzeigen möchten, verwende
ich die Funktion Image Show,
also geben
Sie cv dot IM Dann drückt die Runde zuerst, wir müssen einen Fensternamen Zuerst möchte ich die blaue Farbe
anzeigen, also möchte ich
Fenstername blau eingeben. C, dann übergebe ich
die variable Länge B. Dann beginne ich mit
dieser Zeile zwei t. Als Nächstes möchte
ich die grüne Farbe anzeigen, und für die grüne Farbe werde
ich die Variable G übergeben, und die letzte ist für rote
Farbe für die rote Farbe, ich werde die Variable R übergeben. Ich werde ersticken. Bevor ich dieses Zitat
durchführe, lassen Sie mich
Ihnen etwas sagen Im Grunde wird diese
Funktion dieses Griskal-Bild
konvertieren Je nach
Farbkanalwert können
wir dann den dunklen und
hellen Teil sehen. Lass es mich dir zeigen. Wenn ich nach dem Einrichten dieser Datei
diesen Code in meinem Terminal ausführe, können Sie
hier Three Razor sehen Jetzt sieht es ziemlich verwirrend aus. Das ist das Originalbild. Wie Sie auf
dem Originalbild sehen können, können
wir drei der
Farben Rot, Grün und Blau sehen. Aber wenn ich Ihnen
das blaue Fenster zeige, können Sie
hier sehen, dass aus blauer
Farbe jetzt weiße Farbe wird. Jetzt können Sie feststellen, dass
das blaue Fenster und die blauen Kreise weiß
werden. Jetzt haben Sie vielleicht herausgefunden,
warum es weiß geworden ist und die anderen beiden
Farben schwarz geworden sind Wie ich dir schon gesagt habe, als Opensi die blaue Farbe
auf dem Bild
gefunden hat, hat
es die
Intensität dieser Farbe erhöht Und wie ich dir schon sagte, die SI-Funktion wandelt das Bild
in ein Graustufenbild Und immer wenn wir in
diesem Graustufenbild einen
blauen Farbkanal verwenden, wird er erhöht und
die blaue Farbe mit weißer Farbe dargestellt die blaue Farbe mit weißer Farbe Und wie Sie sehen können,
ist dies genau die blaue Farbe. Deshalb wird es weiß
, genau weiß. OpenSNI hat auf diesem Bild keine
blaue Farbe gefunden. Ich habe im grünen Farbkreis keine blaue
Farbe gefunden. Außerdem hast du die blaue
Farbe am roten Farbkreis nicht gefunden. Deshalb ist es schwarz geworden. Auf die gleiche Weise, wenn wir den roten Farbkanal
laufen lassen ,
wird die rote Farbe
diesmal weiß. Wie Sie sehen können, aus einem
roten Kreis ein
weißer Kreis, weil er
diesmal
die rote Farbe hat und die Intensität
dieses Kreises
erhöht. Auf die gleiche Weise funktionieren
grüne Kanäle. Diesmal erhöht es die
grüne Farbintensität. Sie können das gleiche Experiment
mit jedem farbenfrohen Bild durchführen. Aber der Einfachheit halber und
um zu verstehen, wie es funktioniert, verwenden
wir diesen Kreis, drei verschiedene Farbkreise:
Rot, Grün und Blau. Und dann Rillenkreis, es ist keine grüne Farbe verfügbar. Deshalb wird es
schwarz gefärbt. Wenn in diesem Teil
ein Anteil der grünen Farbe verfügbar ist, wird er etwas heller. Und denken Sie daran, dass das Originalbild über einen
dreifarbigen Kanal verfügt und das Radiofenster
mit grünem
Fenster und das blaue Fenster über keinen Farbkanal verfügen .
Lass mich dir das beweisen. Wenn ich dieses Fenster lösche
und die Form ausdrucke, zeige ich Ihnen, wie
Sie in das runde SS tippen.
Ich gebe Bild,
Bild, variable Form ein. Ich hole mir diese Zeile. Und dieses Mal
möchte ich einen
der Farbkanäle
niedrig drucken , nehmen wir an, Grau. Ich binde G. Wenn ich diese Datei setze
und diesen Code auf A ausführe, können Sie
jetzt in meinem Terminal sehen, können Sie
jetzt in meinem Terminal sehen, dass wir
zuerst die Dimension 300 mal 500
drucken und dann den Farbkanal drucken. In unserem ersten Bild, ich
möchte sagen, dem Originalbild, müssen
wir
drei Farbkanäle zeichnen. Aber im nächsten Bild, bei dem es sich um ein grünes Fenster handelt, haben
wir keinen Farbkanal. Standardmäßig können wir es
einen Farbkanalwert nennen, aber im Grunde sind Schwarz und
Weiß keine Farben. Grundsätzlich
stehen Schwarz und Weiß in diesem
Fenster für die jeweilige
Farbintensität. Und jetzt werde ich beide Zeilen
auskommentieren und
diese drei Bilder zusammenführen. Aber bevor ich
diese Zeile
auskommentiere , das Originalbild. Ich möchte nicht in dieses Fenster, und um das Bild mit den drei
Kurvenkanälen zusammenzuführen, verwende
ich die Zusammenführungsfunktion. Zuerst werde ich eine Variable
deklarieren und unser Variablenname ist merge. Merge entspricht Is
the rundet Hem, um eine
Funktion namens Marge Manchmal werden V-Punkte zusammengeführt. Ist das runde Messing in den eckigen Kleidern, werde
ich weitergeben Ich übergebe eine Liste mit
drei Con-Kanälen, B, G. R. Und dann werde
ich diese Variable anzeigen Auch dafür müssen
wir die CIVET IMF-Funktion ausführen. In der Roundress wird zuerst der
Fenstername übergeben, der dann zusammengeführt wird Kopiere die Variable. Dies ist das zusammengeführte Fenster und ich
werde das Koma übergeben, und ich werde
die Variable zusammengeführt übergeben. Und ich werde diese
Datei einrichten. Nachdem ich diese Datei eingestellt hatte, wurde sie
zunächst für dieses Fenster mit
drei Farbkanälen verwendet. Dann ging es um
das zusammengeführte Fenster. Lass es mich dir zeigen.
Nachdem Sie den Code ausgeführt haben, können Sie sehen, dass er zuerst gedruckt wird. Zuerst wurde
der blaue Kanal angezeigt, dann rot, dann grün. Und endlich wird
der zusammengeführte Farbkanal angezeigt. Und nach dem Zusammenführen des
dreifarbigen Kanals wird
wieder
ein farbenfrohes Bild zurückgegeben. Das ist also für dieses Tutorial. Im nächsten Tutorial
werden wir etwas über Unschärfe lernen Also danke, dass du
dir dieses
Videostadion für das nächste Tutorial
14. Weichzeichnen: Hallo Leute, schön,
dass ihr wieder da seid. Ich bin wieder
mit einem weiteren Tutorial Open C zurück. Und
in diesem Tutorial werden
wir Blut lernen. Wir werden
verschiedene Methoden des Weichzeichnens erlernen. Im Allgemeinen glätten und verwischen wir
das Bild, wenn wir
Rauschen in unserem Bild haben, und wenn wir etwas Unschärfe anwenden, können
wir das Rauschen reduzieren In unseren vorherigen Tutorials haben wir bereits etwas
über Gaußsche Unschärfe gelernt, die beliebteste Methode zum Ohne Versionsunschärfe
gibt es viele Techniken zum Weichzeichnen, und wir werden Aber bevor
wir mit der Praxis beginnen, müssen
wir etwas verstehen Wir müssen verstehen,
was verschwommen ist. Wie Unschärfen eigentlich funktionieren. Hier werde ich ein Bild öffnen. Das ist unser Bild. Was genau passiert, wenn wir Unschärfe anwenden Zuerst müssen wir
etwas definieren, das Kernel genannt wird. Andernfalls können Sie es Indo nennen. Also hier an dieser Position werde
ich ein Fenster zeichnen Nehmen wir an, das ist unsere Fenstergröße. Hier zeichnen wir an einer
bestimmten Position ein Fenster über das Bild. Wie Sie sehen können, hat dieses
Fenster eine Größe, als Kernelgröße bezeichnet wird. Und die Kernelgröße
ist im Grunde die Anzahl der Zeilen und die Anzahl der Spalten. Hier werde ich
drei Reihen zeichnen und ich werde
auch drei Spalten zeichnen. Kerzen, die aus Reihen
und Spalten oder Pixeln bestehen. Das sind alles Pixel. Hier haben wir also insgesamt drei
Spalten und drei Zeilen, also
ist die Kernelgröße drei mal drei. Was ist im Wesentlichen passiert? Wir haben mehrere
Methoden, um Unschärfe anzuwenden. Unschärfe wurde auf
dieses mittlere Pixel angewendet, und dieses Pixel wird angewendet, um gerundete
Pixel zu erhalten Dabei wird das
Ergebnis der umgebenden Pixel auf das mittlere Pixel angewendet. Lassen Sie uns die erste Methode
der Unschärfe besprechen , nämlich die Mittelwertbildung Kommen wir zu den
Benutzern Ihres Codes. Und hier gebe ich einen einzeiligen Befehl hasta und ich gebe
Average Jetzt stellt sich die Frage, wie die
Durchschnittsunschärfe funktioniert. Wenn ich dieses Bild
noch einmal öffne, wie ich dir schon gesagt habe, wende b immer auf
das mittlere Pixel an und die Durchschnittsunschärfe funktioniert entsprechend dem Durchschnitt
der umgebenden der Nehmen wir an, dieser
Pixelintensitätswert ist zwei. Dieser ist fünf. Dieser ist sieben.
Dieser ist drei. Dieser ist vier. Dieser ist wieder zwei. Dieser ist acht, und dieser ist neun. Wie Sie, liegt die mittlere
Pixelintensität bei vier. Jetzt wird es den
gesamten
Pixelintensitätswert extrahieren und
diesen Wert anwenden und diesen
Wert auf das mittlere Pixel anwenden. So funktioniert die Mittelwertbildung. Im Grunde
möchten Sie sagen, dass der Durchschnitt der umgebenden Pixel auf das mittlere Pixel
angewendet wird Lassen Sie uns die
Benutzer zu Ihrem Code zurückführen. Um die Unschärfe anzuwenden, deklariere
ich zunächst eine Variable und unsere Variable ist durchschnittlich Der Durchschnitt entspricht der CV
Dot Blur-Methode. Dann müssen
wir statt des Run-Passes zuerst die Quelle übergeben, das Quellbild, also ING Und dann müssen wir die Kernelgröße
definieren. Und für die Kernelgröße nehme
ich drei
Spalten und drei Zeilen. Und wir können dieses
Bild in unserem Fenster anzeigen, also führe ich CV dot If Mthood innerhalb der Roundre
innerhalb des einzelnen Codes aus.
Zuerst gebe ich einen
Fensternamen an
, Zuerst gebe ich einen
Fensternamen an der Durchschnitt,
Komma ist , und dann übergebe
ich die Variable,
die ebenfalls avg ist Wenn ich diese Datei ansehe und
diesen Code in meinem Terminal ausführe, wie Sie sehen können, wäre das
beides Dies ist das ursprüngliche Katzenbild, und dies ist das
durchschnittliche unscharfe Bild Wenn ich es Seite an Seite öffne, siehst
du den
kleinen Unterschied Es sieht ziemlich scharf aus, aber dieses Bild ist nicht scharf weil wir hier durchschnittliche Unschärfe
anwenden Und wenn Sie die Intensität
der Unschärfe erhöhen möchten,
dann nur, um einen
höheren Kernelwert zu übergeben Lass es mich zeigen. Also ohne die Kernelgröße drei mal drei zu verwenden
, bin
ich hier, um sieben mal
sieben zu übergeben , diese Datei einzustellen
und diesen Code erneut auszuführen. Bevor Sie diesen Code ausführen, können Sie den Unterschied
verstehen. Um den Kernel-Wert zu erhöhen, erhöht
es auch die
Unschärfe dieses Bildes Wenden wir nun eine weitere
Unschärfe an, nämlich Gasianblur. Löschen Sie beide Fenster und
geben Sie hier geben Um Gersionblur anzuwenden, deklarieren Sie bitte
eine weitere Variable, die dem Wert Cm dot Gersion entspricht. die dem Wert Cm dot Gersion entspricht. die Runde drückt, übergeben wir
zuerst
das Quellbild,
das ING ist, dann müssen
wir
die Kernelgröße angeben und hier
werde ich sieben Casern anwenden Auch um Sigma X zu bestehen wird
es für
X-Diktatabweichungen verwendet Moment setze ich
den Wert Null
und
zeige dieses Bild in
einem Fenster, und
zeige dieses Bild also kopiere ich das Bild aus
Methode und füge es hier Methode und Ich werde
Average in Gertian umbenennen. Ändern Sie auch den
Variablennamen GUS. Wenn ich diese Datei einstelle und
diesen Code in meinem Terminal ausführe, können Sie
jetzt
beide Blut vergleichen. Das ist durchschnittliche Unschärfe
und das ist Gasienbld. Aber Sie können hier feststellen, dass wir sieben mal sieben
dieselbe Kernelgröße verwenden dieselbe Kernelgröße Aber im Durchschnitt wurde mehr Blut
aufgetragen, aber bei Gasian
sieht es wie natürliches Blut Deshalb verwenden wir
die meiste Zeit Gersienbl, weil es Dann werden wir noch ein Blut auftragen
. Lass es mich zeigen. Oder der nächste Name ist Median Blood. Der Hämatyp ist einfach und der Blutmittelwert ist
normal. Dann gibt Hembo einen Medianwert an. Median entspricht dem
C-Punkt-Medianwert des Blutes. Dann stellen Sie die ersten
Runden L ein, um das
Quellbild zu passieren, das IMG ist Anstatt die
volle Kernelgröße zu übergeben, wird
hier eine Ganzzahl übergeben. Nehmen wir an, ich werde drei bestehen. nun C öffnen, können wir davon ausgehen , dass die Kernelgröße drei mal drei
ist. Lassen Sie uns nun das
Bild in einem Fenster anzeigen, also
kopiere ich den
Imro-Map-Hood und füge
ihn hier Zuerst werde ich den Fensternamen
ersetzen. Ich werde es auf Median setzen. Außerdem werde ich
die variable Länge ersetzen. Medium, stelle diese Datei ein. Wenn ich nach dem Einrichten dieser Datei
diesen Code in meinem Terminal ausführe, können Sie
jetzt
beide Unschärfen vergleichen Das ist das normale Bild. Das ist die mittlere Unschärfe, und das ist die Gasionunschärfe
und das ist die durchschnittliche Unschärfe Vielleicht kannst du
die Unschärfe nicht verstehen, wenn ich den Wert erhöhe
, lass es mich Ich werde das ganze Fenster bearbeiten
und den Wert für die Kernelgröße erhöhen Ich mache neun daraus und setze dann diese Datei erneut
und führe diesen Code erneut aus. Jetzt können Sie den
mittleren Unschärfeeffekt sehen. Wenn Sie den Weichzeichnungseffekt
mit anderen Unschärfeeffekten vergleichen, sieht
er wie Öl t aus. Wenden wir
nun den ersten Unschärfeeffekt an, bei
dem es sich um bilaterale Unschärfe sieht
er wie Öl t aus. Wenden wir
nun den ersten Unschärfeeffekt an, bei
dem es sich um bilaterale Unschärfe handelt. Also hier werde
ich eine Single
und einen Kommentar erstellen und Bilaterale Unschärfe. Bilaterale Unschärfe ist keine Unschärfe.
Es ist ein Filter Es ist hochwirksam bei der Geräuschreduzierung und
hält gleichzeitig die Kanten scharf. Dieser Vorgang ist jedoch langsamer als im Vergleich
zu anderen Filtern. Mit bilateraler Unschärfe können
Sie Ihr Bild erstellen. Sie können auch
die Schärfe der Kanten beibehalten. Hier deklariere ich eine
Variable namens bilateral, also kopiere ich diesen Namen und deklariere
eine Variable bilateral gleich Here, die
als bilateraler Filter bezeichnet wird Irgendein Typ CV Dot
Bilateraler Fitter. Dann sagen Sie RunDressSF, wir müssen das
Quellbild übergeben, das die IMG-Variable ist, dann müssen wir das dilaterale
Bild
übergeben und ich werde den Wert fünf
setzen Als Nächstes müssen wir
diese Sigma-Farbe übergeben. Ich stelle es jetzt auf 154. Beim nächsten Wert müssen wir
den Sigma-Raum übergeben. Außerdem werde ich es bestehen und ich möchte es
auch auf 15 setzen. Lassen Sie uns nun das Bild anzeigen. Ich kopiere das Eisen von Math Wood und füge
es hier ein. Zuerst
ersetze ich den Fensternamen
Blteral, dann
füge ich den sehr guten Namen Blteral ein. Ich werde
diese Nachdem ich diese Datei eingerichtet habe und
diesen Code in meinem Terminal eingegeben habe, können Sie
hier Das ist BilteralBLA. Ich denke, es ist unserem Genom ziemlich
ähnlich. Erhöhen wir den
Wert und machen wir neun draus. Außerdem werde ich
den Sigma-Werten 75 und 75 mitteilen. nach dem Einstellen dieser Datei Wenn ich nach dem Einstellen dieser Datei die Punktzahl
in meinem Terminal habe, wollen wir
jetzt sehen, was sie geschrieben hat Jetzt können Sie es
mit dem Originalbild vergleichen. So funktionieren bilaterale
Filter. Dies ist das Originalbild, und dies ist die
bilaterale Filter-Unschärfe. Das sind also die vier Arten von Unschärfen, die wir in OpenCV anwenden können Ich hoffe, Ihnen ist jetzt
klar, wie wir verschiedene
Unschärfen in Open CV anwenden können Also danke, dass du dir
dieses Video Studio für das nächste Tutorial
15. BITWISE-Operationen: Hallo Leute. Schön
dich wieder zu sehen. Ich bin wieder mit einem
neuen Tutorial zu OpenCV zurück. Und in diesem Tutorial werden
wir die
Batis-Operationen lernen In OpenCV gibt es
vier Biti-Operatoren. Der erste Operator ist N XR und der
letzte Operator ist Null. In OpenCV werden
Bitois-Operatoren für Operationen auf
Pixelebene zwischen
zwei Bildern oder zwischen
einem Bild und einer Maske verwendet Operationen auf
Pixelebene zwischen
zwei Bildern oder zwischen einem Bild und einer Maske Diese Operationen sind nützlich
für Aufgaben wie das Mischen, Maskieren und Bearbeiten
bestimmter Teile eines Bildes Wie ich Ihnen schon sagte, müssen wir das dem
BTI-Operator mitteilen. Zuerst gebe ich hier einen
einzigen Lend-Befehl ein. Nein, dafür werde ich Comen mit mehreren
Längen verwenden. Dann füge
ich in den mehrzeiligen Befehl den gesamten Namen des Operators
und den Zweck ein, den wir verwenden Wie ich Ihnen bereits sagte, ist dies
der erste Operator, BTI. Es wendet eine logische
Operation auf jedes Pixel von zwei Bildern
oder einem Bild und einer Maske Als nächsten Repertor haben wir BTs oder er wendet eine
logische Operation an Dann haben wir Bitwis ZR. Es wendet eine logische
ZR-Operation das
letzte Wort ist Im Grunde invertiert es die Pixel. Sie können es mit dem
logischen Knotenoperator vergleichen. Denken Sie daran, dass der bitweise Operator in einem binären Mender
arbeitet. Wenn wir den Wert Null übergeben, wird
das Pixel ausgeschaltet , und wenn
wir einen Wert übergeben, wird das Pixel eingeschaltet Ich repräsentiere es in weißer
und schwarzer Farbe. Jetzt importieren wir ein anderes
Modul, num pipe,
Hemotpimport, numb Pi Dann nehme ich
eine Variable namens Blend und setze sie auf NP, Punkt Null
ist bei runSSF,
wir müssen die Form dieses Fensters angeben Ich nehme
hier, ich werde die
Fenstergröße 400 400 einstellen Fenstergröße 400 400 Außerdem müssen wir den Datentyp
angeben. Der Typ D entspricht zwei, ist bei einem
einzigen Code INT acht. Im Grunde erstellt sie
ein leeres schwarzes Bild und wir sagen Höhe
400 und Breite 400 Im Grunde werden wir dieses leere Bild als
Grundlage
verwenden , um
Rechteck und Kreis zu zeichnen. Als Nächstes werde ich
in diesem leeren Bild ein Rechteck
erstellen . Ich gebe eine
Variable recT ein, der die
cv-Punkt-Rechteckmethode zugewiesen wurde. Rechteck. Dann müssen
wir zuerst das Bild in das
runde Kleid einfügen, müssen
wir zuerst das Bild in das dem wir das Rechteck erstellen werden
. Ich möchte eine leere Punktkopie verwenden. Ich werde eine Kopie
dieses leeren Bildes nehmen. Dann müssen wir die Marge
definieren. Wir müssen den
Rand von Xs und Yxs definieren. Ich nehme es 30 30. Dann müssen wir die
Größe des Rechtecks definieren. Ich nehme 370 Pixel mal
370 Pixel, dann müssen wir für Farbe sorgen. Wie Sie wissen, handelt es sich um
ein Binärbild, also werde ich nicht
drei Farbkanäle verwenden, also werde ich
255 bereitstellen, nur weiße Farbe. Und endlich müssen
wir die Dicke überwinden. Also werde ich negativ minus
eins
bestehen , weil dann dieses
Bild weiß angezeigt wird. Nachdem ich das Rechteck erstellt habe, müssen
wir
einen weiteren Kreis erstellen. Also werde ich eine
Kreisvariable erstellen, einen
Kreis, der
CV entspricht, einen Kreis aus Metall. Dann müssen wir in den Rundkleidern zuerst das Bild
definieren In welchem Bild möchte ich
diesen Su-Typ erstellen, bland, dot, copy, dann
müssen wir die
Mittelposition dieses Kreises definieren Ich werde 200 mal 200 bestehen. Mama, dann gebe ich dem Kreis einen
Radius, 200 ist
, und gebe auch
die Farbe an , also werde
ich einfarbig verwenden, also möchte ich 255 übergeben,
komplett weiß. Danach müssen wir
die Dicke dieses Kreises weitergeben, also
gebe ich minus eins weiter, um den Kreis
mit weißer Farbe zu füllen. Dann müssen wir
beide geometrischen Formen
in verschiedenen Fenstern anzeigen beide geometrischen Formen
in verschiedenen Fenstern Er führt die Methode C, Punkt, IN so aus, Nein innerhalb der runden Leiste in
der Single zuerst, ich möchte das Rechteck anzeigen, also das
Rechteck binden Dann müssen wir den
Variablennamen angeben, der rec ist. Als Nächstes möchte ich den Kreis
anzeigen. Ich werde das
Rechteck durch
einen Kreis ersetzen und wir
müssen auch den Kreis mit
variabler Länge ersetzen. Ich werde diese Datei einrichten. Nachdem wir die Datei eingerichtet haben, lassen Sie uns den Code ausführen und
sehen, was er zurückgeben wird. Nachdem ich diesen
Code in meinem Terminal ausgeführt habe, können
Sie sehen, hier haben
wir die beiden Bilder, mit denen
ich arbeiten werde. Es ist ein Rechteck
und es ist ein Kreis. Beginnen wir nun mit dem
ersten grundlegenden Btis-Operator. Lassen Sie uns also mit unserem
ersten Bitwise-Operator beginnen, dem es sich um einen kreativen,
einfachen und gebräuchlichen Bitwise A handelt. Bevor wir über
Bitwis und den Operator sprechen,
möchte ich Ihnen zeigen, möchte ich Ihnen zeigen Also deklariere
ich zunächst eine Variable bitweise als
Bowie, Unterstrich, N N und gleich C Punkt, bitweise und
Operator C Punkt, bitweise und
Operator Bois und dann die Pressen in
der Runde
müssen an die Quelle übergeben werden Also als Quelle übergebe
ich das Rechteck DC und als Quelle werden
wir Circle übergeben. Ups, die Schreibweise von Kreisen ist falsch, also werde ich CR
korrigieren Und jetzt werde ich dieses Ergebnis in
einem anderen Fenster
anzeigen Hier führe ich CV,
Punkt, On für Methode, M Show aus. Drücken Sie dann innerhalb der Runde
zuerst, um
den Fensternamen zu übergeben
, der Bitwise A ist. Ich kopiere den Variablennamen so wie er
ist und füge ihn hier Dann wird auch das Quellbild,
das bitweise
N ist
, diese Variable zur Verfügung bitweise
N ist
, diese Ich möchte diese Datei einstellen.
Nachdem ich diese Datei eingerichtet habe, werde ich den
Code in meinem Terminal ausführen. Ein Unicode, wie Sie sehen können, ist
das Ergebnis von Bitois und
Operator bitweise Operator Bitwise
und der Operator haben
diese beiden Bilder genommen und sie
übereinander gelegt und den Grund für
die Überschneidung zurückgegeben Wenn ich diesen Kreis
über das Rechteck bewege, gebe ich den
gemeinsamen Schnittbereich
der kombinierten Form zurück und er stellt den Bereich für den
gemeinsamen Grund mit
weißer Farbe dar und entferne Gehen wir nun zum
bitweisen Operator OR über. Hier werde ich diese Folie
kommentieren. Dann gebe ich
einen weiteren
Befehl ein und gebe bitwise oder
operator ein oder einfach bitwis oder bor
gib den sich überschneidenden Bereich zurück, es gibt
den sich nicht schneidenden Bereich zurück Lass mich dir das zeigen. Auch hier gebe ich
eine Variable bitweise oder Bitwis ein, die dem
C-Punkt-Bitwis oder Operator entspricht Dann gebe
ich bei der Runde das Rechteck weiter Dann werde
ich als Quelle den Kreis passieren Wenn ich dieses
Bild in einem Fenster zeige, dann tippe ich C-Punkt und Informo Dann geben wir bei
RoundRessF einen Fensternamen an, der BTI R ist. Dann müssen wir die Quelle angeben, das
Quellbild Nachdem ich diese Datei gesetzt habe und ich
nicht in meinem Terminal kodiere, können Sie
jetzt, wie ich Ihnen gesagt habe, feststellen, dass
sie den
Kreuzungsbereich zurückgegeben hat, auch den Bereich, der sich nicht
überschneidet Es kombinierte das
gemeinsame Ergebnis mit
einem nicht gemeinsamen Grund und
schuf eine neue Form. Gehen wir nun zum
nächsten Bitwie-Operator über. Dafür werde ich
einen weiteren Single-End-Befehl schreiben, aber bevor ich diese Zeile
auskommentiere und hier werde
ich ein weiteres
einzelnes Endm bitweise erstellen Ich gebe den bitweisen
Unterstrich Z-Operator Bitwise ein und dieser
Operatorname ist O und dieser
Operatorname Mal sehen, was es bewirken wird. Ich erstelle eine weitere Variable, bitWisUnderscore, entspricht Zo Im Grunde wird es den Grund zurückgeben, der sich nicht
überschneidet überschneidet Lass mich dir Sol Type,
CV, Punkt, Bis, Zr zeigen CV, Punkt, Bis, Zr Ist der Runbss zuerst, werde
ich das Rechteck bestehen Dann werde ich den Kreis
passieren. Und ich werde dieses Bild
anzeigen. Also tippe, CV Punkt, ich bin fmthod. Ich bin Show Dann ziehe ich mich aus. Zuerst gebe
ich
einen Fensternamen als
Fensternamen an und übergebe den gleichen
Variablennamen, BTI-Zone Dann müssen wir die variable
BTI-Zone übergeben. Lassen Sie uns nun die
Datei einrichten und diesen Code
in unserem Terminal ausführen und
sehen, was er zurückgibt Bis zu diesem Code in meinem Terminal, wie Sie sehen können, wird
es, wie ich Ihnen gesagt habe, den Grund zurückgeben, der sich
nicht überschneidet Wenn wir dieses Bild
übereinander legen, erzeugt
es einen sich überschneidenden Grund und einen Grund, der sich
nicht
überschneidet, und
Za gibt den Grund zurück, der sich nicht überschneidet Za Diese Operatoren sind für STI sehr nützlich. Lassen Sie uns nun über
den letzten Bitwis-Operator sprechen ,
nämlich BitwisNo Also hier werde ich
einen weiteren einseitigen Kommentar eingeben und ich werde Im Grunde gibt es
nichts zurück,
es invertiert Es wurde weiß zu schwarz und schwarz zu weiß. Lass
mich dir das beweisen. Also hier
deklariere ich eine Variable namens beat is underscope naught Bitweise entspricht nichts dem Gedanken von Civ
, bitweise nichts. Dann werde
ich vorerst in diesen
runden Kleidern diesen Kreis durchqueren Um das Beispiel zu zeigen, müssen
wir nicht beide
geometrischen Formen
kombinieren Wir brauchen nur eine
geometrische Form. In unserem Fall werde
ich diesen Kreis verwenden und dann dachte C, ich komme aus Matin Dann müssen wir in die runden Kleider zuerst den
Fensterhals Ich werde den
gleichen Variablensprung wie
Window nip kopieren und dann
müssen wir die Variable angeben Und ich werde diese Datei einrichten. Nachdem ich diese Datei eingerichtet
habe, werde ich auch diese Zeile
auskommentieren, ich brauche diese Zeile vorerst nicht. Ich weiß nicht, wie ich
das zeigen soll. also nach dem Einstellen dieser Datei Wenn ich also nach dem Einstellen dieser Datei diesen Code
in meinem Terminal ausführe,
ist das, wie Sie sehen können, nicht der Operator Btis Wie ich dir schon sagte, es kehrt
die Farbe um. Die Farbe nicht umkehren. Im Grunde macht es Null
zu Eins und Eins zu Null. Deshalb
sieht unser Etwas schwarz aus und unsere Außenseite des Kreisbereichs und
der Fensterbereich sehen weiß aus. Das ist es für diese Struktur. Ich hoffe, Sie verstehen,
wofür
BtS-Operatoren verwendet werden und
wie wir sie verwenden können Es ist sehr wichtig zu wissen, dass diese Operatoren sehr
wichtig sind, wenn wir mit uns zusammenarbeiten. Keine Sorge, wir
werden in unseren
Projektabschnitten mehr
darüber erfahren . Also danke, dass du
dir dieses Video angesehen hast. Seien Sie gespannt auf das nächste Studio.
16. Maskierung: Hallo, Leute. Schön
, dich wieder zu sehen. Ich bin wieder
mit einem weiteren Tutorial zurück, zugehörigen Python Open CV. Und in diesem Tutorial werden
wir über Maskierung
sprechen In unserem vorherigen Tutorial haben wir über den
BTIs-Operator gesprochen, und im Wesentlichen verwenden wir den
BTI-Operator und führen Musk In einem einfachen Satz wird
Muskin verwendet, um sich auf einen
bestimmten Grund eines Bildes zu konzentrieren bestimmten Grund eines Bildes gleichzeitig Im offenen Halbmodus
wird Muskin verwendet, um sich auf einen
bestimmten Grund eines Bildes zu konzentrieren und
dabei andere zu ignorieren. Dies wird erreicht, indem ein binäres Maskenbild
erzeugt bei dem die anderen Ergebnisse von Interessen weiß und
der Rest schwarz sind Wie Sie wissen,
steht Weiß für 255 und Schwarz
für Null. Und die Maske kann auf das Originalbild angewendet werden, um die gewünschten Bereiche zu filtern oder zu manipulieren. Angenommen, Sie haben ein Bild von Personen und möchten
sich nur auf ihre Gesichter konzentrieren In diesem Fall können
Sie eine Maske auf
ihre Gesichter auftragen und
unnötige Bereiche ausblenden. Lassen Sie uns nun sehen, wie
das in
geöffnetem C funktioniert hat . Wie Sie sehen können, habe ich
hier eine Datei gelesen und dieses Bild
angezeigt. Und als Nächstes importiere ich Numbi Moding, weil wir damit ein leeres Bild
erstellen werden ein leeres Bild
erstellen Also ich tippe, importiere NumPi als N P. Dann werde ich ein leeres
Bild erstellen Also hier werde ich eine leere Variable
deklarieren, Np Punkt Null entspricht Dann innerhalb des runden
Prozesses, um
die Form bereitzustellen , um die Form zu erfassen, gebe ich Bild, Punkt, Form ein. Dann müssen
wir innerhalb der quadratischen Form die
Dimension der Form angeben Denken Sie daran, dass die Größe der
Maske sehr wichtig ist. Wir müssen die gleiche
Größe dieses Bildes nehmen. Hier übergebe ich Doppelpunkt
zwei und wir müssen auch
den Datentyp für den Typ
Tata vom Typ Ist Single bei Imo Typ I NDA. Und wenn Sie dieses leere Bild
anzeigen möchten, können
Sie einfach
Cm Punkt und Methode eingeben Dann gibt es in der Runde den
Heldentyp Schwarz
und Koma, und ich werde
die Variable Schwarz weitergeben. Dann werde ich zufrieden sein. Jetzt werde ich einen Kreis auf
das leere Bild
zeichnen und die Maske aufrufen. Hier
erstelle ich eine Variable namens Maskenmaske, die Maske entspricht,
gleich C-Punktsubcal In die runde Aussparung müssen
wir zuerst das Bild einfügen, auf dem wir die Maske erstellen
und zeichnen werden Also pass schwarz durch. Dann müssen wir
die Mittelposition passieren
und die Mitte nehmen, um die
Mittelposition zu definieren, ihren Typ, IMG-Bild, Punkt, Form, Ist die quadratische Aussparung, eins geteilt, geteilt durch zwei. Und als nächstes, Bild, Punkt, Form, ist ein Quadrat
geteilt durch Null, geteilt durch zwei. Und jetzt müssen
wir vorerst auch den Radius für den
Radius angeben, ich nehme 100 Pixel, und dann müssen wir
die Farbe übergeben und ich möchte 55 volle weiße Farbe als Dicke von
minus eins, um den
Kreis mit weißer Farbe zu füllen. Und jetzt müssen wir diese Maske auf dem
Bild für diesen Helmtyp
anzeigen . C V Punkt, ich zeige sie
zuerst in solchen Rundungen, um
einen Fensternamen anzugeben , der Maske ist Und dann müssen wir die variable
Maske angeben. In welchem Bild wollen wir eine Maske
erstellen, diese. Und wenn du unterschätzt wirst
, werden alle drei
Bilder angezeigt Es werden insgesamt drei
Fenster geöffnet. Lass es mich dir zeigen. Zuerst
öffnet es das Katzenbild, dann
öffnet es das leere Bild,
und das ist unser Maskenbild. Und jetzt werde ich den
Bitwise-Operator verwenden, um es zu maskieren. Dafür werde ich
eine weitere variable Maske erstellen, die dem CV-Punkt bitweise und dem Bitwise-Operator entspricht CV-Punkt bitweise und dem Bitwise-Operator Dann übergebe
ich innerhalb der
Resist-Runde zuerst Bild
als Quelle, IMG Coma, Bild als zweite Quelle, dann müssen wir
Maskenmaske eingeben , die gleich Ich werde diese
Variable namens mask übergeben Mit Bitwise und Operator wenden
wir also diese
Kreismaske auf dieses Bild Wenn ich also dieses Bild zeige,
also gebe ich Ammtho ein,
kopiere diese Zeile und füge sie
hier ein und ersetze Maske durch Maske Sie stellen diese Datei ein und codieren
dann in meinem Terminal. Mal sehen, was es getestet hat. Wie Sie sehen können,
ist es genau das, was es getestet hat. Das ist unser Maskenbild. Nachdem ich die Maske aufgetragen
habe, wird es langsam. Zuerst haben wir dieses Bild aufgenommen, dann haben wir dieses Bild über
dieses Originalbild gelegt und eine Maske erstellt. Im Grunde genommen Bits und Operator, wir haben das sich überschneidende
Ergebnis dieses Bereichs Wenn Sie diese
Masse bewegen möchten, ja,
lassen Sie mich Ihnen zeigen, wie Sie die Koordinaten ändern
müssen Also hier werde ich unnötige Linien
aufdecken. Ich brauche das nicht, also kommentiere ich sie alle
aus und hier, geteilt durch zwei, möchte
ich die Maske verschieben, also möchte ich verstärkte Pixel hinzufügen Hier füge ich
mit diesen Koordinaten befestigte hinzu. Nachdem Sie diese Datei
und diesen Code eingegeben haben, können
Sie sehen, dass wir den Maskenbereich
verschieben, wir verschieben die Maskenposition Anstatt einen Kreis zu verwenden, können
Sie auch ein Rechteck aus verwenden. Verwenden Sie es einfach, um den
Kreis durch ein Rechteck zu ersetzen. Nur eine Sache, die Sie beim Auftragen der Maske
beachten müssen. Sie müssen die tatsächliche Größe
des Bildes für ein schwarzes Bild annehmen . Wenn Sie eine andere Dimension verwenden,
nehmen Sie an, dass die
andere Laube größer als diese ist, dann wird ein Pfeil geworfen Unter Verwendung der Bildform erfassen wir hier beide Varianten der
Bildauflösung Und wenn wir es ändern, wird
es einen Fehler auslösen. Lassen Sie mich Ihnen das Beispiel zeigen. Ich möchte die
Folie duplizieren und die
vorherige hier kommentieren ,
anstatt die exakte
Form dieses Bildes zu verwenden .
Ich nehme 300 mal 300. Wenn ich diesen
Code speichere, gebe ich nein ein, wie Sie sehen können, es ist 30. Es wird nicht funktionieren,
weil wir die tatsächliche Form des
Bildes
annehmen müssen , um die Maske zu erstellen. Ich werde
diese Zeile auskommentieren und
die vorherige Zeile auskommentieren und diese Datei
einrichten und diesen Code erneut
ausführen Jetzt können Sie sehen, dass es das Ergebnis
zurückgibt. So können wir eine Maske auftragen. Ich hoffe, jetzt ist es für dich klar. Vielen Dank, dass Sie sich dieses
Videostatut für das nächste Tutorial angesehen haben.
17. Graustufenbildhistogramm opencv: Hallo Leute. Schön
dich wieder zu sehen. Ich bin wieder
mit einem neuen Tutorial Python
Open CB zurück
und in diesem Tutorial werden
wir Histogramm lernen Jetzt ist die Frage,
was ist ein Histogramm? Ein Histogramm ist ein Diagramm, das die
Verteilung des numerischen Variablenwerts
als eine Reihe von Balken darstellt Wir werden
es verstehen, wenn wir mit unserem Praktikum beginnen Wie Sie sehen können, öffne ich hier eine Python-Datei man dot Pi
und importiere ein Bild, und ich zeige dieses Bild
mit Imghofunction Histogrammen
können Sie grundsätzlich
die Verteilung der
Pixelintensität in einem Bild visualisieren die Verteilung der
Pixelintensität Unabhängig davon, ob es sich um ein farbiges Bild oder ein
Graustufenbild handelt, können
Sie
die Pixelintensität visualisieren Sie können die Verteilung der
Pixelintensität
mit Hilfe eines Histogramms verstehen mit Hilfe eines Histogramms Das ist wie ein Schnappschuss oder eine Handlung. Dadurch erhalten Sie ein gutes
Gespür für die Pixelverteilung
im Bild Wir können ein Histogramm für ein Griske-Bild und ein
Histogramm für RGB-Bilder berechnen Wir beginnen mit der
Berechnung des Histogramms für Griskalbilder Berechnung Zuerst werde ich
dieses Bild in ein Graustufenbild umwandeln dieses Bild in ein Graustufenbild Dazu
deklariere ich eine Variable namens
Graugrau, die Cv Punkt CVT-Farbe entspricht Cv Punkt CVT-Farbe In den runden Kleidern übergebe ich die
IMG-Bildvariable, das
Komma, und dann
werde ich
dieses ZR-Bild in ein
Grisker-Bild umwandeln , Zusammenfassung verwenden Sie Lebenslauf,
Punkt, Farbe, Unterstrich BGR, Punkt Dieser. Dann zeige ich dieses Bild in unserem Fenster. Ich tippe CV. Ich tippe CV, Punkt, IMS-Methode, IM also. Dann sagtest du zuerst die
runden Kleider Ich gebe einen
Anzeigenamen, der grau ist. Dann übergehe ich das Koma und hier
übergebe ich die Variable Grau. Nun, um
das Grascal-Histogramm tatsächlich zu berechnen, was wir
im Wesentlichen tun müssen, werde
ich zuerst eine Variable deklarieren und
unsere Variable ist grau,
unterstreichen Hist, graues Histogramm, das dem gelehrten Lebenslauf
entspricht,
hier werde ich eine Methode verwenden, die calc hist, calc hist , this ist. Dann müssen wir innerhalb der Run-Aussparung das Historium für das
Bild berechnen
, in das wir übergehen. Und hier sind wir nur daran interessiert
, ein Graustufenbild weiterzugeben. Ich kopiere dieses variable
Grau und füge es hier ein. Apacoma, dann müssen wir den Farbkanal
passieren, und innerhalb der quadratischen Aussparung werde
ich
Null übergeben, weil wir Graustufenbild
verwenden,
kein farbiges Bild Als Nächstes müssen
wir eine Maske bereitstellen Wenn Sie also hier die histogrammspezifische
Position eines Bildes ermitteln
möchten , können Sie
die Maskenposition angeben Aber im Moment werde
ich das gesamte Bild verwenden, also werde
ich keines weitergeben Und als Nächstes müssen wir die T-Größe
angeben und Größe ist im Grunde die Anzahl der Bits, die wir für die
Berechnung des Histogramms verwenden wollen Wenn wir über das
Plot-Histogramm sprechen, müssen
wir
das Konzept von B verstehen. Aber im Grunde nehmen wir für den Moment einfach zwei, fünf, sechs Außerdem müssen wir
diesen Wert als Liste zusammenfassen. Als Nächstes
müssen wir
den Bereich aller
möglichen Werte angeben , aller möglichen Pixelwerte. In unserem Fall
übergebe ich innerhalb des
Quadrats von einem Komma Null auf fünf, sechs und das war's Jetzt werde ich
ein Modul importieren, Matplot Leap. Hier werde ich
Matplot Leap als PLT importieren. Geben Sie also import Mc
plot leave als PLT ein. Im Grunde möchte
ich aus diesem Modul Pi Plot Leave importieren Hier übergebe ich
McLoteAptPi plot Leave
Pitht und gebe dann PLT-Punktfigur Pitht und gebe dann PLT-Punktfigur Ich nenne diese Methode und Nächstes gebe ich Dann
müssen wir in Su Rounder ein Level festlegen und
unser Level ist Graustufen Es ist ein Graustufen-Histogramm. Ich gebe
Graustufen-Histogramm ein. Dann werde ich das X-Label festlegen. Geben Sie also PLT, Punkt, X Level ein. Im Inneren der Rounder
werde ich diese Behälter nennen. Als Nächstes müssen wir die Y-Stufen
festlegen. Geben Sie also PLT ein, Punkt Y-Ebene. Hier müssen wir die
Anzahl der Pixel für Pixel übergeben. Schließlich müssen wir
das Diagramm PLT, Punktdiagramm verwenden. Und in der runden Aussparung werde
ich das
berühmte
Graustufenhistogramm Gray Hist durchgehen Graustufenhistogramm Gray Außerdem müssen wir das
Grenzkreuz der Xs festlegen. Ich werde PLT Line eingeben. In der runden Aussparung werde
ich die
Liste von 022 56 weitergeben Endlich können wir dieses Bild
anzeigen. Hier gebe ich
PLT Dot Show Method ein. Also werde ich diese Datei einrichten. Nachdem ich diese
Datei eingerichtet habe, werde ich diesen Code in meinem Terminal
ausführen. Um diesen Code
in meinem Terminal auszuführen, ist
dies das Bild des Histogramms Es ist das
Graustufen-Histogramm dieser Katze. Im Grunde ist dies
die Verteilung der Pixel in diesem Bild Wie Sie sehen können, entspricht die
Anzahl der Bohnen auf den Xxs den Intervallen
der Pixelintensitäten Wie Sie also sehen können, gibt es
an dieser Position einen Spitzenwert Das bedeutet, dass das
fast 125, 125 Behälter sind. Das bedeutet, dass
es in diesem Bild
mehr als 9.000 Pixel mit einer
Intensität von 125 Im Grunde genommen möchte ich
sagen, dass die
Pixelintensität an dieser Position fast
9.000 überschreitet Das ist also im Wesentlichen
die Berechnung des Graustufenhistogramms
für das gesamte Bild Jetzt können wir
im Wesentlichen eine Maske erstellen. Dann können wir
das Histogramm nur für die
jeweilige Maske berechnen und
um die Maske zu erstellen, müssen
wir das Numbi-Modul importieren Also werde ich hier import Numbi als
NP eingeben. Um die Maske zu erstellen, deklariere
ich hier eine
Variable namens blank, blank entspricht Heuse einer
Methode namens np dot zero Hier gibt es keinen Punkt Null innerhalb
der Rundungen, wir müssen uns die Bildform ansehen Das Bild hat die Form eines Punktes und ich
möchte herausfinden, dass zwei Werte innerhalb des Quadrats Doppelpunkt zwei sind,
die ersten beiden Es wird ein leeres Bild der
gleichen Größe erzeugt. Dann müssen wir den Wert vom Typ D angeben
. Der Typ D entspricht innerhalb der Benutzeroberfläche des
einzelnen Kurses NT 8. Dann werde ich die
Maske mit dem leeren Bild erstellen. Also hier gebe ich die
zugewiesene Breite der Maske ein, die dem CV-Punktkreis
entspricht. Wir werden eine Kreismaske
erstellen. Drücken Sie in der Runde, um diesen Kreis zu
zeichnen. Zuerst müssen
wir das
Bild bereitstellen, das schwarz ist. Dann müssen wir
die Mittelposition
definieren, um die Mittelposition
innerhalb der Rundpressen zu definieren. Er soll die Bildpunktform verwenden. In den quadratischen Kleidern
übergebe ich den ersten Wert und er wird
geteilt durch zwei, wir müssen die vertikale und horizontale
Mittelposition nehmen. Egomotypeimage,
Punkt, Form, Bedeutet die
quadratische Adresse, dass
ich Null geteilt, geteilt durch zwei übergeben werde Diese Berechnung
wird die Mittelposition dieses Bildes ergeben . Dann müssen wir
den Radius dieses Kreises angeben
, der 100 Pixel beträgt. Als Nächstes müssen wir die Farbe
angeben. Für die Farbe verwende ich 255 weiße Farben, einfarbiges Weiß und
ich möchte auch diesen Kreis füllen. Ich bestehe minus ein Vu. Das ist der Dickenwert. Wenn wir minus eins überschreiten,
wird der Kreis
mit weißer Farbe gefüllt. Und dann werde ich
diese Maske in einem Fenster zeigen. Also werde ich Andromthod
v dot IM verwenden und runRessF setzen . Ich werde eine Fensternamenmaske
deklarieren,
Maske, und ich werde die variable Maske übergeben Jetzt werde ich das Graustufen-Histoum für diese Maske erstellen Graustufen-Histoum Ich werde diesen Parameter als
Maskenparameter als Maske festlegen. Anstatt die
Non-Hemotype-Maske zu verwenden. Aber bevor ich diesen Code ausführe, glaube
ich, habe ich einen Fehler gemacht. Es ist keine Maske, es ist ein Kreis. Es ist ein Kreis. Er kreiert einen Kreis. Hier
erstellen wir nur diesen Kreis. Wir tragen keine
Maske auf dieses Bild auf. Um die Maske zu erstellen, müssen wir also
den Bitwise-Operator verwenden. Es ist sehr allistisch. Also habe ich die Maske gleich CV Punkt deklariert und den
Bie-Endoperator bitweise
und in den besagten Runden benutzt und in den besagten Runden Zuerst möchte ich
das Graustufenbild auswählen,
diese Quelle als Quelle, Grau als zweite Quelle, ebenfalls Multi-Pass-Grau und den
Bie-Endoperator bitweise
und in den besagten Runden benutzt.
Zuerst möchte ich
das Graustufenbild auswählen,
diese Quelle als Quelle,
Grau als zweite Quelle, ebenfalls Multi-Pass-Grau. Und wir müssen Maske übergeben, Maskenwert entspricht
Kreis, Maskenwert entspricht Hier wenden wir diesen Kreis als Maske auf das Graustufenbild an Ich werde diese Datei einrichten und diesen Code in meinem Terminal
ausführen Bis zum Ausführen des Scude
in meinem Terminal, hier kannst du das Ergebnis sehen Das ist der Maskenbereich. Und das ist das
Histogrammergebnis dieses Maskenbildes. Jetzt können Sie feststellen, dass
dieses Histogrammbild viele Spitzen aufweist, da die
meisten Bereiche weiß
sind dieses Histogrammbild viele Spitzen aufweist, da die
meisten Bereiche Aus diesem Grund ist die Pixelintensität
auf diesem Bild hoch. Wie Sie bei der Position
30 Bins feststellen können, haben
wir eine Intensität von 500 Pixeln. So können wir das
Graustufenbildhistogramm berechnen. Im nächsten Tutorial werden
wir lernen, wie wir ein
farbiges Bildhistogramm verwenden können Das ist es für dieses Tutorial. Vielen Dank, dass Sie sich dieses Video Seien Sie gespannt auf das
nächste Tutorial.
18. Farbbildhistogramm: Hallo, Leute. Schön
, dich wieder zu sehen. Ich bin wieder mit
einem weiteren Histogramm zum
Thema Tutorial zurück , und in diesem Tutorial werden
wir lernen, wie wir ein
Histogramm-Diagramm aus einem Cana-Bild
extrahieren können Histogramm-Diagramm aus einem Cana-Bild
extrahieren Wie Sie sehen können, habe ich bereits unsere wichtigen Bibliotheken
eingegeben, den zweiten Lebenslauf und meine Handlung Dann habe ich
die Bilddatei bereits mit der
Image-it-Funktion gelesen . Außerdem zeige ich dieses orgene
Bild mit der IM So-Methode an. Als Nächstes müssen wir
ein neues Abbildungsfenster
für das Histogramm erstellen für das Histogramm Dafür gebe ich
PLT-Punktfigur ein
und dann müssen wir das runde
Kleid weitergeben Danach müssen wir
den Titel des Histogrammplots festlegen. Dafür gebe ich
PLT-Punkttitel ein. In der runden Auflösung
übergebe ich den Titel nm und
der Titelname lautet
Farbhistogramm Als Nächstes müssen wir den Namen der
X-Level dafür nehmen, ich gebe
PLT Punkt X In den runden Kleidern, hier nehme ich Bohnen Richten Sie die XXs als Balken aus, wobei jeder Balken für einen
Farbintensitätswert von 02 Auf die gleiche Weise
werde ich das Y-Level erreichen. Ich
dupliziere diese Zeile und ersetze
X durch Y, hier gebe
ich Anzahl der Pixel,
Anzahl der Pixel ein. Die Y x stehen für die
Farbzahl der Pixel für jede
Intensitätsstufe im Histogramm Bis zur Definition von
Titelebenen und Abbildung. Als Nächstes müssen wir ein Tupel erstellen. Hier werde ich einen Variablennamen
verknüpfen und unser Variablenname ist Farbe Farben entsprechen, wie ich Ihnen schon sagte, es ist ein Tupel, also werde ich
runde Borse neben der runden Borste verwenden runde Borse neben der runden Borste verwenden hier nehme ich
insgesamt drei Bandwerte Unser erster Wert
ist B, B für Blau. Als Nächstes
nehme ich G für Grün, und unser letzter Wert ist R,
R für Rot, R steht für Rot. Wie Sie wissen, werden
V-Bilder standardmäßig im RGB-Modus geöffnet. Hier definieren wir Bänder
mit
Farbkanalbeschriftungen , um anzugeben, welcher
Farbkanal verarbeitet wird. Danach mache
ich hier
einen Follow-Flop, um den
gesamten Farbkanal zu wiederholen Ich gebe vier ein, ich rufe mit Komma, Call
steht für Farbe Und I steht für Index in Aufzählung innerhalb
der runden Farben Dann werde
ich innerhalb dieser Herbstschleife das Histogramm erstellen, das
Histogrammbild Geben wir eine Variable
namens HIST Hist ein, die CV
entspricht . Ich werde
eine Methode namens Calc Hit,
Calc Hist verwenden eine Methode namens Calc Hit,
Calc Dann müssen
wir innerhalb der Runden eine Liste übergeben, und als erstes Listenelement übergebe
ich die Sequenz, nämlich image und als erstes Listenelement übergebe
ich die Sequenz, nämlich image IMG. Diese Variable. Dann müssen wir den Kanal passieren,
den Farbkanal. Auf welchen Farbkanal möchte
ich zielen? Eines Tages möchte ich auf den
gesamten Farbkanal abzielen. Ich werde
die Indexnummer weitergeben. Stattdessen gebe
ich die quadratischen Adressen, die ich weitergeben werde, dann gebe ich die Maske Im Moment werde ich keine Maske auftragen, also werde ich hier auch keine weitergeben Als Nächstes müssen wir
die Hist-Größe definieren und
für diese Größe
gebe ich das Quadrat Sus 256 Als Nächstes müssen wir
den Intensitätsbereich angeben , der für das Histogramm
berücksichtigt werden soll Hier, im Inneren des Quadrats, werde
ich 02-55 passieren Zuerst übergeben wir
das Quellbild. Dann geben wir
den Farbkanal an, Null für Blau, eins für Grün, zwei für Rot, und ich
möchte alles ins Visier nehmen, hier übergebe ich I. I ist die
Indexnummer des Farbkanals. Ich repräsentiere die Indexnummer und Call steht für den
Farbkanal. In der Variablen hist wurden nun die berechneten
Histomwerte
gespeichert, die die Frequenz der
einzelnen Pixelintensitäten
in diesem Farbkanal angeben einzelnen Pixelintensitäten
in diesem Jetzt müssen wir
die Histoom-Daten
für den aktuellen Farbkanal plotten für den aktuellen Farbkanal plotten Dafür ist er ein PLT-Plot vom Typ. Dann müssen wir innerhalb der runden Pressen zuerst einen Bogen passieren, Bogen wie hier als
Bogen, ich werde
Hite, diese Variable, passieren Dann müssen wir die Farbe weitergeben. Farbe entspricht der Aufrufvariablen. Danach müssen wir die X-Überschreitung auf
022 56
einstellen , um sie an den
Intensitätsbereich anzupassen Für dieses Modell gilt GPLT, Punkt, Kalk, Limit. Drücken Sie in der Runde hier, um
einen Listeneintrag von 022 56 zu übergeben einen Listeneintrag Jetzt werde
ich außerhalb der Vierschleife das
Histogramm mit der Methode
plt doth anzeigen . Ich
werde diese Datei einrichten Wenn ich nach dem Einrichten dieser Datei Code in meinem Terminal
ausführe, wird, wie Sie sehen können, unser
Histogramm, das Farbhistogramm, geöffnet Das ist unser Originalbild. Es ist ein farbenfrohes Bild, und wie Sie
in diesem Histogramm sehen können, haben
wir insgesamt drei
Farbkanäle:
Rot, Blau und Grün Und wenn Sie jeden
der Farbkanäle bemerken,
nehmen wir an, dass Rot auf der Gewinnposition von
Essex die
Intensitätsspitze berührt, für Blau bei 110 Punkten die Spitze
berührt hat Und bei Position 155 XX können
Sie den grünen
Farbkanal Peak sehen Bild können Sie die Verteilung der
einzelnen Farbkanäle sehen In diesem Bild können Sie die Verteilung der
einzelnen Farbkanäle sehen. Dieses Verfahren ist nützlich, um die
Farbverteilung in
einem Bild zu
analysieren und die
allgemeine Farbzusammensetzung zu verstehen. Grundsätzlich lernen
wir in diesem Tutorial, wie wir ein
farbiges Bildhistogramm extrahieren können, und in unserem vorherigen Tutorial erfahren
wir, wie wir ein
Graustufenbildhistogramm extrahieren können Vielen Dank, dass Sie sich dieses Video Seien
Sie gespannt auf unser
nächstes Tutorial
19. openCV schwellenwert: Hallo und willkommen zurück zu
einem weiteren Video zu Opens. Und in diesem Video werden wir über Schwellenwerte sprechen Nun stellt sich die Frage,
was ist Schwellenwert? Im Grunde ist Thresholding
eine Binarisierung eines Bildes. Im Allgemeinen nehmen
wir ein Bild auf
und konvertieren es in
ein Binärbild und konvertieren es in
ein Binärbild wobei Null für
schwarze Farbe
und 255 für weiße Farbe steht und 255 Im Grunde vergleichen wir jedes Pixel mit dem Schwellenwert. Wenn der Pixelwert unter
dem Schwellenwert liegt, setzen wir ihn auf Null, bedeutet Schwarz, und wenn er größer als ist, dann setzen
wir ihn auf 255, bedeutet Weiß. In gewisser Weise können wir
im Grunde genommen
ein Binärbild einfach aus einem
normalen Standalone-Bild erstellen . Und in diesem Tutorial sprechen
wir im Grunde zwei verschiedenen Arten
von Schwellenwerten, der
einfachen Schwellenwertbildung und der angepassten Schwellenwertbildung. Beginnen wir mit der einfachen Schwellenwertbildung. Zuerst gebe ich hier einen Befehl mit
einem einzigen Bein ein. Ich werde
Simple Threshold eingeben. Einfaches Dreifalten. Bevor ich die
einfache Dreifaltung anwende, müssen
wir dieses Bild,
dieses farbige Bild, in ein Graustufenbild
umwandeln dieses farbige Bild, in ein Graustufenbild
umwandeln Dafür deklariere ich hier eine Variable grau und
weise ihr CV CT farbig
zu weise ihr CV CT farbig Diese Methode. Dann müssen
wir in
der Runde zuerst das
Quellbild übergeben, bei dem es sich um ein IMG-Variablenbild handelt, und dann müssen wir den farbigen Code
verwenden. Cvt-Farbe, Unterstrich
BGR zwei Grau, dieses hier. Dann werde ich dieses Bild
anzeigen. Also vom Typ, CV, bin ich
Somethor in the round brass, werde ich
zuerst
einen Fensternamen angeben, der grau ist, und dann müssen wir das Bild grau
angeben Um nun den
einfachen Schwellenwert anzuwenden, müssen wir eine Funktion anwenden Wir müssen eine Funktion
namens Cv Dot Threshold verwenden
und diese Funktion
gibt den Schwellenwert zurück Und es gibt auch Müll zurück. Gleich, dann müssen wir
die Methode vt threshold,
threshold verwenden und innerhalb der
runden Kleider müssen
wir zuerst das
Quellbild übergeben, das grau ist, und als nächstes müssen wir die
Schwellenwelle, eine Fließkommazahl,
passieren. Im Moment werde ich 150 bestehen. Als Nächstes müssen wir
den Maximalwert übergeben. Wenn der
Pixelintensitätswert größer als 150 ist, möchte ich das Bild
binarisieren Wenn es das Etikett
überschreitet, möchte ich es auf 255 setzen Ich meine, komplett weiß. Als Nächstes müssen wir hier
den Schwellenwerttyp
für Schwellenwerttyp übergeben ,
ich bin Typ C Punkt Binär Dieser. Eine andere
Frage ist, was es tut. Im Grunde wird
jeder Pixelwert mit
diesem Flügelwert verglichen Pixelwert mit
diesem Flügelwert Wenn er größer als 150 ist, wird er auf
255 gesetzt, also weiß. Wenn es niedriger als 150 ist, wird es auf Null gesetzt, was der schwarzen Farbe entspricht Im Wesentlichen gibt es
zwei Dinge zurück: TAS, nämlich das Hefold-Bild
oder das binarisierte Außerdem gibt es Tfold zurück, was
im Wesentlichen derselbe Wert
ist, im Wesentlichen derselbe Wert In unserem Fall 150. Lassen Sie uns nun
dieses Bild anzeigen, also geben Punkt und Mthods
die Rundverses ein,
wir müssen zuerst den
Fensternamen angeben, den einfachen Schwellenwert, und dann müssen wir
den Bildern dieses übergeben. Lassen Sie uns
nun den Code in
einem Terminal und C ausführen, um den Bildern dieses übergeben. Lassen Sie uns
nun den Code in
einem Terminal und C ausführen Propeller Nught zu
bearbeiten Wie Sie sehen können, ist dies
unser Originalbild. Das ist das Graustufenbild. Dies ist die griskale Version
dieses Originalbilds
und dies ist das Schwellenbild und dies ist das Das ist im Grunde genommen der Schwellenwert
150, wenn wir sagen Lassen Sie uns nun
den Schwellenwert ändern. Ich habe dieses Terminal gemacht und
ich werde es ändern, ich werde einen Schwellenwert von
100 setzen. Außerdem möchte ich das Originalbild nicht
zeigen. Ich kommentiere diese Zeile aus und
möchte auch nicht das graue Bild zeigen. Außerdem kommentiere ich diese Zeile aus. Ich werde diese Datei abonnieren. Wenn ich nach dem Einrichten dieser Datei
diesen Code in meinem Terminal ausführe, können Sie
jetzt sehen, dass er so geschrieben
ist. Wenn wir Thrash-Wert 100 sagen. Jetzt wird der Pixelwert über
dem Wert von 100 zu 255 und der Pixelwert unter
dem Wert von 100 zu Null ,
wenn ich einen niedrigeren Wert
übergebe, anstatt einen höheren mich es Ihnen zeigen,
wenn ich einen niedrigeren Wert
übergebe, anstatt einen höheren Wert zu übergeben. Wenn ich 220 übertreffe. Stellen Sie dann diese Datei ein und führen Sie
diesen Code in meinem Terminal aus Jetzt können Sie das
unterschiedliche Ergebnis sehen. Jetzt kannst du nur noch zwei
Augäpfel sehen, sonst nichts. Auf diese Weise können Sie unterschiedliche Ergebnisse
erzielen wenn Sie mit einem Mindestbetrag bezahlen Lassen Sie uns nun
diesen Schwellenwert von zwei umkehren. Im Moment mache ich es
erstmal,
ich mache es auf
120 und setze diese Datei, dann dupliziere ich diesen Abschnitt Dann ändere ich die Umkehrung
des geraden Unterstrichs, Außerdem müssen wir die Methode
ändern. Cv dot binary inverse, N. Außerdem muss
ich diese
Variable Trash underscope
NV und simple threshold NV nennen NV und simple threshold NV Das ist der Name des Fensters.
Im Grunde wird es das Bild umkehren Bildpixel, lass es mich dir zeigen. Nachdem Sie diese Datei eingerichtet
haben, können Sie das Ergebnis sehen. Dies ist der ursprüngliche
einfache Schwellenwert, und dies ist das
Schwellenwertbild mit inversem Mod Wie Sie sehen können, werden
die Pixelwerte umgekehrt. Jetzt wird der weiße Teil schwarz und der schwarze
Teil wird weiß Das ist die Umkehrung, die
Version dieses Bildes. Anstatt die
Pixelintensität, die größer
als 120 ist, auf 255 einzustellen , wird
sie jetzt auf Null gesetzt Denn hier kehren wir
das Bild um. Wir verwenden Thrash Binary Inverse. Im Grunde
willst du sagen, welcher Wert größer als 120
ist, wird
er auf Null gesetzt und welcher Wert niedriger als 120 ist, wird
er auf 55 gesetzt Das ist ein einfacher Schwellenwert. Gehen wir nun zum
adaptiven Schwellenwert über. Hier gebe ich einen
einzelnen Encoman pro Stack
und ich gebe
Adaptive Thresholding ein und ich gebe
Adaptive Thresholding Bei einem einfachen Schwellenwertprozess müssen
wir das
Schwellenvolumen manuell angeben Aber bei der Einführung von Schwellenwerten haben
wir
es dem Computer überlassen, den optimalen
Schwellenwert selbst zu finden den optimalen
Schwellenwert selbst und anhand dieses Werts das Bild binarisieren Und um den
Schwellenwert zu erreichen, deklariere
ich hier
eine Variable namens A
underscoe A, die dem Test
auf adoptiven Thrash entspricht, hier gleich Cv Punkt.
Wir müssen eine Methode
verwenden, die als adaptiver Schwellenwert bezeichnet wird die dem Test
auf adoptiven Thrash entspricht, hier gleich Cv Punkt.
Wir müssen eine Methode
verwenden, die als adaptiver hier gleich Cv Punkt.
Wir müssen eine Methode
verwenden Wir müssen Dieser. Dann müssen wir
innerhalb der runden SS zuerst das Quellbild
übergeben. Hier übergebe ich
Grau, das graue Bild. Dann müssen wir auch den Maximalwert angeben. Wir müssen den
Thrash-Wert nicht manuell einstellen. Wir müssen den
Maximalwert angeben und ich sage 255 Als Nächstes müssen wir die
Methode der adaptiven Methode verwenden, die auch
für den adaptiven Papierkorb gilt. Ich gebe V Dot Adaptive
Trash Main C ein, diesen hier. Außerdem müssen wir den Schwellenwert Ti
aufrufen, was Cv Punkt
binär ist, dann müssen wir
Blockgröße für Blockgröße übergeben, ich werde endlich 11 übergeben, wir müssen CV übergeben und ich
werde Cvu auf drei setzen Nun, was bedeutet das? der Funktion „
Adoptive Threshold handelt es sich um eine Methode zur Festlegung von Schwellenwerten, die
für Bilder mit
unterschiedlichen Lichtverhältnissen
in den verschiedenen Bereichen sehr nützlich ist unterschiedlichen Lichtverhältnissen
in den verschiedenen Bereichen Wenn ich über diesen Parameter spreche (
C, adoptiver Mittelwert unter C), definiert
dieser Parameter die Methode, mit der der Schwellenwert jedes Pixel berechnet wird Beim nächsten Parameter
definieren wir die Schwellenwertzeit. Hier kannst du sie sehen,
wir kommen überall vorbei. Es ist für die Blockgröße. Ich repräsentiere die Größe
des Nachbarschaftsgebiets. Hier stehen 11 für 11 mal 11 Pixel mit
Block-Up-Pixel. Endlich sind wir an drei vorbei.
Ich repräsentiere Gewicht. Es hilft bei der Feinabstimmung
des Schwellenwerts. Methode Diese Methoden helfen
bei der Bearbeitung von Bildern, bei denen Beleuchtung aufgrund der
Anpassung an lokale Schwankungen sehr
stark
unterschiedliche Bereiche durchdringen kann. Fahren Sie nun fort und
zeigen Sie dieses Bild an. Hier bin ich vom Typ Cb Punkt
Ich komme von Method. Und in den Rundkleidern
werde ich den gleichen
Variablennamen wie den übernommenen Fensternamen und das Komma übergeben, ich werde
die Variable übergeben Außerdem möchte ich
diese beiden Zeilen auskommentieren, diese eine
und diese, wenn ich Mathe machen werde, werde ich das
graue Bild anzeigen Ich werde das in
Ordnung setzen. Lassen Sie uns nun den Code in unserem Terminal
ausführen
und sehen, was er zurückgibt. Das ist es, was Adoptive
Tash zurückgeben. Dieses Bild Hier definieren wir die
Kernelgröße 11 w 11. Und OpenCV berechnet einen Hauptwert für diese Stadtteile
. Ich möchte
Nachbarschaftspixel sagen, und es geht darum, den
optimalen Schwellenwert für den jeweiligen
Teil zu finden für den jeweiligen
Teil Ich weiß, dass es technisch gesehen verrückt
klingt und es schwierig
ist zu verstehen, was hinter den Kulissen vor sich geht. So können wir also einen
adaptiven Schwellenwert auf das Bild anwenden. Threshold wird
in unseren
kommenden Projekten eine Schlüsselrolle in unseren Projekten
spielen . Deshalb müssen wir
verstehen, wie Threshold funktioniert. Also danke, dass du
dir dieses Video angesehen hast, Syuned für unser nächstes Tutorial
20. Anzeigen der Koordinaten der Punkte, die auf das Bild geklickt wurden, mit Python OpenCV: Hallo Leute. Schön
, dich wieder zu sehen. Ich bin wieder mit
einer anderen Übung im Zusammenhang mit Python
Open C zurück einer anderen Übung im Zusammenhang mit Python . Heute werden
wir in dieser Übung
den Koordinatenpunkt anzeigen, werden
wir in dieser Übung
den Koordinatenpunkt anzeigen wenn ich auf das Bild klicke. Angenommen, ich drücke an dieser Position mit
der rechten Maustaste auf dieses Bild, wie Sie sehen können, werden
die Koordinaten X XS
und YXS gedruckt die Koordinaten X XS
und YXS Und auf die gleiche Weise, wenn ich die rechte Maustaste
lobe, können
Sie sehen, dass es auch die Koordinaten
ausgibt Mal sehen, wie wir
dieses Programm mit PyonOpenC erreichen können dieses Programm mit PyonOpenC Endlich sind wir in meinem
Visual Studio-Code-Editor. OpenCV hilft uns dabei, verschiedene Arten
von Mausereignissen zu kontrollieren
und zu verwalten , und gibt uns die Flexibilität, dort
zu arbeiten Es gibt viele Arten
von Mausereignissen. Dieses Ereignis kann angezeigt werden,
indem dieser Code ausgeführt wird. Wie Sie sehen können, verwenden eine Ein-Liner-Schleife für die I
DIR-Funktion CV Two. Ich habe sogar einen PC eingegeben. Es wird alle
Ereignisse aus dem OpenCV drucken, aus dem geöffneten Lassen Sie uns den Code
in meinem Terminal ausführen und sehen, wie viele Wie Sie sehen können, haben
wir bei diesem Code mehrere Tastatur
- und Mausereignisse Alte Taste, Steuertaste, Flaggenlippentaste, Maustaste, R-Taste, Umschalttaste, aber wir müssen
die Koordinaten anzeigen , wenn ich auf dieses Bild
klicke Dafür brauchen wir die Lift-Taste
runter und die Taste runter schreiben, R-Taste runter, das ist das Event Lass uns den Code starten. Also werde
ich zuerst dieses Terminal ausschalten. Dann werde ich diese Zeile
kommentieren. Als Nächstes gehe ich hier zu Lesen und Bild mit der
Image-Root-Funktion, ich lese. Zuerst deklariere ich eine Variable namens image IMG,
image equal to CV
two IMTFunction Ich bin bereit. Dieser. Dann sagtest du die runden Pressen. Zuerst müssen wir den Dateipfad und
die Bildquelle
angeben. Ist der einzige Kurs, ich werde
Kat-Zwei-Punkt-JPG weitergeben. Damit müssen wir den Farbkanal
übergeben und unser Farbkanalmodus
ist BGR. Ich möchte einen bestehen Wenn ich Null übergebe,
entspricht dies der Rückgabe eines Graustufenbilds. Als Nächstes müssen wir dieses
Bild mithilfe der IMS-Funktion anzeigen. Er tippt, halb zwei Punkte im
statt der Run-Presse Zuerst müssen wir einen
Fensternamen angeben, der Bild ist. Dann müssen wir die Variable
angeben, das Quellbild IMG. Und jetzt müssen wir eine
Maus einrichten, die diese Funktion genannt wird. Wir werden
das Bildfenster übergeben und eine definierte
Funktion als Parameter verwenden. Hier Modo Tie CV Maus mit zwei
Punkten, nenne das. Dann müssen
wir innerhalb der Runden den Bildnamen übergeben, den Namen des Bildfensters, nicht die Variable und der Name des
Bildfensters lautet image Ist das Einzelcode-Bild vom Typ
Imo. Als Nächstes müssen wir eine
benutzerdefinierte Funktion als Parameter übergeben , und unser
Funktionsname ist click event. Geben Sie also das Schlüsselereignis ein, klicken Sie darauf und
unterstreichen Sie es. Diese Funktion wird
alle Maustastenereignisse behandeln. Außerdem wird sie die Koordinaten
zurückgeben. Als Nächstes
rufe ich die Wet an, also tippe CV mit zwei Punkten und weiter Taste. Die Wet-Taste ist eine D-Null. Ich werde
dir nicht erklären, warum wir die Quit-Taste verwenden
müssen , weil wir bereits in
mehreren Videos davon
erfahren haben. Außerdem werde ich alle Fenster
zerstören. Geben Sie also CV mit zwei Punkten ein und
zerstören Sie alle Fenster. Als Nächstes, bevor ich
diese Funktion erstelle, möchte
ich
den gesamten Code innerhalb
der Funktion if named
equal to mean verschieben , was unsere Treiberfunktion ist. Ich gebe ein Unterstrich,
Unterstrich, Unterstrich, Unterstrich, gleich
dem Wert innerhalb
der Doppelcodes
,
Underscoe M Doppelcodes , Underscoe. Dann werde ich in dieser Treiberfunktion mit dem Code weitermachen. Dann werde ich in dieser Treiberfunktion mit dem Code weitermachen. Wir verwenden if naan, das der Hauptfunktion
entspricht, weil wir diese Funktion
von der vorhandenen Seite aus
aufrufen von der vorhandenen Seite aus Deshalb müssen wir sie erstellen. Jetzt werde ich
diese Funktion erstellen, klicken Sie auf Event. Zuerst kopiere ich den
Funktionsnamen, klicke auf Ereignis, und hier, um unseren
Funktionsnamen zu finden, klicke auf Ereignis. Dann drückt man
in der Runde, dass
diese Funktion mehrere Argumente akzeptiert. Unser erstes Argument ist gerade. Unser nächstes Argument ist Xs. Dann werde ich Y bestehen. Außerdem wird es Flagge nehmen Und der letzte ist Verzeihung. Dann werde ich in dieser Funktion vorerst pass eingeben Im Moment denke ich, dass ich etwas in einem Terminal
drucken muss. Also gebe ich
print statement, print ein. Innerhalb des Prozesses
werde ich tippen, es ist Arbeit. Bevor ich diesen Code ausführe, möchte ich erklären, was wir getan haben. Wie Sie hier sehen können, verwenden wir
eine Funktion von OpenCV,
cv two dot, set mouse Es ist eine Maus, die diese Funktion genannt wird
. Wo auch immer ich auf dieses
Fenster-Bildfenster klicke, dann wird es diese
Funktion aufrufen, klicken Sie auf Ereignis. Und in unserer Click-Event-Funktion drucken
wir einfach ihre
Arbeit in unserem Terminal aus. Wenn ich diese Datei einstelle und
diesen Code in meinem Terminal ausführe, können
Sie das Bild sehen. Und wann immer ich auf dieses Bild klicke, wie Sie sehen können, dass es
gedruckt wird, funktioniert es. Grundsätzlich funktioniert es
auch, wenn ich
mit der Maus darüber fahre, weil
wir
in unserer Funktion nicht angeben, welches bestimmte Ereignis wir verwenden
werden Deshalb funktioniert es bei allen Ereignissen, wenn ich meinen Karton darauf
bewege Außerdem glaube ich, dass es immer noch funktionieren
wird, wenn
ich eine Taste drücke glaube ich, dass es immer noch funktionieren
wird, wenn
ich Nein, es wird nicht
funktionieren, wenn ich die Taste drücke , weil wir hier diese Funktion nur
mit der Maus aufrufen. Lassen Sie uns nun über den
Parameter dieser Funktion sprechen. Wie Sie sehen können, haben wir
insgesamt die Parameter
X, Y, Flachs und Parameter Mithilfe des Event-Parameters
können wir das Mausereignis definieren. Es kann ein Lippenklick sein,
andernfalls ein Rechtsklick. X und Y, die Koordinaten
öffnen das Mausereignis. Dann kommt der Parameter Flax. Er wird nicht verwendet, ist
aber für die
Callback-Signatur erforderlich Ich möchte sagen, dass alle
relevanten Flags
von Open C übergeben wurden. Und dann
kommen Muster Muster ist auch ein
zusätzlicher Parameter. Wenn es notwendig ist, werden
wir
diesen Parameter verwenden. Also werde ich zuerst die
IP-Bedingung in dieser Funktion verwenden. Geben Sie also ein,
wir werden nach
dem Mausklick-Ereignis suchen. Ich gleichbedeutend Lebenslauf mit zwei Punkten, hier verwende
ich ein Ereignis, und ich werde ein
beleuchtetes Button-Down-Ereignis verwenden ,
irgendein Ereignis. Unterstreichen Sie L, Taste
runter, dieser. Dann zeige
ich in diesem
IP-Zustand zuerst die Koordinaten an und ich werde die
Koordinaten in unserem Terminal anzeigen Subtyp prin innerhalb der Runden, X Ich gebe ein Leerzeichen ein, also gebe ich die gesamten Codes weiter, ich gebe Y-Koordinaten weiter Dann werde ich diesen Abschnitt
duplizieren. Ich möchte den IP-Zustand studieren. Denn hier müssen wir zwei IP-Bedingungen
geheim halten. Eine ist dafür Button Down und eine
andere ist für
Write-Button Down. Ich werde diese Datei einrichten. Jetzt werde ich diesen Code ausführen. Führe diesen Code in meinem Terminal aus. Wenn ich auf eine beliebige Stelle
auf diesem Bild klicke, wollen wir sehen, was in meinem Terminal
geschrieben wurde. Wie Sie sehen können, werden die Koordinaten
gedruckt. Zuerst wird die Xx-Position gedruckt, dann die Y-Position. Wenn ich den roten Schlag
an dieser Position lobe, drucke ich
auch die Koordinaten aus. Es ist für Lip Kick und Red iOS, weil wir die IP-Bedingung
verwenden. Wir sind also fast fertig. Wir müssen diese
Koordinaten auf das Bild drucken. Also
werde ich zuerst die Schrift verwenden. Dafür müssen wir Fonts verwenden,
quasi Ti, Font, EPI Two Hier verwende ich die Schrift
von OpenCV, CV to do, und hier verwende ich Font,
Underscore, He Semis, diese hier,
diese Jetzt verwende ich eine
Inviil-Funktion von OpenCV, mit der Sie den Text auf
das Bild setzen werden Sie den Text auf
das Dafür gebe ich CV in den
Put-Text ein. In der
Funktion Text einfügen übergebe
ich zunächst das
Quellbild, das IMG ist. C dann übergebe
ich eine Zeichenfolge. Also werde ich die
String-Funktion TR aufrufen. Dann werde
ich innerhalb der
runden Strophen zuerst X, X drucken.
Dann werde ich
mit dem Cgation-Sinus verketten Ich gebe die
einzelnen Codes C weiter. Dann verwende
ich wieder den
Kongatenationssinus, ich werde eine Zeichenfolge
für Y
VD drucken, um Y VD zu drucken STR,
wenn die Runden
Y hinter diesem Stream stehen, müssen
wir die Position definieren, an der müssen
wir die Position definieren, an der wir den Text platzieren müssen Und dafür werde
ich innerhalb der Runden Exzesse und Y-Xs bestehen Geben Sie X, Y ein. Dann müssen wir die Schriftphase bestehen Welche Schrift werde ich verwenden. Ich werde
diese Variablenform verwenden , weil
wir in dieser Variablen die Schriftart definieren. Zuletzt müssen wir die Schriftskala
definieren, die eins ist, dann müssen
wir die
Farbe der Schrift farbig definieren, und ich werde BGR verwenden Ich sagte die Runbress und ich
werde die Farbe Blau verwenden. 255, der erste Wert, zweite Wert ist Null,
auch der dritte Wert ist Dann müssen wir endlich die Dicke
dieser Schrift
definieren, die zwei ist. Das ist es. Dann müssen wir dieses Bild mit der
IM-Show-Funktion anzeigen. Also werde ich diese Zeile kopieren und danach
einfügen. Außerdem werde ich
diesen Abschnitt kopieren und
ihn für diese Bedingung
für den richtigen Schlüssel einfügen ihn für diese Bedingung
für . Ich
werde diese Datei einrichten. Nachdem wir den Boden ausgehärtet haben, lassen wir den Mantel trocknen und schauen
, ob er richtig funktioniert oder nicht. Also dieses Kabeleingabe-Terminal hochfahren, wenn ich irgendwo draufklicke, so schnell werde ich Linksklick
loben UterPrais Linksklick,
wie Sie sehen können, druckt
es die Koordinaten
auf das Bild X ist X, der Überschuss ist
130 und Ys ist 170. Außerdem wird derselbe
Wert gedruckt. In unserer Amtszeit. Jetzt werde ich Rattle loben. Wenn ich R-Cli drücke, wie Sie sehen können, drucke ich
diesmal auch die Koordinaten
XXs und XS So können wir
die XXs- und
Xs-Koordinaten mit OPC drucken die XXs- und
Xs-Koordinaten mit OPC Ich hoffe, jetzt ist für
Sie klar, wie wir kreieren können. Vielen Dank, dass Sie sich dieses Video Zeitplan für das nächste Projekt.
21. Weiße und schwarze Punkte mit OpenCV: Hallo und willkommen zu einer weiteren
Übung bei Real TT Open City. In dieser Übung lernen
wir, wie wir diesen Punkt und den weißen
Punkt mit Python Open City
zählen können . Schauen wir uns also die Demonstration an. Wie Sie auf meinem Bildschirm sehen können, HeaOpen Seite an Seite
insgesamt zwei verschiedene Bilder Das erste Bild hat einen
weißen Hintergrund. Und in diesem Bild haben
wir mehrere schwarze Punkte. Und das zweite Bild hat
einen schwarzen Hintergrund. Und auf diesem Bild haben
wir auch weiße Punkte. Aber wenn Sie es bemerken, können Sie sehen, dass
die Punktgröße unterschiedlich ist. Manche Türen sind
drei Quadratpixel groß und manche Türen sind
fast 20 Quadratpixel Also müssen wir mit Open CD ein
Programm schreiben, das
alle schwarzen Punkte zählt,
A, das
alle weißen Punkte zählt Schauen wir uns also den
Visor-Studio-Code und schauen wir uns an, wie wir ihn erstellen können Hallo und willkommen zu einer weiteren
Python Open City-Übung. In dieser Übung
werden wir weiße und schwarze Punkte mit Open CP
erkennen Bildverarbeitung
mit Python ist eines der heißesten Themen
in der heutigen Welt, aber Bildverarbeitung ist etwas komplex und Anfänger langweilen sich
bei ihrem ersten Ansatz. Wir haben ein sehr einfaches
Bildverarbeitungs-Python-Programm , um schwarze Punkte auf
weißer Oberfläche und weiße Punkte
auf schwarzer Oberfläche
mit OPECVFunction zu zählen weißer Oberfläche und weiße Punkte schwarzer Oberfläche
mit OPECVFunction In dieser Übung werden
wir
Funktionen wie den Schwellenwert für das
Lesen von Bildern,
feine Konturen und den Konturbereich verwenden Funktionen wie den Schwellenwert für das
Lesen von Bildern, feine Konturen und Wie Sie in meinem
aktuellen Arbeitsverzeichnis sehen können, haben
wir einen Python
Fine Mean Dot Pi. Außerdem haben wir ein Bild mit einem
schwarzen Punkt und einem Punkt GPH. Dies ist das Bild, das
wir verwenden werden, um schwarze Punkte
auf der weißen Oberfläche
zu finden Wie Sie auf diesem Bild sehen können, haben
wir mehrere
schwarz-weiße Oberflächen. Wir müssen die
schwarzen Punkte mit OpenCV zählen. Kommen wir also zum Visual
Studio-Code-Editor. Also müssen wir zuerst das OpenCV-Lining
importieren. Also hier tippen,
importieren, importieren wir C zwei. Dann müssen wir
das Bild Five Bath definieren, das ist schwarzer Punkt ein Punkt GBG Ich werde
einen Variablenpfad deklarieren der innerhalb der Dual-Codes,
schwarz, Punkt ein Punkt, JBG
entspricht schwarz, Punkt ein Punkt, JBG Jetzt müssen wir dieses
Bild in ein Graustufenbild umwandeln. Dafür werde ich Image at Function
verwenden. Zuerst
deklariere ich eine Variable Gray, der ich zugewiesen habe, ich rufe eine Funktion
C mit zwei Punkten IMRDImageRad Dann
nur innerhalb von UndressSF, um den nur In diesem Fall müssen wir
einen Wert angeben , der gleich Z ist. Dadurch kann jedes Bild
in ein Schwarzweißbild umgewandelt werden Jetzt müssen wir
dieses griskalische Bild
in ein Binärbild umwandeln dieses griskalische Bild
in ein Binärbild Dafür werden wir Threshool
verwenden. Geben Sie einen einzelnen Schwellenwert und dann einen
Befehlsschwellenwert ein und
geben Sie dann TH und eine weitere
variable Schubkraft ein S entspricht CV, zwei Punkte sind gleich. Dann müssen
Sie in dieser
Funktion zuerst das
Graustufenbild übergeben, dieses Bild Als nächstes müssen wir zu übergehen. Zuerst müssen wir den Thrash B
bestehen. Hier werde ich 100 bestehen Dann müssen wir die maximale
Gewinnstufe erreichen, die 255 ist. Dann müssen wir den
Typ übergeben, der binär ist. Ich gebe zwei Punkte
Thrash Trash Binary IN V ein. Dann verwende ich den Odd
Operator und hier gebe ich
CV ein, zwei Punkte unterstreichen
Forts, Beachten Sie diese Datei. Lassen Sie mich nun die
Schwellenwertfunktion erklären. Die Funktion CV
Two Threshold funktioniert so,
als ob der Pixelwert größer als ein Schwellenwert wäre, ihm wird einer zugewiesen ,
vielleicht weiß, sonst
wird ihm ein anderer
Wert zugewiesen, vielleicht schwarz. Im Grunde wird dieses Bild in ein
Schwarzweißbild umgewandelt. Ich möchte reines
Schwarzweißbild sagen. Sie können es binär
von einem Bild aus nennen. Das erste Argument
ist die Bildquelle,
bei der es sich um ein
Graustufenbild handeln sollte zweite Argument ist
der Schwellenwert
, der zur Klassifizierung
der Pixelwerte verwendet wird Wenn der
Pixelwert des Bilds kleiner als 100 ist, wird er auf Null gesetzt Wenn das Bildpixel
größer als 100 ist, heißt es 255. Wie Sie wissen, steht Null für schwarze Farbe und 255
für reine weiße Farbe. C zwei, im Score-Bereich binärer Uncode
IND ist ein Zeitschwellenwert. Das bedeutet, dass das ausgegebene
Binärbild die invertierte Farbe
hat und
OtsU verwendet wird die invertierte Farbe
hat und , um
automatisch das optimale ThessalvDO zu bestimmen automatisch Ich weiß, es klingt ziemlich technisch.
Mach dir darüber keine Sorgen. Mach einfach, was ich mache. Als Nächstes müssen wir die
Konduen finden. Jetzt ist die Frage,
was sind die Konduen? Condes kann
einfach als eine Kurve erklärt werden sich am konduzierten
Punkt mit der Grenze verbindet Farbe und
Intensität sollten gleich bleiben. Die Konduen sind ein nützliches
Werkzeug für die Formanalyse und Objekterkennung,
-erkennung und Menüführung Konturen bieten eine höhere Genauigkeit
bei der Verwendung von Binärbildern, und die Funktion Find Conduit benötigt insgesamt
drei Argumente Das erste ist das Quellbild. Die zweite ist ConturTrival, und die dritte ist
Konturapproximation
und Fun Condus gibt eine und Fun Condus Lassen Sie uns die Funktion verwenden. Zuerst
deklariere ich eine Variable, CNT ist gleich Condue
gleich CV, also ConduFine gleich CV, also ConduFine Dieser hier, gut, zählt. Dann müssen
wir innerhalb der RoundRessF das Quellbild übergeben, das ist Thrash
, dieses Bild ist Thrash
, dieses Ich kopiere diese Variable
und füge sie hier ein. Dann müssen wir
den Retrib-Mond passieren. Dafür verwende ich C
Two Dot ETR ist. Retv-Liste Und der dritte Wert ist die
Näherungsmethode. Dafür entspricht ihr Pass etwa einer Kette von zwei Punkten. Die
Stichprobenmethode besteht aus horizontalen, vertikalen und diagonalen Segmenten und lässt nur die Endpunkte übrig. Dies führt dazu, dass weniger Punkte im Speicher gespeichert
werden, was zur Vereinfachung der Darstellung von
Leitungen nützlich ist Dann innerhalb des Quadrats
gegen m, um minus zwei zu passieren. Dies wird verwendet, um Unterschiede in
den geschriebenen Werten der Methode
Cout fine conduce zu
behandeln den geschriebenen Werten der Methode
Cout fine conduce zu Es wird verwendet, um
Unterschiede in
verschiedenen Versionen von
Open C zu kontrollieren . In einigen Versionen gibt es insgesamt drei Werte zurück, Hierarchien und Bild zusammen,
und in einigen Versionen gibt
es insgesamt zwei Werte zurück, nur Inhalt und Hierarchien, und vor allem benötigen wir Konturen und Hierarchien es insgesamt drei Werte zurück,
setzt Hierarchien und Bild zusammen,
und in einigen Versionen gibt
es insgesamt zwei Werte zurück,
nur Inhalt und Hierarchien, und vor allem benötigen wir Konturen und Hierarchien. Wir brauchen keine Bilder. Deshalb verwendet Hero Slicing-Technik
minus zwei, weil wir nur
diese beiden Werte auswählen
müssen Conduct und Hierarchien suchen also nach dem Contest und speichern diese
Kontur im Jetzt müssen wir das Durcheinander
herausfiltern. Wir müssen diese
Kondue nach ihrer Region filtern. Wir müssen diejenigen
verwirren, deren Gebiet 3-20 ist. Ich möchte drei
und 20 Quadratpixel sagen. Nach dem Filtern dieses Kondukts müssen
wir dieses
Kontul in einer Variablen speichern Also lass uns den Filter holen. Also hier müssen wir
die Contube nach ihrer Fläche filtern. Also werde
ich zuerst eine Eins definieren. Dies ist unser erster Zubringerpunkt
, der drei Quadratpixel groß ist Lassen Sie uns diese Linie duplizieren, und das ist unser zweiter
Fühlpunkt, zwei
, der 20 Quadratpixel groß ist Jetzt werde ich eine leere Liste
erstellen, was X CNTs X
Contubes entspricht, es ist eine Und jetzt werden wir die Schleife durch
alle Konturen laufen lassen Schleife durch
alle Dafür verwende ich 44 CNT,
Contun conduce, für Conduce in Conduce variable is
with all the contes,
dann benutzt er im Herbst die dann E ist eins, I S eins
bedeutet Zustand eins,
drei Quadratpixel,
weniger drei Quadratpixel, Er verwendet die
Konturflächenmethode Konturfläche. Dann müssen
wir innerhalb der Runden die Kegel CNT passieren Ich meine, wenn jede der Konturen dieser Bedingung
entspricht, N Konturen und damit weniger als S zwei ist,
ich Bedingung zwei, mit der Bedingung
innerhalb dieser Spitze, möchte
ich
alle Konturen, die dieser
Bedingung entsprechen
, an diese Liste anhängen dieser
Bedingung entsprechen
, an diese Liste Im Grunde möchte ich
alle Tues in dieser Liste anhängen,
die dieser Bedingung entsprechen Hämo vom Typ N X führt die Append-Funktion durch. In der Durchlaufpresse werde
ich
die jeweiligen Leitungen passieren, CNP.
Das ist es. Lassen Sie uns nun dieses Formular erklären. Zuerst führe ich einen Follow für all diese Konturen durch, die wir in dieser Liste
speichern, tu list. Dann erfüllt jede Kontur diese
Bedingung
und die Bedingung ist, dass die Kontur zwischen
drei Quadratpixeln
und 20 Quadratpixeln liegt drei Quadratpixeln
und 20 Quadratpixeln Sie fügen dieser Kontur
mindestens X Konturen Und sie erschaffen den Dist. Jetzt müssen wir die
Länge des Kabels ausdrucken,
um zu sehen , wie viele davon in unserem Bild sind. Um das zu erreichen, drucken Sie außerhalb
der Angabe auf der Innenseite der runden
Messingstreifen, innerhalb der Doppelcodes, die
Gesamtzahl des Punktes
hämotypisieren Innenseite der runden
Messingstreifen, innerhalb der Doppelcodes, die
Gesamtzahl des Punktes hämotypisieren Und hier werde ich die Estring-Methode
verwenden. E-Zeichenfolge, dann
innerhalb der Flüche möchte
ich die
Länge dieser Liste ausdrucken Also verwende ich
die Längenfunktion AN und innerhalb der runden Aussparung übergebe
ich
die Liste . Ich werde
diese Datei einrichten Und bevor ich diesen Code ausführe, lassen Sie uns den Code überprüfen, ob ich einen Fehler
gemacht habe oder nicht. Ich denke, es ist in Ordnung. Ups, da ist ein Fehler. Ja, dieser Wir müssen diese Auswahl
außerhalb der runden Klammern platzieren. Also habe ich diesen Abschnitt abgeschnitten und ihn außerhalb der runden Klammern platziert Und ich werde diese Datei einrichten. Und nachdem ich diese Datei eingerichtet habe, lassen Sie uns den Code ausführen und sehen
, ob es richtig funktioniert oder nicht. Um diesen Code auszuführen, beträgt
die Gesamtzahl der
schwarzen Punkte,
wie Sie sehen können , 23. Es hat also perfekt funktioniert. Wir haben also insgesamt 23
schwarze Farben auf dieser weißen Fläche gefunden. Ich hoffe, jetzt ist es für Sie klar wie wir mit Python
Open C schwarze Punkte auf
weißer Oberfläche zählen können . Mit diesem Programm können
Sie schwarze Punkte zählen. Sie können auch
die weißen Punkte zählen. Lass es mich dir zeigen.
Wie Sie sehen können, haben
wir ein weiteres Bild in meinem
aktuellen Arbeitsverzeichnis. Dieses Bild hat einen
schwarzen Hintergrund, und auf diesem schwarzen Hintergrund haben
wir weiße Punkte, aber wir haben Hunderte
von weißen Punkten, und die Größe der weißen Punkte ist unterschiedlich. Ein weißer Punkt ist fast
drei Quadratpixel groß und ein weißer Punkt ist
fast 20 Quadratpixel groß Wir müssen sie alle zählen. Lassen Sie uns den Studio-Pod des Benutzers leiten. Wie Sie in meinem
aktuellen Arbeitsverzeichnis sehen können, haben
wir dieses Bild,
weiße Punkte zusammenfügen. Zuerst kopiere ich den Dateipfad, andernfalls die Datei in. Dann werde ich den Dateipfad
ersetzen, also werde ich diese Zeile
duplizieren und die vorherige Zeile
kommentieren
und diesen vorherige Zeile
kommentieren
und weißen Punkt
im PNG-Format ersetzen. Als Nächstes ändere ich die
Gesamtzahl der weißen Punkte. Ja, außerdem werde ich dasselbe Programm
ausführen, aber nur um eine Sache zu
ändern. Diesmal
brauche ich diese Umkehrung nicht. Ich brauche nur Thresh Bind. Also werde ich
diese Zeile duplizieren und die vorherige
auskommentieren und INV entfernen Wir brauchen nur Thresh Bind und ich werde diese Datei einrichten Richten Sie diese Datei ein. Wenn ich diesen Code in meinem Terminal ausführe,
schauen wir uns an, was er geschrieben hat. Führen Sie diesen Code aus, da Sie die
Gesamtzahl der weißen Punkte sehen können , 583 So können wir also auch den weißen Punkt
zählen. Wir müssen nur
den Thrash-Bind ändern. Wenn du
den schwarzen Punkt zählen willst, musst du
den Thrash-Bind umkehren,
und wenn nicht, dann musst du ihn
auch nicht invertieren und wenn nicht, dann musst du ihn
auch nicht Das ist es also für dieses Tutorial. Vielen Dank, dass Sie sich
dieses Video angesehen haben. Seien Sie gespannt auf das nächste Tutorial.
22. Rechteckige Formen zeichnen und Objekte extrahieren: Hallo Leute. Schön
dich wieder zu sehen. Ich bin wieder mit
einem anderen offenen Python-CP-Projekt zurück, und in diesem Projekt werden
wir
eine rechteckige Form zeichnen und ein Objekt mit
Python Open Civing
extrahieren Lassen Sie mich Ihnen
die Demonstration zeigen. Wie Sie sehen können,
öffne ich hier das Fenster von Cat Image. Jetzt wähle ich einen
Bereich dieses Bildes aus. Ich lobe Lip Click and
Release an dieser Position. Wie Sie sehen können,
entsteht hier eine rechteckige Form. Und wenn Ihre Auswahl nicht gut
ist, können Sie
auch das Fenster wiederherstellen. Sie können das Fenster auch zurücksetzen, Sie müssen R drücken Auch hier können Sie
diese Auswahl treffen. Und wenn Sie der Meinung sind,
dass Ihre
Auswahl gut ist müssen Sie das
Schlüsselwort C auf Ihrer Tastatur
drücken Dadurch
wird dieser Abschnitt zugeschnitten und in einem neuen Fenster angezeigt. Wie Sie sehen können,
malt Harry das Bild zu, und das
Bild wird in diesem Fenster angezeigt. Wenn Sie dieses Fenster beenden
möchten, drücken Sie
einfach Q, um das Programm zu
zitieren Und um das Programm auszuführen, werden
wir das gemeinsame
Zeilenargument verwenden Das werden wir
in diesem Projekt erstellen. Fangen wir also mit dem Praktischen an. Hier werden wir
einen Python-Code schreiben , der es dem Benutzer ermöglicht
, einen Teil eines Bildes auszuwählen und zuzuschneiden, indem ein Rechteck
mit Hilfe von Mausknoten
zeichnet. Zuerst müssen
wir Module importieren. Zuerst importiere ich
OpenCV,
Soundtyp CV Soundtyp CV Dann werde ich
ein anderes Modul importieren, das Arc Perse ist Ich werde
Import Rc parts eingeben. Also, was ist die Verwendung
des Rc-Peruse-Moduls? Das Modul Rc peruse wird verwendet, um
Befehlszeilenargumente zu verarbeiten Keine Sorge, wir werden
später mehr darüber erfahren. Lassen Sie uns nun die
Liste der Referenzpunkte initialisieren. Hier werde ich eine
leere Liste erstellen und dafür diesen Variablennamen RF Underscore-Referenzpunkt Der Referenzpunkt, der diesem
entspricht, ist eine leere Liste. Dann deklariere ich
eine weitere Variable Crop, standardmäßig ist Cp gleich Fs. Dieser Zustand ist Forbs. Die
Referenzpunktvariable ist eine leere Liste. Welches wird
den Startpunkt und den
Endpunkt des Rechtecks speichern . Und Crop ist der boolesche Wert, der verwendet wird
, um zu verfolgen, ob der
Zuschnitt gerade erfolgt Als Nächstes verwenden
wir die Maus-Event-Funktion, die die Mausklicks verfolgt Dafür werden wir
im Grunde zwei Mausereignisse verwenden,
nämlich Lap Bottom
Down und Lap Bottom Up, und wir werden
dieses Mausereignis
in einer Funktion verwenden . Hem Drew deklariert die Funktion F und unser Funktionsname
ist Shape Selection Die Auswahl der Form liegt unter dem Gültigkeitsbereich. Formauswahl innerhalb
der runden Kleider. Zunächst wird das Ereignis
als Parameter verwendet. Hier müssen wir die Veranstaltung bestehen. Event, dann
müssen wir Xxs und YxS bestehen. Als Nächstes werde ich die Flaggen
weitergeben. Endlich werde ich
das Muster bestehen. In dieser Funktion
müssen wir diese beiden Variablen verwenden. Hier werde ich
diese beiden Variablen
als globale Variablen deklarieren , einige geben einen globalen Referenzpunkt und die nächste Variable ist Crop. Wenn die
Maustaste zu spät gedrückt wurde,
notieren Sie sich die
X-Startkoordinaten und
Y-Koordinaten und geben Sie an , dass der Zuschnitt
gerade erfolgt Ich möchte sagen, wenn ich auf die
Lap-Taste im Fenster
klicke, wird der rechteckige
Startpunkt übernommen Also müssen wir das
IP-Bedingungsereignis
verwenden , das dem hier verwendeten
Mauslippentasten-Ereignis entspricht . Ich gebe C mit zwei
Punkten als Unterstrich ein,
und ich
verwende Lippentaste nach unten Ereignistaste runter, diesen In dieser IP-Bedingung gebe
ich dann den
Referenzpunkt als
Wellenreferenzpunkt an, der hier innerhalb der Quadrate innerhalb der Runden den ersten Wert
eingibt Der erste Wert ist X, Y. Hier verwenden wir if event equal equal
to let button down,
dann nimmt es
die Xxs und YX und
koordiniert sie und speichert sie
in Jetzt müssen wir auch den Endpunkt für diese Ellipbedingung vom Typ
Saum ermitteln Andernfalls, wenn das Ereignis gleich Go ist. Dieses Mal verwende ich Lebenslauf mit
zwei Punkten,
geraden Unterstrich, und dieses Mal verwende ich Lippentaste, P-Taste Ich meine, wenn wir
die überlappende Taste loslassen ich
dann
den Endpunkt des Rechtecks nehmen möchte, um die Koordinate
zu erfassen, müssen
wir Wir müssen einen
weiteren xs-Punkt
und einen YxS-Punkt an diese leere Liste anhängen und einen YxS-Punkt an diese leere Liste anhängen Dafür gebe ich
Referenzpunkt Punkt Apen ein. Als du die Runden gesagt hast, werde
ich
die Koordinaten übergeben,
Koordinaten von X YX Jetzt können wir ein
Rechteck zeichnen, weil wir jetzt den Startpunkt
und die N-Koordinaten
haben Ist die Funktion und
außerhalb der Bedingung werde
ich das Rechteck zeichnen. Geben Sie also C ein Rechteck mit zwei Punkten. Dann müssen
wir innerhalb der Runden
in unserem ersten Parameter das Bild übergeben Im zweiten Parameter müssen
wir die erste Koordinate übergeben Xx-Koordinate und
Y-Überschusskoordinate zusammen. Um die erste Koordinate auszuwählen, werde
ich den
Referenzpunkt-Referenzpunkt verknüpfen In der quadratischen Resis werde
ich beim
ersten Blick schlafen Also werde ich Null überschreiten. Und dann gebe
ich beim Cooma wieder Referenzpunkt In der quadratischen Resis werde
ich an einem vorbeigehen. Es wird
die zweite Ansicht ausgewählt. Wo Sie bereits speichern, koordinieren
sich Ss und Xs. Danach müssen wir
die Farbe auswählen, die Farbe des Rechtecks. In den runden Kleidern müssen
wir die
Farbe im GR-Format angeben. Bei Blau gehe ich
auf Null. Für Grün
werde ich 255 überschreiten. Und für Rot
werde ich wieder Null überschreiten. Im Grunde möchte ich grüne Farbe. Dann müssen wir
die Dicke des
rechteckigen Randes weitergeben . Ich werde zwei bestehen und dann werde
ich das
Rechteck in diesem Bild zeigen. Dafür verwende ich die IMS-Methode, manchmal CV mit zwei Punkten, dann drücke ich
in der Runde,
ich gebe den doppelten Code ein, ich
muss
den
Fensternamen übergeben, der Bild ich gebe den doppelten Code ein, ich
muss
den
Fensternamen übergeben, der Dann müssen wir die Bildvariable übergeben
. Bild. Wir schreiben eine
Mausereignisfunktion , die den Startpunkt des
Rechtecks und den
Endpunkt des Rechtecks erfassen Rechtecks und den
Endpunkt des Rechtecks und auch ein
Rechteck auf ein Bild zeichnen kann. Und jetzt müssen wir
den Argumentparser konstruieren und das Argument
analysieren Ist die Funktion. Zuerst werde ich eine Variable namens AP
deklarieren. AP entspricht Heard
Ich werde
dieses Modul Arc
Parse Typ R Parse nennen dieses Modul Arc
Parse Typ R Parse Von hier aus werde
ich eine Funktion
namens Argument
Parser ausführen . In der nächsten Zeile werde
ich das Argument analysieren. Dafür gebe ich hier
AP Punkt ein und verwende einen anderen
Funktionsaufruf add argument Fügt ein Argument mit Unterstrich hinzu. Fügen Sie ein Argument innerhalb
der Rounder hinzu . Hier müssen wir zuerst einen Bildschirm
übergeben Wer wird als
Name arbeiten, sonst Flachs. Innerhalb des doppelten Kurses werde
ich bestehen. Und außerhalb des Zitats müssen
wir
dasselbe Argument weitergeben Innerhalb des doppelten Kurses werde
ich das Bild weitergeben. Com, dieses Argument
ist sehr wichtig, also werde ich es erforderlich
machen. Erforderlich, entspricht wahr. Und um
die Zeile zu verstehen, werde
ich auch tippen
und verstehen
, zu welchem Zweck
ich diese Zeile tippe. Ich werde eine Hölle hinzufügen. tippe gleich wie im Ich
tippe gleich wie im Doppelkurs. Das ist der Pfad zum Bild, also gib Pfad zum Bild ein. Keine Sorge, ich werde es Schritt für Schritt
erklären. Als Nächstes müssen wir das Argument
analysieren. Dafür gebe ich
eine weitere Variable args ein. Args entspricht, ich
rufe eine Funktion namens words auf. Wörter innerhalb des runden
Kleides Ich werde einen passenden Parse-Arc
übergeben Ich werde eine
Funktion parse arc aufrufen. Lassen Sie mich
Ihnen jetzt erklären, was das ist? Warum ich diese Funktionen verwende. Im Grunde ist es die Konstruktion eines Argumentparsers unter Verwendung
der Arc Peruse-Bibliothek Zunächst erstellen wir hier
ein Argument-Parser-Objekt. Das Initialisierungs- und
Argumentparser-Objekt, das die Übergabe der
Befehlszeilenargumente an
das Skript übernimmt Befehlszeilenargumente an Als Nächstes fügen wir ein Bildargument hinzu. I und Image,
das sind die kurzen und langen
Optionen für das Argument. Der Benutzer kann entweder angeben,
wenn er das Skript ausführt, und dann übergeben wir required true. Das bedeutet, dass das
Argument obligatorisch ist. Wenn der Benutzer den
Bildpfad nicht angibt, das Skript
einen Fehler aus. Als Nächstes übergeben wir L das
im Grunde die
Beschreibung eines Arguments liefert, und in der nächsten Zeile analysieren
wir das Argument Zuerst sprechen wir
über Apt Pass Rg. Diese Methode analysiert das
gemeinsame Zeilenargument und gibt ein Objekt zurück Dann verwenden wir eine Funktion
namens Vers. Die Vers-Funktion konvertiert Parse-Argument
in ein Wörterbuch Sie können einfach über den Namen des Arguments auf den
Wert zugreifen. Wenn wir dieses
Skript von unserem Terminal aus ausführen,
können wir grundsätzlich den Pfad eines Bildes direkt angeben. Und jetzt müssen wir
das Bild laden und klonen. Außerdem müssen wir
die Maus-Globe-Funktion einrichten. Lassen Sie mich Ihnen zeigen, wie
Sie das Bild laden Ich werde ein Bild mit
variablem Namen erstellen. Bild entspricht. Hier werde ich das Bild
mit der Bildlesefunktion lesen. Also tippe v zwei Punkte
Bild gelesen, ich bin gelesen. Dann müssen wir in den runden Pressen den Pfad zur
Bilddatei
angeben , um das Bild zu lesen. Aber wie ich Ihnen bereits sagte, werden
wir den Dateipfad als Argument
übergeben ,
wenn wir dieses
Skript ausführen, und das haben wir bereits mit der
Arc-Purse-Methode gemacht der Arc-Purse-Methode übergebe
ich RCs also übergebe
ich RCs diese Variable und innerhalb
der quadratischen Aussparung müssen
wir das Bild übergeben Dann klone ich dieses Bild,
also gebe ich einen weiteren
variablen
Klon ein, der der Funktion
zum Kopieren von Bildpunkten entspricht zum Kopieren von Bildpunkten Als Nächstes weise ich diesem Bild einen
Fensternamen zu. Geben Sie also CV ein, um Fenster, Fenster und
Fenster zu benennen. In der Runde
werde ich das Bild mit dem
gleichen Namen weitergeben Und jetzt werde ich die
Maus-Callback-Funktion einstellen. C V Mausrückruf mit zwei Punkten. Innerhalb des Run-Prozesses müssen
wir zuerst das
Fenster übergeben, in welchem Fenster ich den
Maus-Callback einstellen möchte, nämlich das Bild Dann müssen wir ein Ereignis aufrufen,
in dem wir das Ereignis
aufrufen möchten, und ich möchte
dieses Ereignis Shape Selection nennen Kopieren Sie den Namen des Events
und fügen Sie ihn hier ein. Lassen Sie uns nun überprüfen, ob
es richtig funktioniert oder nicht. Hier tippe ich
C zwei, Punkt, Zifferntaste. In der Runde werde
ich
Z bestehen und außerdem werde ich alle Fenster
zerstören. Ich gebe C mit zwei Punkten ein und
zerstöre alle Fenster. Fügt Code in mein Terminal ein. Wie Sie sehen können, habe ich die Schreibweise von nicht
falsch verstanden. Es ist E, nicht A. Ich
werde diese Datei einrichten. Wenn ich diesen Code in meinem
Terminal ausführe, wird, wie Sie sehen, ein Fehler zurückgegeben weil Harry das Argument nicht
weitergibt. Aber wenn ich das Argument übergebe, möchte
ich das
Befehlszeilenargument sagen. Wenn ich das
Befehlszeilenargument übergebe, gebe
ich das Skript
ein, einige, um das Skript auszuführen,
andere geben Python ein. Space, der Dateiname M Punkt Pi. Dann gebe ich ID ein. Als Nächstes werde ich den FlePat
bestehen Wie Sie sehen können, ist unser
Dateipfad Cat Two Dot JPG. Hier werde ich Cat Two Dot JPG
eingeben. Dann drücke ich die Eingabetaste. Nachdem ich die Eingabetaste gedrückt habe,
glaube ich, dass ein Fehler vorliegt. Es liegt immer noch ein
Fehler vor. Aber es funktioniert. Wie Sie sehen können, kann ich die Rechtecke
zeichnen. Wie Sie sehen,
steht es in Index Error,
Least Index Out of
Fringe, Zeile 18. Erstens, um das Problem zu lösen. Ich werde
dieses Terminal löschen und dann in
die Zeile Nummer 18 springen. Ja, ich glaube, ich habe das Problem
erkannt. Das Hauptproblem besteht darin, dass wir diese beiden Linien innerhalb
des Lippenzustands
verschieben müssen , nicht außerhalb des Lippenzustands. Also verschiebe ich sie innerhalb der Lippenbedingung und
setze diese Datei erneut ein. Wenn ich einen anderen
Code in meinem Terminal suche, wird ein Fehler ausgegeben Aber wenn ich Python binde, wenn ich das
Befehlszeilenargument
main dot pi I übergebe , dann übergebe ich den Bildnamen
gat two dot JPG, ich drücke Enter. Wie Sie sehen können, funktioniert es dieses Mal perfekt und es gibt keinen
Fehler, und wie Sie sehen können, können wir mit unserem Cursor immer noch Rechtecke
zeichnen. Unsere Mausereignisse funktionieren perfekt und es wird kein
Fehler in unserem Terminal ausgegeben. Wie Sie sehen können, können wir mehrere Rechtecke
zeichnen. Dann klicke ich mit der Maus, nehme
ich als Startpunkt und wenn ich die Maustaste
loslasse, hauptsächlich den Linksklick,
dann wird der Release-Punkt
als Endpunkt des Rechtecks
angenommen als Endpunkt des Rechtecks Wir haben unsere 80% der Arbeit erledigt. Jetzt müssen wir
den Auswahlbereich
dieses Bildes zuschneiden . Lass es uns machen. Ich werde auch
das Terminal lesen, ich werde beide Zeilen
auskommentieren, sonst können
wir es auch entfernen. Jetzt lasse ich eine Schleife laufen, in
der
das Bild unendlich angezeigt wird ,
bis wir Q loben. Hier gebe ich Datei ein
. Zwei. Dann werde ich
im Value zuerst
das Bild anzeigen und auf den Tastendruck warten Dafür bin ich Typ V zwei, ich bin so Methode, ich bin so Dann werde
ich in den runden Kleidern das Bild mit dem
Fensternamen weitergeben. Außerdem werde ich
das Quellbild übergeben , das in einem Bild mit
variabler Bildgröße gespeichert
ist. Als Nächstes weise ich
eine Variable namens key zu. Taste entspricht CV mit zwei Punkten, Nasstaste. In den Rundenpressen werde
ich eine bestehen. Jetzt lautet das Zitat: YI pass eins. Es wird eine Millisekunde auf das zentrale
Lob warten. Wenn ein Schlüssel gelobt wird, hat
er den
Schlüsselcode erfasst. Damit gebe
ich einen Bite weiter, einen bitweisen Code, Null X wenn H.
Diese bitweise Operation stellt sicher, Diese bitweise Operation stellt sicher dass nur die letzten Stellen Sie am besten die
plattformübergreifende Kompatibilität für die Erfassung der Schlüsselcodes ich jetzt
das Rechteck erstellt Wenn ich jetzt
das Rechteck erstellt habe und das Schlüsselwort drücke, möchte ich das Fenster zurücksetzen Dafür müssen wir eine
Bedingung sehen. Wir müssen die IP-Bedingung festlegen. Wenn Sie den Schlüssel eingeben,
wie ich Ihnen gesagt habe , wird
der Schlüsselcode erfasst. Taste gleich ihr, um eine Funktion namens ORD
auszuführen, oder
innerhalb der Dugal-Codes,
R-Taste, dann innerhalb
der IP-Bedingung, ich möchte das Bild klonen Ich gebe
Bild ein, das dem Klonen entspricht. Punktkopie. Als nächstes, wenn ich C bestehe, dann will ich die Schleife durchbrechen. Hämatyp-Bedingung, LC K
entspricht ORD, steht an der Roundres
steht an der Anführungsstelle,
C, dann unterbreche die C, dann unterbreche Pause. Jetzt ist die Frage, was ist die RD-Funktion? ORD-Funktion wandelt
das R-Zeichen, andernfalls das C-Zeichen in ein AI V um. Ich erlaube den Vergleich
mit dem Tastencode, Sie aus
der Wek-Funktion erfassen. Jetzt müssen
wir außerhalb der Y-Schleife das Bild zuschneiden. Auch dafür verwende
ich die Konditionierung. Also root ich hier, ich möchte
die LEN-Funktion AN
innerhalb der runden Strophen aufrufen , ich werde den
aufgerufenen Referenzpunkt verwenden. Ich kopiere diesen Referenzpunkt und füge ihn in
die Len-Funktion ein. Wenn die Länge dieses
Referenzpunkts gleich zwei ist, fügen Sie die Bedingung ein. Schneide das Bild zu. Geben Sie also
Variabel ein, schneiden Sie das Underscope-Bild Bild zuschneiden entspricht zwei, und hier verwende ich das
Klonbild Ich werde
diesen Variablenklon kopieren. Dann steht im Quadrat, dass wir die Position
des Zuschnitts definieren müssen. Aber lassen Sie mich erklären, was ein Bezugspunkt
gleich zwei ist. Warum ich diese Bedingung verwende. Der Benutzer drückt die Auswahl
des Bereichs nach oben und erstellt
das Rechteck. Anschließend
drückt er C, um die Schleife zu unterbrechen. Der Code,
der den Referenzpunkt überprüft ,
hat zwei Werte oder nicht, und die beiden Werte stehen für den Startpunkt und den
Endpunkt des Rechtecks. Dann müssen
wir anhand des Klonbilds den
Zuschneidebereich definieren, um das Bild zuzuschneiden Wir werden die
Slicing-Technik verwenden Hier Imo-Typ, Referenzpunkt R, Unterstrichpunkt
ist bei den Quadraten, ich übergebe Null Andererseits verwende ich
Square Resis, hier
übergebe ich eins Dann werde ich Colon verwenden. Keine Sorge, ich werde
die Punkte erklären. Auch hier gebe ich
Referenzpunkt ein. Ist das die quadratische Adresse,
dieses Mal werde ich eins und eins
weitergeben. Was den nächsten Wert angeht, werde
ich als Gras durchgehen. Bezugspunkt, ich
am Quadrat Resis, werde
ich Null überschreiten Außerdem werde ich Null bestehen. Doppelpunkt, Bezugspunkt
innerhalb des Quadrats s ist Helm, um
eins zu übergeben , und dann innerhalb der Quadrate
übergebe ich Null. Lassen Sie mich nun die Koordinate
dieser Schnitttechnik erweitern. Diese Auswahl dient zur
Höhenauswahl. Es wird das
Gebiet aus der YxS-Richtung auswählen. Es ist Arbeitsreihe. Es wird aus dem YXS-Punkt und
dem abschließenden
YXS-Punkt ausgewählt und die nächste
Auswahl gilt für spaltenweise Es wird die Breite auswählen. Zuerst wird der
Start-XX-Punkt
ausgewählt und dann werden
Sie den XS-Endpunkt
auswählen. Dann werde ich dieses Zuschneidebild
mit
IMSHOFunction in einem neuen Fenster
anzeigen mit
IMSHOFunction in einem neuen Fenster Hier gebe ich cv two dot Imo in der Ausführung ein. Drücken Sie zuerst vollständig, um den
Fensternamen Crop Image zu übergeben Unterstrich-Bild zuschneiden, Komma, dann übergebe ich
das variable Zuschneidebild, genau
den Bereich, den ich zeigen möchte, und außerdem werde ich ct C
two wet key Heunpass Zero ausführen two wet key Heunpass ich das innerhalb
der IP-Bedingung hochmache, zerstöre Wenn ich das innerhalb
der IP-Bedingung hochmache, zerstöre
ich Dafür tippe ich CV auf Punkt
, zerstöre alle Fenster Das ist es. Ich werde
diese Datei einrichten. Lassen Sie uns nun die Datei einrichten und wenn ich diesen Code
direkt in meinem Terminal ausführe, wird
,
wie Sie wissen, ein Pfeil geworfen. Ich werde diesen Code
von der Befehlszeile aus ausführen. Zuerst gebe ich Python space, fine name main dot pi
dot pi space I space I space, und dann müssen wir den Dateipfad
angeben
, der Cat Two Dot JPG ist. Wenn ich die Eingabetaste drücke, wird, wie Sie
sehen können, das Bild angezeigt. Jetzt wähle ich einen Bereich
aus diesem Bild aus. Ich werde auswählen, dass dies unser Startpunkt und
dies unser Endpunkt ist. Ich wähle diesen Bereich aus.
Ich glaube, mir gefällt diese Auswahl nicht. Ich möchte diese Auswahl entfernen. Wie Sie wissen, verwenden
wir dafür bereits einen Kort
, der R ist. Wenn ich RKOD
drücke, wird die Auswahl
entfernt Wenn ich das
Bild mehrmals auswähle, auch wenn ich auf R
klicke, wird diese Auswahl
entfernt Aber wenn ich den
Bereich ausgewählt habe, lobe ich
C, dann schneidet
es, wie Sie sehen können, diesen Abschnitt zu und
zeigt ihn in einem neuen Fenster an. So hat es funktioniert. Ich
hoffe, jetzt ist dir klar, wie wir diesen erstellen können. Danke, dass du dir dieses Video Bleib dran für das
nächste Tutorial.
23. Texterkennung und Extraktion mit OpenCV und OCR: Hallo, Leute. Schön
, dich wieder zu sehen. Ich bin wieder mit einem anderen projektbezogenen offenen
Python-Lebenslauf zurück. Und in diesem Projekt werden
wir die
Erkennung und Extraktion von Takes
mit Python Open CV durchführen . Da wir die Hilfe von ORC in
Anspruch nehmen werden. Ich möchte Tsar ORC sagen. Wie Sie in unserem
aktuellen Arbeitsverzeichnis sehen können, gibt es ein Bild mit
dem Namen Simple Dot JPG Wenn ich dieses Bild öffne, wie Sie auf diesem
Bild sehen können, haben wir Text. Wir haben einen Satz.
Das ist ein einfacher Text. Außerdem hast du noch einen Satz. Der Text hat einen anderen Grund. Und jetzt müssen wir
den Text aus diesem
Bild extrahieren und ihn in einer Textdatei
speichern, um den Text
zu extrahieren.
Wir werden die Hilfe von Tsar Oc in Anspruch nehmen Lassen Sie uns nun sehen, was Tsar Os ist und wie wir
es in unser lokales System herunterladen können Bevor wir mit
unserem nächsten Projekt beginnen, müssen
wir Tsar OC herunterladen und
es auf unserem lokalen Computer installieren Öffne Google und
suche nach Desert OC. Dann wird ein
Link bereitgestellt und Sie müssen
auf den ersten Link klicken : TesArc
OpenSourceOC Aber bevor ich diesen Link öffne, lassen Test ist eine optische
Zeichenerkennung
für verschiedene Betriebssysteme Es ist eine kostenlose Software, die
unter der Apache-Lizenz veröffentlicht wurde. Im Grunde handelt es sich um eine optische
Zeichenerkennung. Damit können wir
Text aus einem Bild extrahieren. Bevor wir das Projekt starten, müssen
wir es auf
unserem lokalen Computer installieren. Ich werde
auf den ersten Link klicken. Es wird auf
eine Github-Webseite umgeleitet. TaseRecoc ist ein gängiges Tool. Wir können es durch unsere
gemeinsame Palette laufen lassen und damit Text
aus einem Bild extrahieren Jetzt müssen Sie in
den Installationsbereich springen, ein wenig
nach unten scrollen, und hier können Sie diesen
Abschnitt, Tresorat installieren, sehen Dann müssen Sie das Binärpaket
TrasaTypBuild
installieren .
Klicken Sie einfach auf diesen Link Es wird auf diese Seite weitergeleitet. Auf dieser Seite finden Sie die verschiedenen Versionen
dieses Traseracts Sie können auch verschiedene
Betriebssysteme finden. Ich bin Windows-Benutzer, also suche ich nach Windows. Wenn Sie Mcuser sind, verwenden Sie diesen Link. Ich bin also
ein Windows-Benutzer Deshalb springe ich
in diesen Abschnitt. Dann müssen Sie
auf diesen Link klicken, Taser at UB Minh Wenn Sie auf diesen Link klicken
, wird 32 Bit bereitgestellt. Da es 64 Beat bietet. Ich klicke auf diesen Link und er
leitet zu dieser Seite weiter. Ich verwende ein
64-Bit-Betriebssystem, also werde ich auf
diesen Link klicken Tsat ORC, W Ich möchte auf diesen Link klicken
und mein Download wird gestartet. Nachdem Sie den Download abgeschlossen
haben, müssen Sie den Ordner öffnen und ihn
wie andere Software installieren. Dann können Sie es direkt öffnen. Andernfalls können Sie
es als Administrator öffnen. Dann müssen Sie die Sprache
auswählen, dann auf Weiter klicken und Sie müssen diesem einfachen
Vorgang
folgen. Weiter Als nächstes mischen. Ich stimme zu. Ich möchte es für jeden
installieren
, der den Computer benutzt, also klicke ich auf Weiter und drücke
dann einfach auf Mix. In diesem Abschnitt können
Sie auch
den Zielordner auswählen und ich werde ihn so lassen, wie er ist. Dann klicke ich auf Installieren und starte
den Installationsvorgang, und unsere Installation
ist abgeschlossen. Ich klicke erneut auf Weiter
und dann auf Fertig stellen. Dann müssen wir
den Installationsordner finden. Ich klicke, also klicke ich auf Crve und dann springe ich
zu den Programmdateien Sie können sehen, dass wir den
Ordner mit dem Namen TsarCorc gefunden haben. Wenn Sie diesen Ordner öffnen, finden Sie
hier alle
notwendigen Dateien für Trasact Dann zurück zur
Programmdatei und zuerst werde
ich den
Namen dieses Ordners ändern Ich möchte es nur Tsat nennen. Ich werde
Dash und ORC entfernen. Ich versuche es Tsar zu nennen. Und dann habe ich diesen Namen gesagt. Jetzt müssen wir
diesen Ordner ag öffnen und ich werde den Speicherort
der Datei kopieren. Ich klicke auf diesen Dateipfad und
kopiere einfach diesen Dateipfad. Dann müssen Sie diesen
Dateispeicherort zu Ihrem Pfad hinzufügen. Suchen Sie dazu nach PAT und Sie müssen diese
Umgebungsvariablen öffnen. Klicken Sie dann einfach auf
Umgebungsvariablen und Sie müssen
den PT-Bereich auswählen. Dann einfach und füge einen neuen Pfad hinzu. Jetzt müssen Sie
den Tsat-Dateipfad einfügen. Stellen
Sie diesen ein, dann müssen Sie Ihre
Windows Power Shell öffnen und Tsat binden DER WEISE REAKTOR. Tasert Bindestrich Bindestrich Hallo. Wenn ich die Eingabetaste drücke,
schauen wir mal, was zurückgegeben wird. Wie Sie sehen können, funktioniert es. Von dieser Befehlszeile aus können
Sie
Desarat direkt verwenden und
Text aus einem Bild extrahieren Aber wir werden die Programmiersprache
Python verwenden und ein ausgeklügeltes Programm
erstellen. In diesem Abschnitt erfahren wir,
wie wir Disac installieren und wie wir es als
Umgebungsvariable festlegen können Wir werden
Dsarec mit Python verwenden. Außerdem müssen wir
ein Modul installieren, also Tie P, Space Pi Desert,
PI TeS E RA CT
installieren PI TeS E RA CT Es ist kein Sat, es ist Tsat. Ich werde
R entfernen und durch
T ersetzen . Dann installiere dieses
Modul einfach in deinem lokalen System Es ist für unser
Projekt notwendig. Ich habe Enter gedrückt. Nachdem Sie die Eingabetaste gedrückt haben,
wird, wie Sie sehen können , dieses Modul heruntergeladen und in
unserem lokalen System installiert. Also, nachdem Sie TsaicOS installiert und als Umgebungsvariable festgelegt Damit installieren wir bereits
ein Modul, nämlich Pitste. Mit Hilfe des
Pitsact-Moduls können
wir Tsaric-Funktionen
in unserer Python-Datei ausführen Lassen Sie uns also zunächst die Module
importieren. Zuerst müssen wir das OpenCV-Modul
Stipe
importieren und CV zwei importieren Dann importiere ich das Pisact-Modul
Styimport Pi Tsat. Dann müssen wir
den Tasaic-Standort in
unserem lokalen System angeben und wir installieren
Tsaric in unserem Um also den Namen
dieses Poa weiterzugeben, der Tsat ist. Geben Sie hier den Befehl
aus dem Pisaic-Modus ein. 40, pisacPitsac dot Auch hier werde
ich Pi tasact dot eingeben Dieses Mal werde ich einen Befehl Tsact
CMD ausführen. Tasert unterstreicht hier CMD,
wir müssen den Standort wir müssen Innerhalb des einzelnen Codes werde
ich
den Ordnernamen eingeben, der nur Taserc lautet
, nicht Tasaic über C. In einem kleinen Fall gebe ich Taser ein Wie Sie wissen, ist Tsarit ein Standardprogramm. Deshalb müssen wir den
Tsat-Befehl verwenden. Dann müssen wir das Bild lesen. In welchem Bild möchte
ich den Text extrahieren. Zuerst
deklariere ich eine Variable IMG
und G, die der
C-Zweipunkt-IMRT-Methode imRad entspricht Dann müssen
wir innerhalb der Rundstriche den Speicherort
der Datei angeben und unser Dateiname
ist Nachdem Sie das Bild gelesen
haben, können Sie dieses Bild
in ein Graustufenbild umwandeln auch Ja, wenn Sie
dieses Bild nicht in ein Graustufenbild konvertieren
möchten, können Sie
das Aber ich möchte
dieses Bild in ein Graustufenbild umwandeln dieses Bild in ein Graustufenbild umwandeln Ich werde eine
weitere Variable deklarieren. Grau, Grau, gleich
und von CV zwei, ich möchte zuerst die Methode
CVDL oder CVT color innerhalb
der Rundheit ausführen .
Wir müssen die
Variable übergeben, in der wir das Bild speichern, also IMG,
dann müssen wir CV
Two Dot Color Bsa an Grau, Farbiger Unterstrich, BGR an Grau übergeben Farbiger Lassen Sie uns nun das Bild in einem Fenster anzeigen. Dafür werde ich den
Lebenslauf mit zwei Punkten verknüpfen, ich bin so methodisch. Dann die Runden. Zuerst müssen
wir einen
Fensternamen übergeben, der einfach
D ist, und dann
müssen wir das
Quellbild übergeben, das grau ist. Als Nächstes möchte ich die
Wet-Key-Methode ausführen, CV zwei Wet-Key,
I, dass die runde Brass-Null Lassen Sie uns also den Code ausführen und sehen er dieses Bild in
Graustufen konvertiert oder Um diesen Code auszuführen, erstellen
Sie,
wie Sie sehen können, ein Terminal ,
das das farbige Bild
in ein Graustufenbild umwandelt das das farbige Bild
in ein Graustufenbild Jetzt müssen wir den Text aus
dem Bild extrahieren. Dafür müssen
wir eine Methode ausführen. Wir müssen eine Methode
vom Pi-Resurrect-Modul aus ausführen. Also mache ich zuerst
einen variablen Text, der entspricht, ich werde dieses
Modul Pi resurrect Pi resurrect von
Pi resurrect nennen ,
ich werde eine Funktion ausführen, die Bild zu Geben Sie also Bild ein. Unterstreichen, um einen Stream zu unterstreichen. Dieser, der letzte. Dann müssen
wir in den Rundenpressen den Dateipfad,
die Dateiquelle, übergeben , die grau variabel
ist. Jetzt werde ich beide Zeilen
auskommentieren, ich brauche diese
Zeilen nicht und ich möchte den Text an mein Terminal
anheften. Manche schreiben print
statement, print, sind die runden Kleider, ich möchte die
Textvariable übergeben. Bild-zu-String-Methode extrahiert den Text aus diesem Bild und setzt diesen Text in diese Variable. Lassen Sie uns also die Datei einrichten und diesen Code in meinem Terminal ausführen und prüfen, ob er
richtig funktioniert oder nicht. Nachdem ich diesen Code
in meinem Terminal ausgeführt habe, Text,
wie Sie sehen können, erfolgreich gedruckt
. Das ist einfacher Text. Der Text hat einen anderen Grund. Wenn ich diese Bilddatei öffne, können
Sie beide Texte sehen. Ich drucke so wie es ist. Es kann Großbuchstaben identifizieren, es kann
auch
Kleinbuchstaben identifizieren. Jetzt müssen wir diesen
Text in eine Dokumentdatei einfügen. Dafür werde
ich eine Datei öffnen. Zuerst werde ich eine Variable
deklarieren. Die Datei entspricht der Öffnung
innerhalb der Rundkleider. Zuerst müssen wir einen guten Namen
angeben, nämlich den Punkt PHD erkennen, und ich möchte diese Datei im
W plus-Modus öffnen, also gebe ich W plus ein Dann müssen wir
den Text in diese Datei schreiben. Also Five, Punkt, ich rufe
Right Function auf. Richtig. Dann werde
ich in
dieser Schreibmethode die Variable übergeben. Ich werde die
Variable übergeben, bei der es sich um Text handelt. Wie Sie wissen, ist es eine gute
Angewohnheit, wenn Sie eine Datei öffnen, außerdem müssen Sie die Datei schließen. Ich werde die Methode zum Schließen von
Dateipunkten eingeben. Also das ist es. Wenn ich diese Datei einstelle und diesen Code erneut
ausführe, können Sie
jetzt sehen,
dass
mein Terminal zuerst druckt, das ist einfacher Text. Dann können Sie auch mein
aktuelles Arbeitsverzeichnis sehen, es erstellt eine anerkannte
Punkttextdatei. Wenn ich diese Datei öffne, sehen
Sie hier denselben Text
, den wir
aus diesem Bild extrahieren. So können wir Pi
Resact und OpenCV zusammen verwenden und ganz einfach
Text aus einem Bild extrahieren Ich hoffe, jetzt ist es C für dich,
danke, dass du dir dieses Video
Stu für
24. Unsichtbares T-Shirt mit OpenCV: Hallo und willkommen zu einem weiteren
spannenden Open-CD-Projekt. Heute werden
wir in diesem Projekt ein unsichtbares T-Shirt kreieren. Lass mich dir
die Demonstration zeigen. Wie Sie sehen können, bin ich das und ich trage ein schwarzes T-Shirt. Und jetzt werde ich
mein unsichtbares T-Shirt mitbringen. Wie du sehen kannst, ist das
mein unsichtbares T-Shirt. Wenn ich dieses T-Shirt trage,
werde ich unsichtbar. Und du kannst das Bett auch durch dieses T-Shirt
hindurch sehen. Es ist für Coopeti unsichtbar geworden. Wie die
unsichtbare Uhr von Harry Potter haben wir unser T-Shirt unsichtbar gemacht Um diesen Effekt zu erzielen, nehme
ich ein
rotes T-Shirt. Du kannst auch grüne Farbe nehmen, sonst blau, aber
rote Farbe ist perfekt für mich. Und in vier Schritten werde
ich dieses Projekt kopieren. Bei SAS müssen wir den Hintergrundrahmen
speichern und erfassen. müssen wir
das rote Farbtuch
mithilfe eines Farberkennungs- und
Segmentierungsalgorithmus detailliert beschreiben mithilfe eines Farberkennungs- und
Segmentierungsalgorithmus Als Nächstes müssen wir eine Maske generieren und
die rote Farbe subtrahieren Schließlich
müssen wir das endgültige
Ergebnis generieren, in dem Sie
den magischen Effekt Lassen Sie uns, ohne Ihre
Zeit zu verschwenden, auf
den Computerbildschirm springen und das Protein starten Endlich sind wir in meinem
Ser Studio Code-Editor. Zuerst werden wir das Modul
importieren. Also tippe, importiere Lebenslauf zwei. Dann werde ich ein anderes Modul
importieren und ich werde das
NumPi-Modul importieren. Es ist notwendig Importieren Sie NumPi als NP. Zuerst müssen wir das Video
aufnehmen, und ich werde
das Video mit unserer Webcam aufnehmen Hier deklariere ich eine Variable namens Capture
Underscore Video Capture, Assign with, ich rufe eine Funktion
namens Videoaufnahme,
Cv Punkt Video Capture Cv Punkt Video Capture Wir sind bereits
mit dieser Funktion vertraut. Dann werde
ich innerhalb der runden Strophen die Null überschreiten. Jetzt stellt sich die Frage,
warum ich Null bestehe? Denn wenn wir Null überschreiten, können wir direkt
auf unsere Webcam zugreifen. Wir können direkt auf
unsere Standard-Webcam zugreifen. Wenn Sie mehrere Webcams haben und davon ausgehen, dass Sie drei
Webcams in Ihrem System haben, entsprechend Ihren Anforderungen können
Sie die Anzahl entsprechend Ihren Anforderungen ändern. Ich möchte meine
Standard-Webcam starten, sodass ich Null übergebe. Als Nächstes müssen wir unserer Kamera etwas Zeit
geben , um sie zu aktivieren. Ich werde das T-Modul verwenden. Er tippt, importiert, und
ich möchte die
Zeit- und Zeitpunktbelegungsmethode importieren . In der Runde gehe ich an einem vorbei Hier
verzögere ich unseren Code um 1 Sekunde. Dann werde ich eine Variable
deklarieren. Zuerst deklariere ich
eine Variable namens count, count assign mit Null. Dann möchte ich eine weitere Variable
namens background
deklarieren. Hintergrund mit Null a zugewiesen. Jetzt müssen wir
den Hintergrund erkennen. Außerdem müssen wir den Hintergrund
erfassen. Wir können
diesen Hintergrund leicht zum
Maskieren verwenden , um ihn zu erfassen Wir müssen eine Schleife
durch diese Variable laufen lassen Also hier verwende ich
for loop für I in range, und ich möchte den
Bereich auf 60 setzen Dann deklariere
ich in der For-Schleife eine Variable mit Buchstaben val, return,
underscore, value, val, comma Da ich diese
Variable namens Hintergrund verwenden werde möchte ich
die Funktion
Capture Dot Rt ausführen Capture Dot Video Tat und ich
möchte die Lesefunktion ausführen. Ich möchte das Video lesen
, das wir von unserer Webcam bekommen. Also Tyt Video, Lesemethode lesen. Dann werde ich eine IP-Bedingung
festlegen. Ich habe Vallow geschrieben, Val
ist gleich falsch geschrieben, dann möchte
ich innerhalb dieser IP-Bedingung diese Regel fortsetzen Fahren Sie fort. Es kann für dich ziemlich
verwirrend sein. Lassen Sie mich diesen
Code Schritt für Schritt erklären. Dieser flotte Do
Python-Code wird verwendet, um den
Hintergrundframe aus einem Video
aufzunehmen In unserem Fall werden wir dieses Video von der Webcam aus
lesen. Über eine bestimmte Anzahl von Frames, in diesem Fall 60 Frames. Dann geht es zur Verarbeitung
der Videoframes und extrahiert einen Hintergrundframe
für unsere weitere Aufgabe. Wir können diesen Frame für die
Hintergrundsubtraktion verwenden, andernfalls für Spezialeffekte
wie Greenscreen usw. Diese Schleife
wird zunächst 60 Mal ausgeführt,
was bedeutet, dass sich der Kern
im Dach befindet, wir führen sie für die ersten
60 Frames des Videos Dann führen wir hier eine Lesemethode Capture Video Dot Red Method. Es ist eine Methode von OpenCV, die einen Frame
aus einem Video-Feed liest Und die erste gut geschriebene
Variable zeigt an, ob der Frame erfolgreich
aufgenommen
wurde oder Es wird wahr geschrieben, wenn der
Frame erfolgreich gelesen wurde. Andernfalls
verfällt der geschriebene Wert, wenn er fehlschlägt. Dann kommt noch ein
variabler Hintergrund. Wie Sie sehen können,
deklarieren wir zuerst den Hintergrund für
Null. Diese
Hintergrundvariable wird
den eigentlichen Frame enthalten , den
Sie aus dem Video aufnehmen. Im Grunde genommen wird
es ein Bild aufnehmen, und dann vergleichen wir eine Bedingung wenn sie gut gleich
falsch geschrieben ist.
Dabei wird geprüft, ob der Frame erfolgreich aufgenommen
wurde. Schlägt Writed Writed fehl, springen
die Prographen zur
nächsten Iteration des Raums über Und wenn der Frame nicht erfasst
wurde, kann
der Continuous-Status die Ärmeren dazu veranlassen, den Rest des Loop-Codes zu überspringen und
die nächste
Iteration t zu
verarbeiten, um
sicherzustellen, dass nur erfolgreich
aufgenommene Frames berücksichtigt werden sicherzustellen, dass nur erfolgreich aufgenommene Und jetzt, außerhalb der vier Schleifen müssen
wir den Capture-Frame
umdrehen Im Grunde wollen wir den Capture-Frame
spiegeln. Andernfalls wird das entgegengesetzte Bild
zurückgegeben. Dafür werde ich den Hintergrund mit einer Methode
verknüpfen, die wir als Methode aus der von
NumPi Tie NP erlernten Flip-Methode bezeichnen NumPi Tie NP erlernten Flip-Methode Dann haben Sie gesagt, zuerst den
Run-Prozess, wir müssen die
Quelldatei bereitstellen, also den Hintergrund Wie Sie wissen, haben wir
den Frame in unserer
Hintergrundvariablen gespeichert . Um also Hintergrund und
Koma zu übergeben, müssen wir auch
Xs übergeben. X ist gleich Eins. Ich werde den Rahmen umdrehen. Um den Bildrahmen erfolgreich
umzudrehen, müssen wir
auch
den Videoframe umdrehen. Dazu
führe ich hier das aufgenommene Video von Roundreses aus, und hier
führe ich die Open-Methode Punkt ist geöffnet, und während Loop, Al Comma
geschrieben,
Bild, Heretical, eine
weitere Variable namens
image equal to capture
video dot read Mnood capture video punkt read Mnood capture
video punkt read for read das Video, möchte
ich das ganze Video wiedergeben Al Comma
geschrieben,
Bild, Heretical, eine weitere Variable namens
image equal to capture
video dot read Mnood capture video punkt read Mnood capture video punkt read for read das Video, möchte
ich das ganze Video möchte
ich Ich möchte das ganze Video filmen. Dann wieder werde
ich Hip Condition laufen lassen. Wenn nicht gut geschrieben, dann möchte
ich innerhalb dieser IP-Bedingung die Schleife unterbrechen, unterbrechen und außerhalb
der IP-Bedingung möchte
ich die
Zählvariable v erhöhen. Anzahl,
zähle gleich Anzahl plus eins, weil wir das LOO plus eins
inkrementieren müssen, ich möchte
diese Schleife um eins erhöhen Um also das gesamte Video
Bild für Bild zu lesen, müssen wir Wir müssen das ganze Bild umdrehen. Um also das gesamte
Video Bild für Bild zu lesen, müssen
wir die Frames umdrehen. Hier, innerhalb der Schleife, gebe
ich
Bild ein, gleich. Auch hier gebe ich
np dot flip Method ein. Umdrehen. Dann übergebe
ich in
der Runde
die Variable IMG, Komma X ist gleich Eins Dann interessiere ich mich auch für die Xs. X ist gleich eins. In unserer vorherigen Gruppe
haben wir nur 60 Bilder gelesen, und dann reflektiere ich ein Bild. Aber in diesem Valu lesen
wir das ganze Video, wählen alle Frames und drehen dann alle Bilder Hier drehen wir unser Video und unser
Hintergrundbild erfolgreich um
und müssen dann
die Bilder in HSV-Farben konvertieren Standardmäßig ist es mit BGR-Farbe
ausgestattet. Hier werde ich
eine weitere Variable namens HSV deklarieren. HSV entspricht CV zwei Um die Farbe zu ändern, müssen
wir eine Methode
namens CVD-Farbe, CVT-Farbe verwenden Dann müssen
wir in der
Runde zuerst das Bild, das Quellbild,
den
Sommertyp ING übergeben Quellbild,
den
Sommertyp Um dann die Farbe zu ändern, nenne
ich CV
Two Dot Color, Underscore Von hier aus müssen wir
die exakte Farbe Wesir Two HSV auswählen die exakte Farbe Wesir Two Geben Sie also PGR zwei HSV ein. Dieser. Es wird die
gesamte Rahmenfarbe
von GR auf HSV ändern die
gesamte Rahmenfarbe
von GR auf HSV Ich hoffe, Sie
kennen sich bereits mit HSV-Farben aus, und jetzt müssen wir zwei Masken
erstellen, um bestimmte
Farben aus einem Bild zu isolieren,
insbesondere konzentrieren wir uns auch
auf die rote Farbe insbesondere konzentrieren wir uns auch
auf die rote Im Grunde konzentrieren wir uns darauf, roten
Farbton in einem Bild
zu extrahieren Das wurde in
HSV-Farbe umgewandelt. Hier müssen wir
insgesamt zwei Masken erstellen und jede Maske benötigt
zwei Farbtöne, einen unteren roten Farbton und einen
oberen roten Farbton Hier gebe ich
ein einzelnes Ende ein und stelle
den unteren und oberen
Bereich für Masse eins ein Ich werde eine Variable deklarieren. Zuerst möchte ich
den niedrigeren Rotton einstellen. Das ist für Masse eins. Also wer gibt eine niedrigere
Unterstrichrate ein. Wie hier werde
ich Nb AA Mth Np AI verwenden. Dann werde
ich hier in den Runden ein Array passieren. das Quadrat durchgeht, Wenn das Quadrat durchgeht, gebe
ich 140, 40 Ich werde auch
die obere rote Welle sagen. Ich beginne mit dieser Zeile und werde die untere
Rate durch die obere rote ersetzen. Und dieses Mal
sage ich, der Wert 100 ist 100, Sättigungswert ist
255 und der Wert ist 255. Lassen Sie mich nun
diese beiden Zeilen erklären. Wie Sie sehen können, erstellen wir ein Zahlenfeld und
in diesem Array haben
wir insgesamt drei Vo, Henry p drei Vo 140 und 40. Der erste Wert steht für Hu, der zweite
Wert für die Sättigung und der letzte
für den Wert. Steht im Grunde für ein
farbiges Etikett. Ich messe in Grad. Für Open CB
verwenden wir 021 80 Grad, aber traditionell liegt der
Bereich bei 023 bis 60 Dann kommt die Sättigung. Die Sättigung bestimmt die
Intensität oder Reinheit der Kühlung. Null ist Grau und 255 ist eine
vollständig gesättigte
Farbe Hier verwenden wir 40 und die Sättigung ist relativ niedrig. Das bedeutet, dass die Farbe
etwas zu groß oder überladen sein wird. Und der letzte Wert
steuert die Helligkeit. Es steuert die
Helligkeit der Farbe. Null steht für Schwarz und 255
für volle Helligkeit. Der Wert, den wir verwenden, ist blau. Das bedeutet, dass die Farbe relativ dunkel sein
wird. In dieser Variablen erfassen wir eher
eine grünlich-blaue Farbe als eine rote Farbe Auf die gleiche Weise
sagen wir den oberen roten Wert. Außerdem
enthält die obere rote Variable dieselbe Farbe, aber ihre Helligkeit und
Intensität ist hoch. Sie wird nicht ausgeblendet. Und jetzt werde
ich
die Masken-Ein-Variable erstellen. Frau eins. Das ist Maske eins, Hemel-Maske eins, der CV zwei Punkte zugewiesen wurde, und ich werde eine
Methode aufrufen, die in range aufgerufen wird Ich reiche. Dann sagtest du, die Runde drückt, ich gehe zum HSV, Komma wird das untere und das obere
Raster übergeben Komma mit niedrigerer Rate, muss auch die obere Rate
übergeben werden. Das ist unsere erste Maske. Hier erstellen wir eine binäre Maske auf dem angegebenen Farbbereich
basiert. Wie ich dir gesagt habe,
müssen wir eine weitere Maske erstellen. Ich verstehe diesen Abschnitt und
werde zuerst den Befehl ändern. Dies ist für Maske zwei, und wir müssen auch dieselbe Variable
verwenden, niedrigere Rate und obere Rate. Aber dieses Mal werde ich die Farbwinkel
ändern. Außerdem werde ich die Werte
ändern. Also hier werde
ich 155 Grad binden. Und für oben rechts werde
ich 180 Grad überschreiten, und dann werde ich die variable Länge
ändern. Das ist Maske zwei. Und jetzt werde ich beide Masken
kombinieren. Also hier gebe ich
Maske eins gleich Masse ein, eins plus Maske zwei. Wenn wir es vergleichen, dann ermöglicht es eine
umfassendere Erfassung
von roten Farbtönen Nachdem wir beide Masken ausgewählt
haben, müssen wir die Maske verfeinern Wir müssen den ganzen
Lärm von der Maske entfernen. Dafür, Hämorrhotide, Maske eins,
Maske eins, Assign W, hier müssen
wir eine Methode von
OpenCB ausführen , die Morphologie X aufruft Sie
kann den gesamten
Rauschpunkt aus der Maske entfernen Hämorrhotide, Lebenslauf zwei
Punkte, Morphologie X. Diese . müssen
wir in den
Rundkleidern als ersten Prater die Quelle, das Quellbild Metall, passieren, das Dann müssen
wir in den
Rundkleidern als ersten Prater die Quelle, das Quellbild Metall, passieren,
das ist Maske eins. Nach dem Koma müssen Sie hier die morphologische
Öffnungsoperation aufrufen Auch hier habe ich Typ C mit
zwei Punkten Morph Open. In diesem Fall übergeben wir zuerst eine
Binnymsk, die
zuvor erstellt wurde . Dabei
stehen weiße Pixel für den Interessenbereich und schwarze Pixel den Hintergrund Dann führen wir eine Operation durch,
eine morphologische Untersuchung. Es handelt sich um eine zweistufige Operation. Zuerst führt es Erosion durch, dann führt es Täuschung durch Durch Erosion werden
kleine weiße Geräusche entfernt. Insbesondere isolierte
Pixel und Verdünnung stellen die Größe
größerer weißer Bereiche Dieser Vorgang ist besonders nützlich, um
kleine Objekte zu entfernen In unserem Fall Lärm. Lärm ist nicht Teil
unserer Mittelwerterkennung. Deshalb müssen wir es entfernen. Jetzt müssen wir
ein Strukturelement erstellen ,
andernfalls die Kernelgröße. Dafür übergebe
ich ein Komma und verwende die Funktion
von Numbi vom Typ NP Dann gebe
ich in der Runde der Pressen Kernelgröße drei mit Dann müssen wir auch
den Datentyp dieses Pixels übergeben
, der keinen Punkt UN enthält. Dieser vorzeichenlose Edwit-Inder
wird häufig in der
IG-Verarbeitung verwendet , da er Pixelwerte darstellen
kann Nach dem Koma müssen wir dann den
Iterationswert übergeben. Iterationen, und ich
möchte es zweimal ausführen. Ich werde
zwei bestehen. Diese Iteration gab an, wie oft der Öffnungsvorgang angewendet
wird In diesem Fall wird diese
Öffnung zweimal angewendet. Mehrfaches Betätigen erhöht
den Verzinnungseffekt. Deshalb brauchen wir
diese Iteration. Danach müssen wir die Dilatation in Maske eins durchführen
. Auch hier gebe ich Maske
eins so ein wie hier rufe
ich die
Methode von Lebenslauf zwei auf, was als Dilate it bekannt ist Also tippe C zwei, Punkt, dilate. Dann müssen
wir
innerhalb der Runden zuerst die Maske auswählen Ich gebe Maske eins ein, dann müssen wir
die Kernelseiten übergeben Geben Sie erneut NP Punkt eins ein. Innerhalb des runden Messings werde
ich
drei Komma drei eingeben Dann müssen wir den Datentauchgang
erwähnen
, der NP INT acht ist Dann Atracma
müssen wir auch die
Iteration erwähnen, aber vorher müssen
wir diesen ganzen
Abschnitt innerhalb der Runde verschieben*** Hier werde ich die Iteration
erwähnen. Diesmal wollen wir
nur eine Iteration. Jetzt ist der Quotien das, was
gewählt wird und
was werden Sie im Grunde tun diesen Vorgang wird der
weiße Bereich der Maske vergrößert, wodurch das erkannte Ergebnis größer wird und kleine Löcher gefüllt Und das verbessert
die Robustheit der Maske. Als Nächstes müssen wir die Maske
invertieren. Wir müssen weiße Pixel in Schwarz und schwarze
Pixel in Weiß umwandeln Und um das zu tun, müssen wir VT is not operator
verwenden. Also müssen wir zuerst Maske eingeben,
zwei, um die
Maske auszuwählen, zwei entsprechen hier Typ C V zwei, Punkt,
beißen, irgendein Typ
B, bitwise Wir lernen
bereits den bitweisen Operator. Ich werde hier nicht
erklären, wie bitweise Operatoren
funktionieren, wie Bt nought, bitweise innerhalb der Rundkleider,
ich werde Maske Hier verfeinern wir die Maske
entsprechend der erkannten roten Farbe Nachdem wir unseren Maskenbereich verfeinert
haben, müssen wir
das endgültige Ergebnis generieren. Und jetzt müssen wir
insgesamt zwei separate Ausgaben erstellen. In der ersten Ausgabe werde
ich
den Hintergrund zeigen, in dem
rote Flecken erkannt werden In der zweiten Ausgabe möchte ich
die Altersbereiche ausschließen. Lassen Sie uns die erste
Ausgabe für den Hintergrund erstellen. Hier werde ich tippen und ich werde mir das
sehr gut als Ressource eins ansehen. R ist eine Ressource, eins gleich zwei, und wir müssen PTs
Operator, PTI und operator verwenden Also binde Lebenslauf zwei, Punkt, B, und dann innerhalb
der runden Strophen werde
ich
den Hintergrund passieren Der Hintergrund ist das Bild, das die Szene darstellt,
in der Sie
die Teile der Bilder
anhand der erkannten roten Kurve zeigen möchten . Zuerst müssen wir den Hintergrund
übergeben und schon erstellen wir
den Hintergrund. Lass es mich dir zeigen.
Dieser Hintergrund. Wie Sie sehen können,
drehen wir den Hintergrund um. Ich werde die
Hintergrundvariable kopieren. Ich füge
Sofortspielzeuge ein und
OperiTot ist das
Hintergrundbild, das die Szene darstellt,
in der Sie Teile
des Bildes anhand
ihrer erkannten roten Farbe anzeigen möchten des Bildes anhand
ihrer erkannten roten Nach dem Koma
müssen wir dann die Quelle passieren,
Quelle zwei, Als Nächstes müssen wir Meta übergeben. Und ich gebe Masse
gleich Masse eins ein. Im Grunde speichern diese Variablen den Hintergrund, auf dem die
rote Farbe erkannt wird. Jetzt müssen wir
die aktuellen Frames
ohne rote Farbe extrahieren . Auch hier werde ich
eine weitere Variable Rds zwei deklarieren. Das ist Resos zwei
gleich C zwei, auch wenn wir diesen Operator verwenden Ist N. Dann drücke ich dieses Mal in der
Runde, ich gebe
die Videoquelle Wie Sie sehen können, haben wir diese Videoquelle
als Bildvariable, IMG, festgelegt. Das ist unser Flip-Video. Ich werde diese Variable kopieren und sie hier übergeben. Auch hier müssen wir Quelle zwei
übergeben,
das ist Quelle zwei, und ich
möchte sie mit st zwei zuweisen. Ich gebe Metal
Mask, Toado Mask Two ein. Im Grunde führen B towise und der
Operator die
Operation an zwei Bildern durch, andernfalls zwischen
einem Bild und einer Maske Es wird verwendet, um
zwei Bilder auf der Grundlage
einer logischen Operation zusammenzuführen , bei
der der Pixelwert an
jeder entsprechenden
Position des Bildes verglichen der der Pixelwert an jeder entsprechenden
Position des Bildes erste Quelle ist das
erste Eingabebild und die zweite Quelle ist das
zweite Eingabebild Die Maskenparameter geben an, welches Pixel für die Operation
berücksichtigt werden soll. Jetzt müssen wir das letzte O
erzeugen. Deshalb deklariere ich eine
Variable mit einem finalen Unterstrich als out endgültige Ausgabe entspricht hier: Ich rufe eine Methode auf, CV zwei, C zwei Punkte addieren Gewicht Soundtyp A, D,
dieser, sieh es dir an Im Grunde verwenden wir diese
Methode, um zwei Bilder zu binden. Hier werde ich das erste Bild
bereitstellen, Ressource eins, RD ist eins. Außerdem müssen wir
den Alpha-Wert übergeben
, der ein Gleitkomma ist. Um also ein Komma zu übergeben, müssen
wir Quelle zwei übergeben, und das ist R, Ressource zwei Und noch einmal, nun, um den Float-Point zu
übergeben. In dieser Zeit werden wir
den Beta-Floatpoint überschreiten. Auch hier werde
ich einen bestehen. Endlich werde
ich Gama Val passieren. Gamma ist Null. Diese Funktion verbindet
zwei Bilder miteinander indem sie sie
mit einem bestimmten Gewicht kombiniert. Zuerst müssen wir
der Quelle einen Wert übergeben, dann müssen wir
den Alpha-Wert übergeben, dann Quelle zwei, dann
müssen wir den Beta-Wert übergeben, zuletzt müssen wir den Gamma-Wert
übergeben. Jetzt müssen wir die
endgültige Ausgabe in einem Fenster anzeigen. Dafür werde
ich den Lebenslauf mit zwei Punkten verknüpfen:
IM-Methode, IWF-Methode, IWF. Dann die runden Kleider,
ich werde weitermachen. Erste Einheit für Byte
der Fenstername, das ist unsichtbares T-Shirt, und außerdem müssen
wir das Finale verteilen. Ich kopiere diese Variable und apracma Ich werde den
Wert übergeben Endgültig. Als Nächstes müssen wir das Programm
beenden, in dem wir einen bestimmten Schlüssel
loben. Wir drücken die ESC-Taste
auf unserer Tastatur, ich möchte das Programm beenden Dafür
deklariere ich eine Variable K, die der Methode CV
mit zwei Wet-Keys entspricht Methode CV
mit zwei Wet-Keys Wet-Taste in der
Runde gedrückt wird, werde
ich eine Verzögerung von zehn
Millisekunden überschreiten Dann wird mir eine tiefe Bedingung gesetzt,
I K gleich 27, in einem solchen Zustand möchte
ich die Schleife unterbrechen, unterbrechen Ich glaube, ich habe etwas Mystic gemacht. Ich habe eine sehr ausführliche Darstellung gemacht, wir
müssen den Code innerhalb
der Einrückungsebene verschieben, wir müssen ihn mit Absicht sechs verschieben Ich werde den Platz bereitstellen
und ihn innerhalb der Einrückungsebene verschieben Sonst wird es nicht laufen. Eine nach der anderen werde ich die
gesamte Linie innerhalb
der Intendionebene verschieben die
gesamte Linie innerhalb
der Intendionebene Jetzt sieht es perfekt aus. Wie Sie wissen, ist 27 ein Kinderspiel. Es ist ein Code für einen übersprungenen Schlüssel. Wenn wir die Escape-Taste loben, wird das den
Kreislauf durchbrechen und es ist unser Programm Lassen Sie uns nun die Datei einrichten
und den Code in
unserem Terminal ausführen und prüfen
, ob er richtig funktioniert oder nicht. Also werde ich die Run-Taste drücken. Nachdem ich die Run-Taste gedrückt habe, müssen
wir
ein paar Sekunden warten. Das
Starten der Webcam dauert einige Zeit. Außerdem werde ich mich vor
dieser Webcam
bewegen , weil wir den Hintergrund aufnehmen
müssen. Wie Sie auf Ihrem Bildschirm sehen können, öffnet
es die Webcam
und Sie können auch sehen, dass ich nicht in diesem Fenster bin. Also das bin ich und ich
trage ein schwarzes T-Shirt. Jetzt nehme ich
mein unsichtbares T-Shirt. Das ist mein unsichtbares T-Shirt. Da du es
völlig unsichtbar sehen kannst, kannst
du die
Hintergrundwelt durch es hindurch sehen. Jetzt werde ich dieses
T-Shirt tragen und unsichtbar werden. Nachdem ich dieses T-Shirt getragen habe, bin ich,
wie du siehst,
völlig unsichtbar geworden. Man kann auch
kleine Pannen feststellen und ist, aber es funktioniert ziemlich gut Dies ist das Projekt, bei dem wir ein unsichtbares T-Shirt
bauen. Ich hoffe dir gefällt dieses Projekt. Vielen Dank und bleiben Sie
dran für das nächste Tutorial.
25. Hintergrundsubtraktion – OpenCV: Hallo Leute. Schön
, dich wieder zu sehen. Ich bin wieder
mit einem anderen Projekt
im Zusammenhang mit Open CPI zurück und
heute werden
wir in diesem Projekt ein
Hintergrundabonnement
mit Open SIP ausführen Hintergrundabonnement
mit Open SIP Hintergrundabonnement ist eine Möglichkeit den
Hintergrund
aus dem Bild Um dies zu erreichen, extrahieren wir den beweglichen Vordergrund aus
dem statischen Hintergrund. Hintergrundsubtraktion hat im Alltag
mehrere Anwendungsfälle. Sie wird zur
Objektsegmentierung, zur Verbesserung der
Sicherheit, Verbesserung der
Sicherheit Verfolgung von
Fußgängern, zur Zählung
der Besucherzahl, der
Anzahl der Fahrzeuge im
Verkehr usw. verwendet. Es ist in der Lage, die Vordergrundmaske zu lernen und
zu identifizieren. In Open Civi
haben wir drei Algorithmen
für diese Operation Lassen Sie mich Ihnen die Algorithmen zeigen. Dies sind die drei
Algorithmen, mit denen wir Hintergrund subtrahieren
können Dies ist unser erster Algorithmus, Background Subtract oder MG Es handelt sich um einen Algorithmus zur Segmentierung des
Hintergrunds im Vordergrund
, der auf einer Gaußschen Mischung basiert Hintergrunds im Vordergrund Wir werden ihn zuerst verwenden. Zuerst werde ich die Bibliotheken
importieren. Ich binde Import
und unsere erste Bibliothek ist
NumPi NumPi as N P. Als Nächstes müssen
wir den CV zwei der
wichtigsten Bibliotheken NumPi NumPi as N P. Als Nächstes importieren Binden Sie Import ein. CR zwei. Jetzt müssen wir zuerst
ein Objekt mit diesem Algorithmus erstellen . Welcher Algorithmus ist unser erster
Algorithmus, data SubstrctOrg? Ich kopiere diesen Algorithmusnamen und deklariere zuerst
eine Variable, an der ich unser erstes Objekt
stehen werde Im Grunde handelt es sich dabei um einen
Substruktor-Algorithmus vom Vordergrund bis zum Hintergrund Ich werde
es G BG, G VG One nennen. Das ist gefunden und
Vektor-Untersektor eins, gleich dem
Typ Hermano, CV zwei Punkte, und wir müssen
eine andere Methode aufrufen, und unser Methodenname ist
BG AC GA, Dann gebe ich Punkt und wir müssen
den Objekttyp create
erstellen, und ich füge unseren ersten
Hintergrundunterstruktor Endlich werde ich ss weitergeben. Dies ist das erste Objekt
, das ich mit
diesem Algorithmus, dem
Hintergrund-Substruktor Mogen, erstelle diesem Algorithmus, dem
Hintergrund-Substruktor Mogen, Als Nächstes nehme ich ein
Bild von der Kamera auf. Also nehme ich eine
variable CAP-Aufnahme,
CAP-Cap, weise
ihr zu CAP-Cap, weise und nenne
C-Punkt-Videocapture Videoaufnahme. Dann müssen
wir in der runden Aussparung die Quellen passieren. Wir werden meine Standard-Webcam
einschalten sodass ich Null übergebe. Danach müssen wir hier eine Infrate-While-Schleife
laufen lassen. Also gebe ich
in die runde Zahl I ein,
ich meine, es ist ich meine Wenn die Bedingung wahr ist, dann möchte ich innerhalb des i
zuerst den Frame
aufnehmen Wir müssen Frames lesen. Um Frames zu lesen, müssen Sie auch den Gülen-Wertetyp
deklarieren. Dies ist der
Willian-Wert, der im
Bullen-Wert gespeichert ist. Außerdem werde
ich das
Bild aus dem Frame zurückgeben Ich gebe ING ein, was
gleich ist, und wir müssen die Lesefunktion
ausführen Kann nicht lesen. Bei dieser Methode werden die Frames
gelesen. Zuerst wird
sie einen Vol-Wert zurückgeben, was für ein Bullen-Wert Es wird gespeichert, ob
es einen Frame gibt oder nicht. Dann das Bild, es wird
das tatsächliche Bild speichern, andernfalls der tatsächliche Rahmen. Dann in der VIL,
werde ich die Maske erstellen, die erste Maske, die dieses Bild verwendet. Dafür werde ich
eine lustige Masse G Mass One erstellen. Das ist G-Masse eins,
was Helm entspricht, um
dieses Bild auf dieses Objekt anzuwenden. Helmer Typ G, BG
hat beigebracht, Masse zu booten. Dann sagtest du, die runden Pressen, ich gebe das IMG-Bild Hier tragen wir eine Maske für den Unterbau
im Hintergrund auf. Dann möchte ich diese Maske anzeigen und ich möchte auch
den Originalflügel anzeigen Zuerst werde ich das Originalfenster
anzeigen. Ich werde C mit
zwei Punkten IMF-Metall binden, also dann in den runden Resist innerhalb
der einzelnen Schicht, das ist das Originalfenster, wo ich
fi-Webcam-Filmmaterial machen möchte, irgendein Typ Original und hier werde ich das variable Bild
weitergeben. Wie Sie wissen, hat die Bildvariable das Originalmaterial
gespeichert. Deshalb muss ich das Bild weitergeben. Und dann wieder rufe
ich
Ema Show Mathe an. Ich
dupliziere diese Zeile. Aber dieses Mal möchte ich den Mg-Algorithmus
zeigen. Ich kopiere MG und den Plus-Namen ersetze das Original durch MG. Ich ersetze IMG durch
GMGmsk G mask O. Und jetzt müssen wir die Methode wet K
aufrufen Hier ist Tie K gleich CV,
zwei Punkte setzen K-Methode. In den Rückläufen der Runde werde
ich dann 30 Millisekunden verstreichen lassen Außerdem werde
ich hier die BTIs-Operation bestehen, also verwende ich Operator und übergebe
einen By-Code, Null XF Dann lesen wir diese Zeile. Dann setze ich eine
Bedingung für SkepKherType, I K gleich 27, dann möchte
ich innerhalb dieses E-Blocks die Schleife unterbrechen Pause. Wie Sie wissen, ist
27 der Code für Scape Key. Dann, nachdem ich den Loop unterbrochen
habe, stelle ich den IE-Loop Ich möchte die Kamera loslassen. Also habe ich versucht, Methwood zu fangen, zu fangen
, wegzuwerfen und freizulassen. Erhebe dich. Außerdem muss ich alle Fenster
zerstören, also gebe ich C zwei ein, um alle Fenster zu zerstören. Also lass uns die Datei einrichten
und ich werde sie ausführen. Nachdem ich diesen Code ausgeführt habe, werden insgesamt zwei Fenster geöffnet. In unserem ersten Fenster geht es um das ursprüngliche Videomaterial. Ich möchte das
farbenfrohe Videomaterial
und das zweite Fenster sehen , das für die Hintergrundmaske
nach unten zeigt. Lassen Sie uns nun den Code festlegen und
schauen, was er zurückgeben wird. Ich möchte die
Starttaste drücken und wir müssen einige
Zeit warten, bis die Kamera gestartet ist. Wie Sie sehen können, schalte ich meine
Webcam ein und ich werde dieses Fenster neben das ursprüngliche Fenster
verschieben , damit
Sie es leicht vergleichen können. Wie Sie sehen können, ist dies unser Originalfenster und
das ist die MOG-Maske Wie Sie sehen können, ist in diesem Filter ein bitweiser Operator
geschrieben, und wenn ich meine Hand,
sonst meinen Körper, bewege , können Sie den beweglichen
Teil mit weißer Farbe
identifizieren Im Grunde hat er den
Bereich mit weißer Farbe definiert. Das ist der bewegliche
Teil meines Körpers. Das ist der Grund, warum es
diese Abschnitte aufgenommen hat. Und wenn du unsichtbar
werden willst, bleib
einfach still und beweg dich nicht. Wie du von Zeit zu Zeit sehen kannst, werde
ich unsichtbar und
wenn ich meine Hand bewege, sie
wiederum
dem sich bewegenden Bereich. Auf diese Weise können wir den Hintergrund
subtrahieren und nur
den sich bewegenden Teil anzeigen Lassen Sie uns nun über
den nächsten Algorithmus sprechen. Ich werde
auf den Fenstern löschen. Lassen Sie uns nun das nächste
Objekt mit dem Algorithmus Mg Two erstellen. Der Hintergrund hat Mg zwei substrukiert. Zuerst werde ich diese Zeile
duplizieren und
den Variablennamen ändern Das ist MGMG zwei. Wir können es auch entfernen. Wir brauchen diese
Methode dafür nicht, und ich werde MOG durch
Mog Two ersetzen Dann werde ich eine Maske erstellen. Dafür werde ich
diesen Abschnitt duplizieren und Maske eins
durch
Maske zwei ersetzen . Außerdem
müssen wir die Variable,
diese, Healtide GBG zwei, ersetzen diese, Healtide GBG zwei, und wir wenden dieses Bild auf dieses zweite
Objekt an Danach müssen wir es in unserem Fenster
anzeigen. Ich werde
diesen Abschnitt duplizieren und Maske zwei anzeigen. Ich werde
den Fensternamen ändern. Das ist MOG zwei. Mal sehen,
was sie zurückgeben wird, nachdem ich diese Funktion
angewendet habe was sie zurückgeben wird Um diese Datei erneut einzustellen, führe
ich diesen
Code in meinem Terminal aus
und wir müssen
ein paar Sekunden warten, und wir müssen
ein paar Sekunden warten bis die Webcam gestartet wird. Nun, wie Sie sehen können, müssen
wir drei Fenstern mitteilen. Das ist MOG zwei, das ist MOG und
das ist das ursprüngliche Fenster Lassen Sie uns jetzt den Unterschied sehen. Wie Sie sehen können, wenn wir Mg zwei mit MG eins
vergleichen, bieten
OG zwei eine
bessere Anpassungsfähigkeit an unterschiedliche Szenen aufgrund von
Beleuchtungsänderungen Ich möchte sagen, dass es Licht
genauer annimmt als MOG. Deshalb kannst du
meine Mimik erkennen. Wie Sie sehen können, wenn
ich meine Hand bewege, Mg zwei das
komplette Bild der
Hand zurück , weil dieser Algorithmus Lichter besser
liest als MOG Wenden wir nun unseren
nächsten Algorithmus an. Ich werde nur Siege machen. Bei diesem Typ werde ich den
besseren Substruktor GMG verwenden. Auch hier werde ich diesen Abschnitt
duplizieren und GBG zwei
durch GBG drei ersetzen Das ist lustiger Hintergrund drei. Auch hier müssen wir Cv dot BG ACG
eingeben, Bagnew-Substruktor
erstellen und
hier müssen wir GnG Und hier können Sie sehen, wie dieser Algorithmus
statistisches Hintergrundbild,
Schätzung und Segmentierung des Perfixelbeckens kombiniert Schätzung Bgroup-Substruktor Mg two ist ebenfalls ein Algorithmus zur Segmentierung des Hintergrunds im Vordergrund, der auf einer Der Bgroup-Substruktor Mg two ist
ebenfalls ein Algorithmus zur Segmentierung des Hintergrunds im Vordergrund, der auf einer Gaußschen Mischung basiert. Lassen Sie uns eine Maske für den dritten Algorithmus erstellen. Super, erstelle das Objekt, ich werde die Maske erstellen. Ich werde diese Zeile erstellen. Und ich werde
Maske zwei durch Markierungen drei ersetzen und muss auch
den Objektnamen ersetzen. Und ich muss auch den
Objektnamen ändern, GBG drei. Nachdem ich die Maske erstellt habe, müssen wir
diese Maske
auch in Windows anzeigen Auch hier werde ich
diese Zeile duplizieren und
Mg zwei durch GnG ersetzen hier werde ich
diese Zeile duplizieren und
Mg zwei durch GnG Wir müssen die
Maske drei für die unteren
Hintergrundmasken anzeigen und wir werden zufrieden sein Nach Schritt dieser Datei werde
ich die
Punktzahl erneut berechnen, wenn ich an der Reihe bin. Jetzt können Sie
alle Algorithmen verstehen. Jetzt können Sie sehen, dass wir
insgesamt vier Fenster haben und ich werde sie
entsprechend der Reihenfolge anordnen Original OMG, OMG zwei und GMG Das ist unser Originalfenster. Das ist das MG-Fenster, und das ist Mg Zwei
und das letzte ist G&G. Jetzt können Sie den
Unterschied zwischen allen erkennen Sie können alle drei
Ergebnisse miteinander vergleichen. Wenn Sie hier GMG bemerken, können Sie feststellen, dass der Algorithmus, sobald das
Hintergrundmodell erstellt ist, auf jedes
Pixel eine
Beckensegmentierung anwendet und
die Bayessche Segmentierung feststellen, dass der Algorithmus, sobald das
Hintergrundmodell erstellt ist, auf jedes
Pixel eine
Beckensegmentierung anwendet und
die Bayessche Segmentierung
eine probabilistische Methode ist. wird die
Wahrscheinlichkeit, dass ein Pixel zum Vordergrund oder Hintergrund
gehört, anhand seiner Intensität berechnet gehört, Dabei wird die
Wahrscheinlichkeit, dass ein Pixel zum Vordergrund oder Hintergrund
gehört, anhand seiner Intensität berechnet. Sie können auch feststellen, dass es das
Ordnungspixel übertreibt. Aber all diese drei
Algorithmen funktionieren perfekt. Es subtrahiert den Hintergrund
und stellt ihn mit
schwarzer Farbe dar und zeigt den beweglichen Teil
mit weißer Farbe Aus diesem Grund werden diese Algorithmen häufig in
Echtzeit-Videoanalysen, Überwachungskameras und
Verkehrsüberwachungssystemen Es wird auch für die
Objektverfolgung verwendet. So können wir also den
Hintergrund vom Vordergrund subtrahieren Hintergrund vom Vordergrund Ich hoffe, jetzt ist es für dich klar. In diesem Tutorial zeige ich Ihnen also, dass
wir insgesamt drei Algorithmen haben, wir insgesamt drei Algorithmen haben für
die
Hintergrundsubstriktion verwendet werden können Und meiner Meinung nach ist
Sig One das beste MOG Ansonsten kannst du dich für MOG entscheiden. Der GG-Algorithmus ist ziemlich laut. Diese Algorithmen sind
in Open Series vorkonfiguriert, sodass wir dafür nicht zu viel
tun , sondern sie anwenden müssen. Ich hoffe dir gefällt dieses Projekt. Vielen Dank, dass Sie sich dieses Video Seien Sie gespannt auf das
nächste Tutorial.
26. Gesichtserkennung mit Python und OpenCV mit Webcam: Hallo, schön, dass du
wieder da bist. Ich bin wieder mit
einem neuen Projekt im Zusammenhang mit Python OpenCV Und heute werden
wir in diesem Projekt eine
Phasenerkennung erstellen Ja, wir werden die
Phasendetektion mit offenem
C erstellen . Bevor ich also unser Programm
starte, schauen wir uns die Demonstration an. Und wie Sie sehen können, erkennt es
erfolgreich unser Gesicht und bildet ein
Rechteck um es herum. Und jedes Mal, wenn ich
mein Gesicht zusammen mit meinem Gesicht bewege, bewegt
es auch das Rechteck. Das bedeutet, dass unser Programm perfekt
funktioniert. Es kann Gesichter erkennen. Und wenn ich meine Hand
vor mein Gesicht bewege, können Sie
jetzt sehen, dass
das Rechteck entfernt wurde , und
wenn ich es
wieder herausziehe , wird das Rechteck angezeigt. also, ohne Ihre Zeit zu verschwenden, Lassen Sie uns also, ohne Ihre Zeit zu verschwenden, mit dem Praktischen beginnen Dieses Projekt nutzte die
OpenCV-Bibliothek, um eine Phasenerkennung in Echtzeit mit Rob Cam
als Hauptkamera durchzuführen Aber um das Projekt zu erstellen, müssen
wir etwas herunterladen Wir müssen in Ordnung einen Hear
Casket Classifier herunterladen. Also lass uns in den Browser springen. Wie Sie wissen, führen
wir in diesem Projekt eine
Phasendetektion durch. Also öffne ich hier meine Suchmaschine,
Google, und hier
suche ich nach Har Cascade, NscFontPas underscodfault,
Punkt N. Ja,
wir müssen NscFontPas underscodfault,
Punkt N. Ja,
wir müssen eine EML-Datei herunterladen. Nachdem Sie diese
Datei durchsucht haben, bietet
sie, wie Sie sehen können, eine
Website, einen GitHub-Link,
ArcascadeFontalfas, underscofat Punkt N. Ich werde auf diesen Link klicken ArcascadeFontalfas, underscofat Punkt N. Ich werde auf . Ich werde zu dieser Seite weiterleiten,
und
das ist die ML-Seite, und Es gibt eine große Auswahl an
Hartschalen
für verschiedene
Körperteile, wie Augen,
Brillen, Fontalfas,
Fontalpas Standard,
Ganzkörper, Lippentyp und viele für verschiedene
Körperteile, wie Augen,
Brillen, mehr Ganzkörper Aber wir müssen diese Option auswählen: Hardcasket underscoFontal phase, undersco default. Die große Frage ist,
was das ist und warum wir
diese Datei herunterladen müssen Diese Datei ist ein
vorzeitiger Klassifikator von Popsii zur
Erkennung von Phasen in Bildern
verwendet wird Dieser Klassifikator ist darauf trainiert, menschliche Fontalphasen zu
erkennen. Ein HRGskE ist ein
Objekterkennungsalgorithmus , der zur Identifizierung von
Objekten in einem Bild
- oder Videostream verwendet wird Objekten in einem Bild Dabei wird
das Modell trainiert, Muster im Bild zu erkennen,
indem es ihre ähnlichen Merkmale verwendet, die
Kantenerkennungsfiltern ähneln Und dieser Klassifikator wurde
bereits durch das Training mit vielen
positiven Bildern wie dem Bild
des positiven Bildern wie dem Bild Frontalgesichts und
auch Ich möchte Bild
ohne Gesichter sagen. Basierend auf diesem Training lernt
der Klassifikator, Gesichtsmuster zu
erkennen Also habe ich schon viele
Gesichtsbehandlungsalgorithmen in dieser Datei gespeichert. Wir müssen
unser Modell also nicht selbst beibringen. Ich werde
diese Datei herunterladen und diese Datei in meinem
aktuellen Arbeitsverzeichnis ablegen. Wie Sie in meinem
aktuellen Garantieverzeichnis sehen können, gibt es einen
Dateinamen: hang cascade,
underscoefonDL phase
underscoe default dot L, underscoefonDL phase
underscoe underscoe Es handelt sich um einen vortrainierten
Har-Kaskadenklassifikator, bei dem es sich um einen speziellen Algorithmus handelt
, handelt
, der zur Erkennung von Phasen in Bildern entwickelt wurde. In einem einzigen Satz enthält
diese Datei
die notwendigen Daten, enthält
diese Datei
die notwendigen Daten Phasen in
Bildern zu erkennen Zuerst müssen wir die Bibliothek
importieren. Hier werde ich unsere Bibliothek OPC
importieren. Importieren Sie den zweiten Lebenslauf, und dann müssen wir den
Pre Tad Hard Casket problemlos laden Dafür deklariere ich
eine Variable und ich werde deklarieren und unsere
Variable ist A, A,
weise Wi zu , CV zwei Punkte von hier aus, ich nenne den
Meth-Kaskadenklassifikator,
irgendeinen Kaskadenklassifikator ich nenne den
Meth-Kaskadenklassifikator,
irgendeinen Kaskadenklassifikator. Dann werde
ich in das runde Messing, innerhalb der Doppelcodes, innerhalb der Doppelcodes, den Dateipfad kopieren Andernfalls definiere ihren Namen. Hier kopiere ich
den feinen Namen und zurück
zur Hauptdatei mit Punkt Pi Dann füge
ich in den Doppelcode den feinen Namen
hcascdUnderscoe fontal phase, underscoe default Diese Datei wird im XML-Dateiformat gespeichert. Als Nächstes müssen wir
den Video-Feed
von der U-Webcam aufnehmen . Dafür werde ich eine weitere Variable
deklarieren, und unser Variablenname ist
CAN Cam. Ab hier werden
wir einen Math-Modus ausführen, CV-Videoaufnahme mit zwei Punkten. Dann müssen
wir in den runden Aussparungen die Kameraquelle bereitstellen Hier verwende ich meine Standard-Webcam, also gebe ich Z weiter. Als Nächstes müssen
wir eine
Endlosschleife laufen lassen, um das Bild kontinuierlich
von dieser Kamera
aufzunehmen Dafür werden wir ein Äh in diese IU
laufen lassen, wir müssen das
Bild von der Kamera ablesen. Geben Sie Cam Cam
Dot Read Method ein. Lesen Sie diese Methode und
kehren Sie zurück zu Dull Two VDU. Also müssen wir dieses
Vario in einer Variablen speichern. Zunächst wird ein
boolescher Wert zurückgegeben, der
angibt, dass der Frame
erfolgreich gelesen wurde oder Also werde ich diesen
Bolen-Wert in der RET-Variablen sortieren. C dann wird es das eigentliche Bild
zurückgeben. Um das Bild zu speichern, deklariere
ich hier eine weitere Variable,
cnkscImage IMG, der die Cam Dot
Read-Funktion zugewiesen ist Diese Variable
speichert den booleschen Wert und diese Variable
speichert das tatsächliche Bild,
das Sie Und jetzt müssen wir
diesen bunten Rahmen
in ein flottes Bild umwandeln diesen bunten Rahmen
in ein flottes Seifenhaar, ich
tippe Grau. Gray, weise mit zu, ich werde eine
Funktion namens CVD-Farbe ausführen Cv CVT-Farbe. Dann werde
ich innerhalb der
Runde Res als Quelle dieses
variable Cab-Bild übergeben Wir werden
die CaM-Bilddateien
in graue Farbe konvertieren . Dann müssen
wir als zweite Quelle den
initialisierten Code übergeben
, der aus zwei Punkten besteht, und ich möchte Farbe in BGR-Farbe
in Graufarbe umwandeln Geben Sie also unter dem Gültigkeitsbereich farbig ein
und wir müssen die
BGR-Farbe in die graue Farbe BGR in die graue Farbe konvertieren BGR-Farbe in die graue Farbe BGR in die graue Dieser. Grundsätzlich funktioniert die
Phasenerkennung bei
Graustufenbildern besser, was den Prozess vereinfacht. Jetzt müssen wir
die Phasen anhand des
Graustufenrahmens erkennen . Dafür müssen wir
einen Meth Detect Multiscale verwenden. Hier werde ich eine weitere Variable
deklarieren und mein Variablenname ist Phase,
Assign mit einem Punkt, deTTT Dann müssen wir in den runden Pressen zuerst das
Quellbild übergeben, was großartig ist Dann müssen wir den
Skalierungsfaktor übergeben, der 1,3 ist. Als Nächstes müssen wir die
Mindestanzahl von Never Rectangle übergeben. Dafür werde ich sechs bestehen. Bei dieser Methode
übergeben wir zuerst die Bildquelle Grau. Dann bestehen wir den
Skalierungsfaktor Win. Hier übergebe ich 0,3. 0,3 ist der Skalierungsfaktor, der
steuert, wie stark
die Bildgröße bei jedem Bildmaßstab
reduziert wird bei jedem Bildmaßstab
reduziert und sechs ist die
Mindestanzahl von Hebeln Ein Rechteck sollte als Phase betrachtet
werden müssen. Diese Phasenvariable
speichert alle Phasen des Graustufenbildes
mit Ausnahme der Phasenkoordinaten Mit diesen Koordinaten müssen
wir nun ein
Rechteck darum zeichnen Lassen Sie uns also ein Rechteck zeichnen. Wir müssen ein Rechteck
um die erkannten Gesichter zeichnen. Dafür müssen wir das Formular verwenden. Für im Y. Also ich gebe hier vier innerhalb
der Rundkleider ein,
wir geben einige Koordinaten ein, so
wie wir X eins,
Y eins, W eins,
H eins in Phase machen Y eins, W eins,
H eins in Phase H Dann müssen
wir innerhalb dieses PL-Boops ein Rechteck mit diesen Koordinaten zeichnen Wie Sie wissen,
führen wir zum Zeichnen eines Rechtecks Lebenslauf, Rechteck mit zwei Punkten. Dann stellst du die RoundRessF ein, die wir brauchen, um das
Quellbild zu übergeben. In welchem Bild
wollen wir das Rechteck zeichnen. Als Quellbild würde ich
dieses variable Cam-Bild übergeben Ma. Als Nächstes müssen
wir die Punkte übergeben, um das Rechteck zu
zeichnen. Aber vorher müssen wir die Punkte
verstehen. Diese vier Schleifen wiederholen die
gesamten Detektivphasen , die in der
Phasenvariablen gespeichert werden Und für jede erkannte Phase stehen
XY und Y eins für die
obere Lippenecke der Phase, und W eins und H eins
stehen für Gras und Körpergröße Diese beiden Werte zusammen
stehen für die obere Lippenecke und dieser Wert steht für Nässe und dieser Wert
für Höhe. Mit diesem Wert und
diesen Koordinaten zeichnen
wir das Rechteck. Und wie Sie wissen, müssen
wir, um
das Rechteck in OpenCV zu zeichnen, insgesamt zwei übergeben, obere Lippenecke und die
untere rechte Ecke Für die obere linke Ecke haben
wir bereits die Koordinaten Also hier werde
ich X Conga Y,
X eins, Y eins bestehen X eins, Y eins Dann müssen wir den Wert für
die untere rechte Ecke übergeben und wir haben nicht den Wert für die
untere rechte Ecke,
aber wir können den Wert für die
untere rechte Ecke berechnen Lass mich dir zeigen,
wie. Um den Wert in der unteren rechten Ecke zu berechnen, müssen
wir Wert
y1s und das Rechteck
mit addieren, was eins ist Dann müssen wir
YR plus H eins, Höhe, berechnen. Zuerst addieren wir
mit dem xs-Wert, dann addieren wir die
Höhe mit Y xs in. Kombiniert gibt es
die rechte Ecke v zurück . Jetzt müssen
wir
einen anderen Wert übergeben, der
farbig ist, hier verwende ich
die Farbe Blau. Zuerst
übergebe ich 2550, Null. Als Nächstes übergebe ich
die Größe, die Dicke des
rechteckigen Randes Ich übergebe drei und Sie können auch einen
höheren Wert dafür verwenden , wenn Sie fünf oder sechs überschreiten. Ich werde fünf bestehen. Nachdem ich das
Rechteck
um das Gesicht gezogen habe, müssen
wir den Rahmen
mit der erkannten Phase anzeigen. Um die Frames
in der erkannten Phase anzuzeigen, müssen
wir diese vier Schleifen verlassen und hier
müssen wir das IMF-Metall anzeigen. C zwei Punkte Meiner Meinung nach
sagten sie die Rundkleider. Zuerst müssen wir
einen Fensternamen angeben und der
Fenstername ist Face, und dann müssen wir das Quellbild
angeben,
nämlich Cam Image nämlich Das ist. Außerdem müssen
wir die Wet-Taste drücken
, um das Programm zu beenden. Hier gebe ich die Taste I
CV mit zwei Punkten in der Runde ein. Ich setze sie erneut
auf
eins, eine Millisekunde und Null
F entspricht ORD innerhalb des Laufs Wenn wir innerhalb des Laufs das kleine A loben,
dann innerhalb dieser P-Bedingung, dann innerhalb dieser P-Bedingung, möchte ich Ich will
die Y-Schleife durchbrechen, unterbrechen. Wenn wir A loben, dann bringt das die Schleife
und bringt dich um. Als Nächstes müssen wir
die Webcam-Ressource veröffentlichen. Außerhalb der ID-Schleife, Typ
Hemel, Cam Dot,
Release-Methode Außerdem müssen wir
alle Fenster zerstören, Typ S, CV zwei, Punkt,
alle Fenster zerstören Dieser. Ich werde
diese Datei einrichten. Lassen Sie uns nun den Code in
meinem Terminal ausführen und prüfen
, ob er richtig funktioniert oder nicht. Nachdem ich diese Datei eingerichtet habe, drücke ich
auf die Schaltfläche Ausführen, und wir müssen einige
Zeit warten, bis meine Webcam gestartet ist. Endlich, nach
ein paar Sekunden, öffnet
es unser Fenster. Wie Sie sehen können,
hat es erfolgreich
unser Gesicht erkannt und ein
Rechteck um es herum erstellt. Immer wenn ich mein
Gesicht zusammen mit meinem Gesicht bewege, bewegt
sich auch das Rechteck. Das bedeutet, dass unser Programm perfekt
funktioniert. Es kann Gesichter erkennen. Ich bewege meine Hand
vor mein Gesicht,
jetzt kannst du sehen, dass sie das Rechteck
entfernt und wenn ich sie wieder herausziehe, zeigt
sie das Rechteck. Mit dieser vorgetäuschten
FontAlpashar-Schatullendatei erstellen wir diesen Detektor. Jetzt schließen wir das Fenster
und kehren zum Visual Studio-Code zurück Also habe ich erfolgreich ein
Phasenerkennungsprogramm mit OpenCV erstellt Phasenerkennungsprogramm mit OpenCV Es ist nicht sehr schwierig. Es ist ein sehr einfaches Projekt. Ich hoffe, Ihnen gefällt dieses
Projekt sehr gut und Sie verstehen auch, wie die
Phasenerkennung funktioniert. Vielen Dank, dass Sie sich
diesen Videoplan für unser nächstes Projekt angesehen haben.
27. Objekte ähnlicher Farbe in Python mit OpenCV: Hallo Leute, schön, dass ihr
wieder da seid. Ich bin wieder
mit einem neuen
projektbezogenen Pythonopen-Lebenslauf Heute werden
wir in diesem Projekt die
Objektverfolgung
mithilfe von Farbsegmentierung durchführen mithilfe von Farbsegmentierung Ja, wir werden
Objekte mithilfe von
farbbasierter Segmentierung verfolgen Objekte mithilfe von
farbbasierter Segmentierung Objektverfolgung ist eine
Computer-Vision-Technik zur Ortung der
Position eines Objekts
auf einem Bild oder Video Denken Sie daran, dass das Erkennen eines Objekts und das Verfolgen des Objekts zwei verschiedene Dinge
sind. Bei der Objektverfolgung können Sie jedes sich bewegende Objekt
verfolgen, bei der Objekterkennung können
Sie das Objekt
jedoch identifizieren. Das sind zwei völlig
verschiedene Dinge. In OpenCV gibt es viele Arten von
Objektverfolgungsmethoden,
z. B. auf der Grundlage der
Farbsegmentierung, z. B. auf der Grundlage der
Farbsegmentierung Frame-Differenzierung
und der Feature-Matching-Basis Institutionell
werden wir eine auf
Farbsegmentierung
basierende Objektverfolgung durchführen ,
und um die
effektive Farbverfolgung durchzuführen, werden
wir die bGIR-Farbe in HSV-Farbe umwandeln Wie Sie wissen, steht HSV für Hue Saturation Vue. Hue steht für Farbe, Vallow steht für
Farbmenge und Sättigung steht für
Graumenge an Ohne zu
viel zu reden, möchte ich Ihnen
ein Beispiel zeigen , was wir in diesem Tutorial erstellen werden Jetzt können Sie sehen, dass es unser Objekt
erfolgreich verfolgt. Es kann unseren blauen
Flaschenverschluss verfolgen. In unserem Rahmenfenster können Sie
das Originalmaterial sehen und in unserem Maskenfenster können Sie
hier das Filmmaterial des
BTIs-Operators sehen Hier steht Weiß für
den Flaschenverschluss und Schwarz für einen
nicht ausgewählten Bereich Aber in unserem dritten Fenster RIAs, hier können Sie das
eigentliche Farbobjekt sehen Hier seht ihr den
genauen Flaschenverschluss. Ohne diesen Flaschenverschluss können
Sie hier nichts sehen, da er nur diese
Farbsegmentierung
von diesem Fenster aus verfolgt Farbsegmentierung
von diesem Fenster aus Das werden wir
in diesem Projekt erstellen. Lass uns auf den
Computerbildschirm springen und das Projekt starten. Wie Sie sehen können, befinden
wir uns endlich in meinem Visa
Studio-Code-Editor, und ich habe bereits eine
Python-Datei main dot py erstellt. Schnell werde ich
unsere wichtige Bibliothek importieren. Ich gebe Import ein und ich werde CV Two importieren. Dann werde ich Numpi importieren. Ja, Numpi ist wichtig, um diese Art von Projekt zu
erstellen. Ich werde
import numPi als NP eingeben, als Nächstes müssen wir den
Pi-Plot aus dem Matplot-Blatt importieren Er gibt „Matplot
Leaf Pi-Plot als PLT importieren“ ein. Hier führen wir
die
Objektverfolgung anhand
der Objektfarbe Objektverfolgung anhand
der Objektfarbe Objektverfolgung und
Objekterkennung sind völlig
unterschiedliche Dinge. Bei der Objektverfolgung können wir jedes sich bewegende Objekt
verfolgen. Aber bei der Objekterkennung müssen
wir
das jeweilige Objekt erkennen. Wie ich Ihnen bereits sagte, gibt es viele Methoden, die
wir für die Objektverfolgung verwenden können, z. B. Farbsegmentierung, Frame-Differenzierung,
Feature-Matching, Verschwendung von
maschinellem Lernen usw. Aber wie Sie wissen, werden wir eine auf Farbsegmentierung
basierende Objektverfolgung
durchführen Lassen Sie uns nun mit dem Praktischen beginnen. Zuerst müssen wir
ein Videoobjekt erstellen , um den Frame
aufzunehmen. Um den Frame aufzunehmen, werden
wir unsere Webcam verwenden. Hier gebe ich
einen Variablennamen ein, CAP, CAP, Assign W und hier müssen wir eine Methode
namens Videoaufnahme verwenden. Cv Dot Video hat diesen aufgenommen. Dann in den runden Kleidern, hier müssen wir die Quelle Z
übergeben Danach definiere ich eine leere Funktion. Warum brauchen wir eine leere Funktion? Weil wir damit eine
Spurleiste erstellen werden und um diese Spurleiste zu
erstellen, müssen
wir eine
leere Funktion zurückgeben. Wer wird nichts zurückgeben? Hier werde ich Dave eingeben und unser
Funktionsname ist nichts. Nichts. In
den runden Kleidern übergebe
ich einen normalen
Parameter namens X und in der Funktion den Typ
Hemo Im Grunde wird
es nichts zurückgeben. Dann werden
wir mit dieser leeren Funktion eine Spurleiste erstellen. Aber bevor ich die Spurleiste erstelle, müssen
wir den Namen
der Spurleiste definieren. Hier gebe ich
V mit zwei Punkten namens Window ein. Hier
verwende ich eine Methode namens Window mit dem
Namen Window, und wir müssen
einen Namen für dieses Fenster angeben.
Für unser
Ziehbar-Fenster gebe ich hier Tracking ein. Ich werde sechs Spurbalken erstellen, sechs Spurbalken erstellen weil wir den
oberen
Farbton-Sättigungswert und wir
auch den niedrigeren
Farbton-Sättigungswert abrufen müssen oberen
Farbton-Sättigungswert und wir
auch den niedrigeren
Farbton-Sättigungswert abrufen müssen Lassen Sie uns unsere
erste Spurleiste erstellen. Hier gebe ich C mit
zwei Punkten ein und erstelle eine Spurleiste. Diese Funktion. Dann müssen wir in den runden
Messingblättern zunächst
eine Spurleiste für den
unteren Grenzwert für Hu erstellen unteren Grenzwert für Hu Hier verwende ich
die Kurzform des unteren Hu H. Nachdem Sie den Namen
der Spurleiste erstellt
haben, müssen wir den Fensternamen übergeben In welchem Fenster wollen
wir die Spurleiste anzeigen. In den Doppelcodes werde
ich die Namensverfolgung des
Fensters bestehen. Als Nächstes müssen wir einen Wert übergeben. Hier müssen wir
den niedrigeren Wert übergeben
, der Null genannt wird. Dann müssen wir
den höheren Wert übergeben und
für einen höheren Wert übergebe
ich 255. Endlich müssen wir eine Funktion
übergeben. Diese Funktion wird nichts
zurückgeben, also werde ich
diese Funktion verwenden, nichts. Ich möchte nur den
Funktionsnamen kopieren und hier einfügen. Ich werde
keinen Standardwert für
unsere Spurleiste festlegen , da wir ihn minimal einstellen werden
. Dann werde ich
diese Zeile duplizieren und dieses
Mal werde ich den Namen dieser
Spurleiste
ändern, nämlich As As steht für niedrigere Sättigung. Dann dupliziere ich es A und
dieses Mal nenne ich es L V, niedrigerer Wert. Diese drei Spurbalken stehen
für den unteren Grenzwert. Jetzt müssen wir den
oberen Grenzwert übergeben. Ich werde
die ganzen drei Zeilen duplizieren. Unsere letzten drei Trigonwörter stehen also
für einen höheren Wert, einen
höheren Farbton und Syn höhere Sättigung und das
letzte für eine höhere Welle Jetzt müssen wir eine
Endlosschleife laufen lassen , um den Videoframe kontinuierlich zu
verarbeiten Dafür werden wir While
Loop verwenden. Hier gebe ich YT ein dann verwende
ich in diesem Illoop die Lesemethode Lesemethode erfasst jeden Frame von der Webcam, um
den Capture-Wert und
den Bullen-Wert zu speichern den Capture-Wert und
den Bullen-Wert .
Ich werde
insgesamt zwei Variablen deklarieren Zuerst deklariere ich B, das
den booleschen Wert speichert, dann deklariere ich
einen anderen Wert namens frame,
frame equal to cap
dot Nachdem wir
den gesamten Farbrahmen gelesen
haben, müssen wir den
Farbrahmen in HSV konvertieren Wie Sie wissen, verwendet das
OpenCBUSE BGR-Farbformat standardmäßig OpenCBUSE BGR-Farbformat Wir müssen es in das HSB-Farbformat
konvertieren. Ich werde es
sehr gut deklarieren Hs V gleich
V zwei, Punkt, CVD-Farbe Dann werde
ich in den runden Kleidern den Rahmen weitergeben Zuerst müssen wir die Bildquelle
übergeben. Ich werde den
Frame-Variablen Frame übergeben. Dann werde ich es
in CV mit zwei Punkten, Farben und Unterstrichen umwandeln und ich
werde es in HSV umwandeln Suchen Sie nach GR in HSV. Als Nächstes müssen wir den
HSV-Wert aus diesen Gleisbalken ermitteln. Dazu müssen wir
verschiedene Variablen deklarieren, um den Spurbalkenwert zu
speichern Für den unteren Wert gebe ich
Unterstrich H ein. Um
die Daten aus dieser Spurleiste abzurufen, müssen
wir eine Methode
namens Gate Track Bar Pause verwenden Ich binde CV mit zwei Punkten,
Gate, Trackbar, Pause, diesen einen, und dann drücken wir innerhalb
der Runde, innerhalb der doppelten Codes, zuerst müssen wir den Namen
des Track-Bans übergeben Aus welcher Spurleiste
möchte ich das nehmen, das ist H, H. Als Nächstes müssen wir den Fensternamen
definieren, und unser Fenstername ist Tracking. Ich werde diesen
Fensternamen verwenden, Tracking. Ich kopiere den
Fensternamen und füge ihn in die Doppelcodes hier ein. Auf die gleiche Weise müssen
wir
fünf weitere Variablen erstellen, um
den Wert aus der Spurleiste zu erhalten. Ich dupliziere diese
Zeile. Dieses Mal werde
ich den
Wert von AS extrahieren. Wenn er Unterstrich eingibt, wird auch das
Titel-Banname L Auf die gleiche Weise werde
ich alles erstellen. Dieser ist für V, und ich werde den Namen V
ändern . Dann dupliziere ich
diese drei Zeilen und mache aus
dieser einen HH H UnderscoEH. Das ist für einen hohen U-Wert. nächste ist für einen hohen
Sättigungswert, HH der letzte ist für HV Auch um die
Spur zu ändern
, aber der Name ist H V.
Diese Linien ziehen also die aktuelle Position der HSV-Spurbalken zurück, die die Unter- und
Obergrenze des
HSV-Farbbereichs darstellen Obergrenze des
HSV-Farbbereichs Wir werden es zum
Maskieren verwenden. Als Nächstes müssen wir ein unteres
und oberes HSV-gebundenes Array erstellen. Um diese Arrays zu erstellen, deklariere
ich eine
Variable L Unterstrich B. steht für Untergrenze Y um dieses
untere Grenzfeld zu erstellen, verwenden
wir
numPi p dot array, is the rounds, hier übergebe
ich den
gesamten unteren
Grenzwert Lunde H, Unterstrich a und Unterstrich V. Auf die gleiche Weise müssen wir Ich dupliziere diese Zeile und werde U UV steht für
Upper Bound Value. Tauschen Sie hier auch
den Variablennamen aus. Ich werde es schaffen HH. HH steht für höheren Wert Hs HH steht für
höhere Sättigung, höheres U, höhere Sättigung
und höheren Als Nächstes müssen wir eine Maske
mit dem unteren Grenzwert
und dem oberen Grenzwert erstellen . Um diese Maske zu erstellen, verwenden
wir die In-Range-Methode. Dies ist der wichtigste
Teil dieses Videos. Zuerst deklariere ich eine Variable namens mask mask, die CV two.in range
math boot in range entspricht CV two.in range
math boot in range Dann, innerhalb der Runde, müssen wir
zuerst die Quelle
übergeben Als Quelle
übergebe ich diese Variable HSV. Also binde HSv. Dann müssen wir
den unteren Grenzwert übergeben. Wie Sie sehen können, speichern wir den Untergrenzwert
mit dieser Variablen,
Unterstrich B, Untergrenze Unterstrich B, Untergrenze L unterstreicht B. Außerdem müssen wir den Obergrenzwert übergeben Und wir stellen den Perbundwert mit dem Unterstrich
B dar, das war's Hier erstellen wir eine Maske
mit einer Funktion. In der Funktion, die verwendet wird, um
eine Maske
auf der Grundlage von Farbwerten
im HSV-Farbraum zu erstellen auf der Grundlage von Farbwerten
im HSV-Farbraum Zuerst übergeben wir den
HSV-Farbraum. Dies ist ein HSV-Farbraumbild. Wir konvertieren hier das BGR-Bild
in HSV. Ich übergebe diese Variable. Zuerst übergeben wir ein Array mit unterem Grenzwert, dann übergeben wir ein Array mit
oberem Grenzwert. Jetzt konvertiert die
Funktion bit inne diese Werte in
ein Binärbild, und wir haben dieses
Binärbild in der Variablen mas gespeichert. Wie Sie wissen,
erzeugt das Binärbild insgesamt zwei Werte. Dabei steht Null für Schwarz und 255 und 255 für Weiß. Jetzt hebt diese Maske
den Grund im Rahmen hervor, der dem
angegebenen Farbbereich entspricht. Angenommen, Sie wählen eine blaue
Innu-Trackmarkierung aus, dann wird
nur der blaue
Teil angezeigt nur der blaue
Teil Jetzt müssen wir diese
Maske mit BTIs und Operator anwenden. Ich werde hier nicht im
Detail
erklären, wie Jungs und
Operator funktionieren Um die Maske auf
Bitwise und Operator anzuwenden, werde
ich
eine Variable RES deklarieren Rs entspricht, wir müssen BTI und den Subtyp CV
zwei Punkt B zweimal
verwenden und Dann müssen
wir in
den runden Bläsern zuerst die erste Quelle, also Frame
, als zweite Quelle übergeben Frame
, als zweite Quelle Ich werde
einen weiteren variablen Frame übergeben In unserem ersten Video übergeben wir den ursprünglichen Frame und in unserem
zweiten Video auch den Originalframe,
weil wir die
ursprüngliche Breite selbst maskieren und jetzt
die Maskenvariable übergeben müssen Hämotyp-Maske, die der Maske entspricht. Dadurch wird eine Ausgabe erstellt
, in der nur der Teil
des Originalrahmens angezeigt wird, der
dem angegebenen Farbbereich entspricht Im Grunde
werden Sie
das Objekt anhand der Farbe isolieren . Jetzt werde ich das
Video und die Maskenausgabe anzeigen, auch die RAS-Variable. Hier werde ich ImSo Mathod
verwenden, eine IM-Show vom
Typ V mit zwei Punkten Dann übergebe
ich in der Runde
zuerst
den Fensternamen, in
welchem Fenster ich den Rahmen anzeigen
möchte Unser Fenstername ist Frame. Dann übergebe ich
den variablen Frame. Im Grunde wird uns dieses Fenster das Originalmaterial
zeigen,
das farbenfrohe Filmmaterial,
Bier-Farbmaterial. Dann werde ich
dir das Maskenmaterial zeigen. Ich dupliziere diese Zeile und
ersetze den Rahmen durch eine Maske. Und endlich werde ich diese Res-Variable, dieses Filmmaterial,
diesen
Up-Tar-Schnittpunkt mit dem Bt-Operator
anzeigen Filmmaterial,
diesen
Up-Tar-Schnittpunkt mit dem Bt-Operator Also werde ich hier zuerst den Fensternamen Rs
ändern. Außerdem werde ich
diese variable Maske durch REs
ersetzen und diese Datei festlegen. Jetzt müssen wir die
IP-Bedingung so einstellen, dass die Schleife mit
der Wetey-Methode unterbrochen Schleife mit
der Wetey-Methode Hier gebe ich E ein, Zustand I CV,
zwei Punkte,
Wet-Key , Wet-Key Innerhalb des
Rundenprozesses
warte ich 25 Millisekunden
und Null x FF entspricht
zwei gleich ORD und Null x FF entspricht
zwei gleich ORD Im Inneren heißt es, wenn ich kleine Q auf unserer Tastatur
lobe, dann will ich Pause. Das ist es. Danach müssen wir die Aufnahme
veröffentlichen. Cap-Release-Methode. Dadurch wird
unsere Videoaufnahme veröffentlicht. Auch um alle Fenster zu zerstören. V zwei, Punkt, zerstöre alle Fenster. Also sind wir fertig, aber hier
habe ich einen dummen Fehler gemacht. Wie Sie sehen können, handelt es sich um ein Array, also müssen wir dieses Video
innerhalb der quadratischen Basis übergeben Hier auf quadratischer Basis. Jetzt werde ich diese Datei
erneut einrichten und diesen Code ausführen. Lassen Sie uns nun den
Code in unserem Terminal ausführen. Nach einem Klick auf die
Schaltfläche Ausführen müssen wir einige Zeit
warten
, bis unsere Webcam gestartet ist. Wie Sie sehen können,
muss sie unser Fenster öffnen. Hier müssen
wir vier Fenster angeben. Der erste ist für die Tracking-Leiste, der zweite
für den Originalframe und der dritte für die Maske. Es ist für Bis-Maske und
ich werde
alle Fenster
nebeneinander platzieren , damit
wir das Ergebnis sehr einfach vergleichen können. Wie Sie sehen können, ist
dies der einfarbige
Flaschenverschluss, den ich als Gegenstück
zur Objektverfolgung verwenden
werde. Hier verwende ich einen Flaschenverschluss in einer einfarbigen blauen
Farbvariante. Sie können jedes
einfarbige Objekt verwenden, und ich werde diese
Farbe mithilfe unserer Spurleiste anpassen. Und jetzt müssen wir mit
dieser Spurleiste spielen , damit sie der Farbe
des Flaschenverschlusses entspricht. Wir müssen
mit dem Wert von sechs spielen. Zuerst werde ich den hohen Wert
erhöhen. Dann werde ich
den hohen Sättigungswert erhöhen. Wir müssen diese Balken anpassen
, um das perfekte Ergebnis zu erzielen. Wie Sie bemerkt haben, wird das Geräusch reduziert,
wenn
ich die Werte ändere , und ich versuche
, uns auf unseren Flaschenverschluss zu konzentrieren. Ich werde diesen Prozess zuerst
weit vorantreiben , um das perfekte Ergebnis zu erzielen. Jetzt
geben mir diese Koordinaten fast das perfekte Ergebnis. Jetzt können Sie sehen, dass es unser Objekt
erfolgreich verfolgt. Es kann unseren blauen
Flaschenverschluss verfolgen. In unserem Rahmenfenster können Sie
das Originalmaterial sehen und in unserem Maskenfenster können Sie
hier das Filmmaterial des
BtS-Operators sehen. Hier steht Weiß für
den Flaschenverschluss und Schwarz für einen
nicht ausgewählten Bereich Aber in unserem dritten Fenster REAs können Sie
hier das
tatsächliche Farbobjekt sehen Hier seht ihr den
genauen Flaschenverschluss. Ohne diesen Flaschenverschluss können
Sie hier nichts sehen, da er nur die
Farbsegmentierung
in diesem Fenster verfolgt Farbsegmentierung
in diesem Fenster Lassen Sie uns jetzt das Fenster schließen
und zurück zum Programm gehen. Auf diese Weise können wir die
Objektverfolgung auf der Grundlage der
Farbsegmentierung
durchführen Objektverfolgung auf der Grundlage der
Farbsegmentierung Ich hoffe,
Ihnen ist jetzt klar, wie wir
es nach
fast demselben Prozess erstellen können es nach
fast demselben Prozess Wir können damit Air
Canvas erstellen Wir werden in unserem kommenden Tutorial mehr
darüber erfahren. Mach dir darüber keine Sorgen.
Danke, dass du dir dieses Video angesehen hast. Seien Sie gespannt auf unser
nächstes Tutorial.
28. Module importieren und Mediapipe-Objekt einrichten: Schön, dass ihr wieder da seid, Leute. Ich bin wieder mit
einem neuen aufregenden Projekt
im Zusammenhang mit OpenCV Und heute werden
wir in diesem
Projekt Finger Counter
mit Hilfe des
Media Pipe-Moduls erstellen mit Hilfe des
Media Pipe-Moduls Lassen Sie mich Ihnen nun ein Beispiel zeigen. Eine, die wir erstellen werden. Wie Sie sehen können,
startet es unsere Web-Kamera. Und jetzt werde ich meine geschlossene Hand
heben. Wie Sie sehen können, zeigt es jetzt keine Finger und
es verfolgt auch alle
Finger erfolgreich. Hier kannst du
alle Landmarken sehen, und jetzt werde ich meinen ganzen Finger
ausbreiten. Wie Sie auf Ihrem Bildschirm sehen können, jetzt fünf Finger gedruckt. Sie können feststellen, dass es alle
Fingergelenke und Zähne verfolgt. Und wenn ich meinen Daumen schließe, kannst du
jetzt sehen, dass er vier Finger
abdruckt. Und wenn ich es wieder
hochhebe, druckt es fünf. Und wenn ich meinen Zeigefinger bewege, wie Sie sehen, werden
jetzt vier Finger angezeigt. Auf die gleiche Weise
verfolgt es alle Finger. Es zählt alle Finger und verfolgt
auch alle
Fingerkoordinaten. So funktioniert unser
Fingerzähler. Endlich sind wir in meinem
Visual Studio-Code-Editor, und wie Sie sehen können,
erstelle ich
hier bereits eine
Python-Datei main dot pi. Zuerst werde ich
unser Hauptmodul, CV Two, importieren. Um also zu tippen, importieren Sie CV Two. Dann müssen wir
ein wichtiges Modul installieren, nämlich Media Pipe. Um die Media Pipe zu installieren, müssen
wir diesen Befehl eingeben. P installiere OpenCB Python Media Pipe und dann
musst du Enter drücken Wie Sie sehen können, ist die Anforderung
bereits erfüllt. Ich habe dieses Modul bereits heruntergeladen, aber Sie müssen den
Download-Vorgang abschließen. Dann zurück zum
Hauptpunkt Pi Pi und dieses Mal müssen
Sie Media Pipe importieren. Das Media Pipe-Modul. Also, um Import
Media Pipe als MP einzugeben. Jetzt haben Sie vielleicht die Frage,
was ist Media Pipe? Media Pipe ist ein leistungsstarkes
Open-Source-Framework von Google, Aufbau einer Pipeline für
maschinelles Lernen mit
mehreren Modellen
entwickelt wurde Pipeline für
maschinelles Lernen mit
mehreren Modellen Es bietet eine Sammlung
plattformübergreifender Bibliotheken und vortrainierter Modelle
für die Implementierung Aufgaben im Bereich
Computer Vision und
maschinelles Lernen in Echtzeit Und wenn ich über
seine allgemeine Verwendung spreche, wird
es zur Phasenerkennung verwendet. Es kann Phasen erkennen und Phasen in Echtzeit
verfolgen. Dann können wir es
für die Schätzung der Pose verwenden. Es kann die Körperhaltung des Menschen identifizieren, was für Fitness-Apps nützlich ist Wir können es auch
für die Handverfolgung verwenden. Damit können wir
Handbewegungen verfolgen und die Geste
erkennen. Wir können es auch für die Erkennung von
Drei-D-Objekten
für die argumentierte Realität verwenden Erkennung von
Drei-D-Objekten
für die argumentierte Realität In diesem Tutorial werden
wir jedoch Hand-Tracking
verwenden Dieses Modul ist sehr
leicht und schnell. Es funktioniert auch auf
einer Vielzahl von Geräten, einschließlich Geräten mit geringem Stromverbrauch. Jetzt, nachdem wir unsere Bibliotheken eingegeben
haben, müssen wir
die Media Pipe Hands initialisieren Dafür deklariere ich zuerst
eine Variable und unser
Variablenname ist MP,
underscopean, media pp hand,
media pipe hand gleich PTT,
Lösung von hier aus, ich
möchte Hands
aufrufen eine Variable und unser
Variablenname ist MP,
underscopean, media pp hand,
media pipe hand gleich PTT,
Lösung von hier aus, ich
möchte Es wird die Hands-Lösung aus dem Medium verlassen, beide
Hände ,
die dem
Punch P entsprechen, die Hand unterschreiben
, sodass ich eine Methode namens
Hände Punch P entsprechen, die Hand unterschreiben
, sodass ausführe In den Runden müssen wir
dann einige Parameter
wie den statischen Bildmodus, die
maximale Anzahl an Händen
und die minimale
Erkennungssicherheit übergeben wie den statischen Bildmodus, maximale Anzahl an Händen und die minimale
Erkennungssicherheit Zuerst
gebe ich den Wert Static Image Hand, Underscore, Image, Underscore, Mode, Static
Image Mode gleich, und ich mache den Dann übergebe ich die
maximale Anzahl an Händen. Höchstzahl,
Unterstrichzahl, NUM, Unterstrichzeiger, maximale
Anzahl von Händen, vorerst
entspricht, dass ich eins bestehen
werde Mach dir keine Sorgen. Ich
erkläre es später. Endlich werde ich das
Mindestmaß an Erkennungssicherheit erreichen. Geben Sie also „Mittelwert“, „Unterstrich Erkennung unterstreichen“ die Konfidenzrate Entspricht Hermon und setzt den Wert auf 0,7 Wie Sie sehen können,
führen wir hier eine Methode namens hands aus, und als ersten Parameter übergeben
wir den statischen Wir lassen es fallen.
Was heißt das? Das heißt, es ist für Videos
optimiert und erkennt Hand nur im ersten Bild und Spuren
im darauffolgenden Bild. Dann legen wir beim zweiten
Parameter das Limit fest. Hier legen wir ein
Limit für die Anzahl der Hände fest und hier überschreiten wir eines. Er beschränkt die Erkennung auf eine Hand. Endlich, wie Sie sehen
können, verwendet Herro einen anderen Parameter, die minimale
Erkennungssicherheit Hier legen wir die minimale
Erkennungssicherheit Nullpunktseite fest. Der Flügel
legt den Schwellenwert für
die Erkennungssicherheit Niedrigere Schwellenwerte können zu falsch positiven Ergebnissen
führen. Als Nächstes müssen wir die MP-Zeichnung
definieren. Es ist ein Hilfsprogramm zum
Zeichnen von Orientierungspunkten und Verbindungen auf erkannten
Händen. Lass es mich dir zeigen. Geben Sie hier P ein, Unterstrich zeichnen, der dem Heldentyp pt
entspricht,
eine Methode namens Lösung, Punkt zeichnen, Utes,
Unterstrich utils Unterstrich Wie ich Ihnen bereits gesagt habe, handelt es sich dabei um
ein Hilfsprogramm zum Zeichnen Orientierungspunkten und Im Grunde genommen initialisiert
Hero in diesem Abschnitt Media Pipe Hand Als Nächstes müssen wir eine Funktion
erstellen. Wir müssen eine
Fingerzählfunktion erstellen, und das werde ich in diesem Video nicht
tun. Das ist es also für dieses Video. Im nächsten Video werden
wir eine Funktion definieren. Also danke, dass
du dir dieses Video angesehen
hast, freue dich auf unser nächstes Studio.
29. Fingerzählerfunktion erstellen: Schön euch zu sehen. Das ist ein weiterer
Teil dieses Projekts. Und hier werden wir
eine Funktion definieren , die uns die Finger
zählen kann. Außerdem kann es unsere Daumen zählen. In unserem vorherigen Tutorial initialisieren
wir die
Media Pipe-Hand, und hier werden wir eine
Funktion erstellen Wir werden
eine Funktion namens
D Dave definieren , unser
Funktionsname ist Count Finger UnderscoeFinger. Zählen Sie mit dem Finger, und innerhalb der umgebenden Aussparung
wird ein Argument benötigt, nämlich
Handmarkierung, Unterstrich Landmarke Hier werden wir
die erkannten Handmarken an diese Funktion
übergeben Dann definiere
ich in dieser Funktion eine Liste,
eine leere Liste, und unser
Listenname wird abgetippt. Finger entsprechen einer leeren Liste. In dieser Liste wird
der Status jedes Fingers gespeichert. Und jetzt müssen wir das Wahrzeichen
definieren. Dafür deklariere ich ein sehr wohl bekanntes
Wahrzeichen, Landmarks gleich Hand,
Landmarks Landmark. Landmark ist eine Liste von 21 Punkten, wobei W die
X-Koordinate, die Y-Koordinate
und die Z-Koordinaten enthalten soll ? Es ist eine Liste von 21 Punkten , die verschiedenen
Teilen der Hand
entsprechen. Wie Sie in diesem Bild sehen können, sind
dies die
Landmark-Koordinaten, die von Media Pipe bereitgestellt werden. So hat Media
Pipe unsere Hände gelesen. Wie Sie sehen können,
ist das unser Daumenfinger, das ist Zeigefinger,
das ist Mittelfinger. Das ist der Ringfinger und das ist der kleine Finger Wie Sie sehen können, kann es alle Gelenke
unseres Fingers
erkennen Außerdem kann es die Spitze
dieses Fingers und jede
der
mit einer Zahl definierten Koordinaten erkennen dieses Fingers und jede
der . Wir werden diese
Zahlen und die XXs- und
YXS-Koordinaten verwenden , um
die Finger von unserer Hand zu zählen Kehren wir zum
IS-Studio-Code zurück. Es kann also 21
Punkte von unserer Hand erkennen. Jetzt müssen wir den Daumen erkennen. Wir müssen die X-Koordinaten
für die Ausrichtung der linken und rechten
Hand überprüfen . Dafür HemrotypFingers, Methode
Dot Append. In den runden Kleidern hämotypisieren wir Landmarken und ich
möchte von dieser Landmarke aus, ich will den vierten Index, Tt, ich will die
Xs-Koordinaten überschreiten und weniger als Landmarken innerhalb
des Quadrats ss
Amel den hämotypisieren wir Landmarken und ich
möchte von dieser Landmarke aus,
ich will den vierten Index, Tt,
ich will die
Xs-Koordinaten überschreiten und weniger als
Landmarken innerhalb
des Quadrats ss
Amel den Index drei Punkt XX. Wie ich Ihnen schon sagte, hat sich unsere Hand in 21
Landmarken aufgeteilt. Wie ich Ihnen bereits sagte,
ist ein Wahrzeichen eine Liste von 21 Punkten Jeder Punkt steht für einen
bestimmten Teil unserer Hand und jeder Punkt hat
insgesamt drei Koordinaten. X-XS-Koordinate, XS-Codent
und Z-XS-Koordinate, und Landmark-Index
4 steht die Daumenspitze
gemäß Medienleitung, und Landmark 3 steht für
das Daumengelenk in der Nähe
der Spitze. Dies sind die X-Koordinaten der
Daumenspitze und des Gelenks Lassen Sie uns nun darüber sprechen, welche
Logik dahinter steckt? Warum verwende ich kleiner als Sinus? Warum Landmark vier Punkt x weniger
als Landmark drei Punkt X? Das heißt, wenn die Koordinaten
der Daumenspitze kleiner als die
Koordinaten des Gelenks sind, bedeutet das, dass der Daumen nach außen gestreckt
ist Dies gilt normalerweise
für die linke Hand wenn der Daumen ausgestreckt ist,
und für die rechte Hand funktioniert
diese Logik, weil der Rahmen horizontal umgedreht
wird Und es stellte sicher, dass
die X-Koordinaten für die Erkennung konstant
sind Nachdem ich die Logik
verstanden habe, haben
wir uns vielleicht gefragt,
warum wir das an diese Fingerliste
anhängen müssen an diese Fingerliste
anhängen Hier
speichern Fingerpunktstifte das Ergebnis,
wahr, entweder Wenn die Bedingung
erfüllt ist,
wird der Hauptdaumen nach außen gestreckt Schlägt dies fehl, wird der Daumen nicht ausgestreckt. Dieser Code dient also der
Daumenerkennung. Jetzt müssen wir
andere Finger erkennen. Dafür verwende ich vier Schleifen für Pep innerhalb des Quadrats SS,
ich werde die Y-Koordinaten
für diese 812, 16, 20 überprüfen Dann müssen wir innerhalb dieser Vier-Schleife jetzt
die Vier-Schleife verstehen Was bedeutet das?
Für Trinkgeld in acht ,
12, 16 und 20. Das heißt, es iteriert durch
die Spitze des Zeigefingers, was mit
acht dargestellt wird, durch die Mittelfingerspitze, die mit 12 dargestellt wird, dann durch die Ringfingerspitze, die mit
16 dargestellt wird, und durch die kleine Fingerspitze, die mit 20 dargestellt wird Dann fügen sich innerhalb dieser vier Schleifen die
Hämatit-Finger an der
Innenseite der runden Resis an, die
Markierung innerhalb der quadratischen Resis P, und ich möchte auf die Y- und Y-Koordinaten zugreifen Weniger als Landmark,
innerhalb der quadratischen Resis,
PP minus zwei, ich möchte Nun stellt sich die Frage, was bedeutet dieser Zustand Was bedeutet
diese Logik? Im Grunde wird überprüft, ob
unser Zeigefinger
ausgestreckt ist oder nicht. Und Landmar TP, verweise auf
die aktuelle Fingerspitze. Landmar-Spitze, Punkt YX, bezieht sich auf die aktuelle
Fingerspitze und Landmark-Spitze minus zwei Punkte YxSrfer auf das
Grundgelenk Versuchen wir es anhand eines echten Bildes zu verstehen
. Wie Sie sehen können, beobachten
Medienvertreter auf diese Weise unsere Hand. Wie Sie sehen können,
ist acht das
Zeigefinger-Tif und 12 ist die
Mittelfingerspitze, und 16 ist das
Ringfinger-Tif und 20 ist die Spitze des
kleinen Fingers Und wenn wir vom Spitzenpunkt
aus zwei minus zwei machen, dann kannst du das Gelenk sehen Hier sieht man das Grundgelenk. Wenn wir zwei von acht
abziehen, ergibt das sechs. Dann ist Sechs das Grundgelenk
dieses Zeigefingers. Auf die gleiche Weise können wir andere
Fingergelenke
identifizieren , zehn, 14, 18. Das sind also die
Y-Koordinaten der Spitze und das sind die Y-Koordinaten
des Grundgelenks unserer Finger. Und hier vergleichen wir
die Y-Koordinaten der Spitze mit dem Grundgelenk. Und wenn die Spitze höher ist, gilt
der Finger als gestreckt. Und wenn die Spitze niedriger ist, gilt der Finger als gefaltet. Und unsere Append-Methode
fügt das wahre falsche Ergebnis für jeden Finger in dieser Fingerliste
in dieser leeren Fingerliste hinzu Wenn die Bedingung wahr ist, bedeutet das, dass der
Finger ausgestreckt ist, und wenn er herunterfällt, bedeutet das, dass der Finger gefaltet ist Jetzt haben wir also die Liste, anhand derer der ausgestreckte
Finger und der gefaltete Finger
identifiziert werden können . Und jetzt müssen wir die Liste
zählen. Dafür müssen
wir außerhalb
dieser Vierschleife, ihrem Typ Return, ihrem Typ Return, die
Fingerliste zählen, sonst nichts. Finger, Finger, Punkt,
Zählmethode, Zählen. Und innerhalb der Runbs müssen wir nur die wahren Werte
zählen,
nicht die falschen Werte Also hier tippe ich, wahr. Das ist es. Lassen Sie uns nun diesen Abschnitt
E abschließen . Und
wie Sie sehen können, öffne
ich Seite an Seite meinen Visual
Studio-Code-Editor und
dieses Bild, öffne
ich Seite an Seite meinen Visual
Studio-Code-Editor und um
die Diaten, die Landmarken, zu verstehen Hier definieren wir zuerst eine Funktion und unser
Funktionsname ist Count-Finger, und sie nimmt
Hand Landmark als Argument Dann erstellen wir hier eine
EmptyList-Fingerliste. Es wird den
Wert in zwei oder falsch speichern? Wahr bedeutet, dass der Finger
gestreckt ist und falsch bedeutet, dass
der Finger nicht gestreckt ist. Dann erreichen wir das Wahrzeichen. Landmark ist eine Liste von 21
Punkten, und wie Sie sehen können, sind
dies Punkte, die von Media Pi
bereitgestellt und jeder der Punkte enthält
insgesamt drei Koordinaten. XXs YxS und ZxS. Im nächsten Teil ermitteln wir den Daumen mit
dieser Append-Methode Wie Sie sehen können, ist dies das
Daumenbild der rechten Hand. Und das ist die markante Zahl des Daumens, die vier ist. Und aus diesem Daumen
extrahieren wir hier die Xs
dieses Daumenwerts. Dann greifen wir auf das Daumengelenk zu,
das der dritte Punkt ist, und aus diesem dritten extrahieren wir
wiederum den xs-Wert. Und wenn die Bedingung
zutrifft, bedeutet das, dass unser
Daumen gestreckt ist. Wenn der S-Wert von Landmark 4 niedriger als der X-Wert von Landmark
3
ist, bedeutet
dies, dass die Bedingung erfüllt ist. Das bedeutet, dass der Daumen ausgestreckt ist. Wenn Sie feststellen, dass Sie
sehen können, dass die Entfernung zwischen der Grenzlinie von
dieser Landmarke 4 etwa 20 Pixel
beträgt und die Entfernung
zwischen Grenzlinie zwei, Landmark drei
etwa 60 Pixel oder 80
Pixel Landmark drei ist . Der X-Wert ist höher als der Wert von Landmark vier,
ich meine, der Daumen
ist ich meine, der Wenn wir unseren Daumen auf zehn falten, wäre
Landmark 4
größer als Ich meine, der Daumen ist gefaltet. Hier vergleichen wir die Daumenspitze
mit dem Daumengelenk. Auf die gleiche Weise wie
bei anderen Finger greifen
wir zunächst mit dieser Schlaufe auf alle Spitzen zu. In dieser Liste
reichen wir Zeigefingerspitze, Mittelfingerspitze,
Ringfingerspitze und kleine Fingerspitze Dann extrahieren wir die
Y-Koordinaten aus dieser Spitze und vergleichen sie dann mit der
Ys-Richtung auf diese Weise Für unseren Daumen vergleichen wir
mit der Xs-Richtung. Aber dieses Mal vergleichen wir
mit der Richtung von YX. Wenn der Wert für die Verbindung mit der Daumenbasis größer ist als der
Wert beim Tippen auf den Daumen, ist die Bedingung erfüllt Und es wird der
wahre Wert an diese Liste angehängt. Und als nächstes zählen wir
die wahren Werte. Wie viele wahre Werte
haben wir in dieser einzigen Liste? Nehmen wir an, wir haben
laut diesem Bild insgesamt fünf wahre Werte in dieser Liste. Dann wird es fünf zurückgeben. Es wird
alle wahren Werte zählen. Wenn eine der
Bedingungen falsch ist, wird der falsche Wert nicht
gezählt, dann werden vier zurückgegeben. So wird unsere
Funktion also funktionieren. Das ist es also für dieses Video. Im nächsten Teil werden
wir unsere Hauptschleife starten. Wir werden Frame lesen. Vielen Dank, dass
Sie sich dieses Video Seien Sie gespannt auf unseren nächsten Teil.
30. Hauptschleife erstellen und das Projekt ausführen: Schön
euch zu sehen. Ich bin wieder mit einem weiteren Video zu
diesem Projekt zurück. Und in diesem Video werden
wir die Hauptschleife lernen. Zuerst öffne ich
die Webcam. Um die Webcam zu öffnen, deklariere ich
zuerst eine Variable, und unser Variablenname ist CAP, CAP entspricht cv dot
Video Capture Method. Videoaufnahme. Dann müssen
Sie in den runden Pressen die Kameraquelle übergeben. Ich werde
meine Standardkamera einschalten, also werde ich Null übergeben. Hier werde ich Y eingeben, Kappe ist offen, ist offen. Dann werde ich in dieser While-OP zuerst die Lesemethode
ausführen. Kappe nicht gelesen. Wie Sie wissen, wird die
Lesemethode zu zwei Ergebnissen zurückkehren, einem Bullen-Wert und
dem ursprünglichen Frame, und sie wird in einem variablen Hero-Typ um den
Erfolg zu speichern Komma und um den
Frame zu speichern, mehrere Frames, was der
Cabot-Lesemethode entspricht Dann eine Mutua unter EP-Bedingung. Wenn das nicht gelingt, dann möchte
ich
innerhalb der IP-Bedingung die Schleife durchbrechen Wach auf, das ist es. Und jetzt
müssen wir den Rahmen für das Lty
E
horizontal umdrehen , damit der Spiegel überprüft HemtiFrame entspricht also der
CV-Zwei-Punkt-Flip-Methode. Umdrehen. Dann werde
ich in
den runden Kleidern den Rahmen weitergeben und auch den Flipcode
weitergeben. Und ich werde
es horizontal umdrehen, also werde ich einen weitergeben. Dann müssen wir diesen
Bier-Frame in RGB-Farbe umwandeln. Dafür deklariere ich eine weitere Variable RGB
unter dem Scope Frame, CVD-Farbe des Hämatyps CV mit
zwei Punkten
entspricht Dieser. Dann muss in
den runden Kleidern
zuerst
die Quelldatei übergeben werden, also werde ich den Frame übergeben, dann nur noch
den farbigen Code. Lebenslauf zwei Punkte hier Ich
werde Farbe,
Unterstrich BGR in RGB umwandeln , diesen Hier konvertieren wir diesen
Frame in BGR in Algeb. Nachdem wir diesen
Rahmen in die Algenfarbe konvertiert
haben, müssen wir Dafür müssen wir die Prozessmethode
ausführen. Hier werde ich das Ergebnis gleich den Händen
binden , Prozessmethode ausführen. Prozess. Innerhalb
dieser Rundheit müssen
Sie dann den RGB-Frame übergeben RGB, Unterstrich kostenlos. Als Nächstes laufe ich
in Kondition. Wenn das Ergebnis mehrere
Hände ergibt, geben Sie also
mehrere Unterstriche, Hand,
Unterstriche Dann füge diese Bedingung ein, ich möchte eine Viererschleife laufen lassen Er tippt vier, händige, uncoe-Landmarks im Ergebnis,
Punkt, mehrzeilige Landmarken Also werde ich diese
Linie kopieren, Landmarken mit mehreren Zeigern. Noch ein Pest. Dann müssen
wir
innerhalb dieser vier Schleifen die Orientierungspunkte zeichnen Im Grunde spreche ich
über diese Wahrzeichen. Wir müssen diese Wahrzeichen zeichnen. Hier überprüfen wir die erkannten
Hände in der Ergebnisvariablen. Es enthält die erkannten
Handmarken, die vom
Media Pipe Hands-Modul geschrieben wurden. Wenn eine Hand erkannt wird, enthält
dieses Feld eine Liste mit
Handmarkenobjekten. Wenn keine Hände erkannt werden, ist
dieser Wert „Keine“, und dann durchlaufen wir
die erkannten Hände, wobei wir für die
Hand Orientierungspunkte verwenden, um Landmarken für mehrere Wie Sie wissen, enthält jedes
Objekt 21 Orientierungspunkte
wie Daumen, TP, Zeigefingerspitze usw.,
und jede der
Landmarkenkoordinaten speichert die Werte XXs YX und ZxS Und jetzt müssen wir ein
Wahrzeichen in unsere Hand zeichnen. tippe ich hier in das folgende Feld Dafür tippe ich hier in das folgende Feld
ein:
Aminotyp, MP Underscoe und Drawing
NP Underscoe Drawing, Punkt, hier, ich werde
die Landmarke zeichnen Also tippe ich, zeichne
einen Unterstrich als Landmarke. Landmarke zeichnen bedeutet, dass
der Rundungsmesser sagt, zuerst stelle ich den Rahmen zur Verfügung,
in welchem Rahmen ich die Landmarke zeichnen
möchte Übergeben Sie also den Rahmen. Dann müssen wir die Hand-Landmarken,
die
Hand-Landmark-Variable und die Landmarken angeben . Diese variable Handmarke ist im Grunde das Hauptobjekt, das 21 Punkte
haben wird Als Nächstes müssen wir definieren,
welche Punkte miteinander verbunden sind, wie Verbindungen und Spitzen Dafür gebe ich MP underscore
ein, also zeichne ich die Landmarken auch unter
Berücksichtigung der Finger Dafür deklariere ich
eine weitere Variable für die Anzahl der
Fingerunterstriche Anzahl der Finger entspricht, ich gebe eine
Methode ein: Finger zählen Sagt der Allrounder, hier gebe ich Hand Landmark
Handmark ein, diese Im Grunde
nenne ich hier die Funktion, die ich schon erstelle, diese hier, Finger zählen Und wie Sie als Parameter sehen können, müssen
wir Landmarken von Hand übergeben. Also nennen wir diese Funktion. Nachdem wir nun die Finger gezählt
haben, müssen wir die Anzahl
der Finger anzeigen. Dafür werde
ich hier die Put-Text-Methode verwenden. Geben Sie also CV mit zwei Punkten ein und geben Sie Text ein. Text eingeben. Dann zuerst in das Rundkleid, werde
ich den
Rahmen mit dem Quellbild durchziehen Frame, Komma, und hier
werde ich die String-Methode verwenden. Dann gebe
ich innerhalb der Doppelstriche Finger und
Doppelpunkt in Cibass übergebe diese Variable, Tinger count. Und als Nächstes müssen wir
die Position dieses Textes definieren. Also in der Runde werde
ich 1070 bestehen. Dann müssen Sie den Schriftstil
definieren. Also werde ich CV an
die Schrift Hoch Simplex,
Underscoeh Simplex, diese hier binden Underscoeh Dann musst du die Schriftgröße
definieren,
also übergebe ich zwei Es ist der Wert für die Schriftskala. Als Nächstes müssen wir die Schriftfarbe
definieren. Als Schriftfarbe
werde ich also die blaue Farbe verwenden. Wir müssen es
in einem BGR-Format übergeben. Zuerst gebe ich 2550
, Null ein. Danach müssen Sie die Schriftstärke angeben. Als Telefonstärke gebe
ich zwei an. Also haben wir
diesen Text erfolgreich in diesen Rahmen eingefügt. Danach müssen wir diesen Frame
anzeigen. Dafür müssen wir,
ich bin Shomthodoside
, die IP-Bedingung ausführen ich bin Shomthodoside Also hier, außerhalb
der IP-Bedingung, werde
ich CV Two Dot,
CV Two Dot, I am
Show eingeben Two Dot, I am
Show Dann innerhalb der Runden, innerhalb des
Doppelkurses, werde ich tippen
, Finger gezählt Im Doppelkurs müssen
wir zuerst den Fensternamen definieren und
unser Fenstername wird
mit
dem unser Fenstername wird Dann müssen wir
den Frame-Namen übergeben,
welcher Frame ich anzeigen möchte.
Unser Frame-Name ist Frame Außerdem müssen wir die
Schleife mit der Weitey-Methode unterbrechen. Ich tippe I, CV mit zwei Punkten auf der Wet-Taste. Innerhalb der runden Stücke warte
ich
eine Millisekunde und in den
Rundkleidern null X F gleich
ORD Innerhalb des einzigen Kurses werde
ich Q bestehen. Innerhalb dieser IP-Bedingung möchte
ich Laute brechen, brechen Dann werde ich die Gefangenen
freilassen. Cap Dot Release. Außerdem müssen wir alle Fenster
zerstören. Summentyp, CV zwei Punkte,
zerstöre alle Fenster. Dieser. Und bevor wir diesen Code ausführen, lass
mich dir etwas zeigen. Hier müssen wir dafür sorgen, dass es
Landmarken unterstreicht. Wir müssen eine, ebenfalls in den
Typen MPH und Punkt-Zeiger, einbauen Typen MPH und Punkt-Zeiger Es wird definieren, welche
Punkte miteinander verbunden sind, wie Gelenke und Spitzen usw. Danach können Sie
diese Datei einrichten und diesen
Code in Ihrem Terminal ausführen Und wenn Sie diesen
Code in Ihrem Terminal ausführen , wird
zunächst
eine Warnung angezeigt. Diese Warnung, dann
wird Ihre Webcam gestartet. Du musst eine
Weile warten. Wie Sie sehen können, startet
es unsere Web-Kamera. Jetzt werde ich meine geschlossene Hand
heben. Wie Sie sehen können, werden jetzt
keine Finger angezeigt und alle
Finger werden erfolgreich verfolgt. Hier kannst du
alle Landmarken sehen und jetzt werde ich meinen ganzen Finger
ausbreiten. Wie Sie auf Ihrem Bildschirm sehen können, jetzt fünf Finger gedruckt. Sie können feststellen, dass es alle
Fingergelenke und Zähne verfolgt. Und wenn ich meinen Daumen schließe, kannst du
jetzt sehen, dass er vier Finger
abdruckt. Wenn ich es wieder
hochhebe, druckt es fünf. Und wenn ich meinen Zeigefinger bewege, wie Sie sehen, werden
jetzt vier Finger angezeigt. Auf die gleiche Weise
verfolgt es alle Finger. Es zählt alle Finger und verfolgt
auch alle
Fingerkoordinaten. So funktioniert unser
Fingerzähler, und wenn Sie dieses Programm
beenden
möchten, müssen Sie das kleine Q
auf Ihrer Tastatur loben und schon
wird die Schleife unterbrochen. Ich wünsche Ihnen viel Spaß mit diesem Projekt. Vielen Dank, dass Sie sich
dieses Video angesehen haben und bleiben Sie gespannt auf unser nächstes Projekt.