Python OpenCV: Computer Vision mit 10 praktischen Projekten beherrschen | Jayanta Sarkar | Skillshare
Suchen

Playback-Geschwindigkeit


1.0x


  • 0.5x
  • 0.75x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Python OpenCV: Computer Vision mit 10 praktischen Projekten beherrschen

teacher avatar Jayanta Sarkar, full stack web developer and Python prog

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Kurs-Einführung

      2:37

    • 2.

      OpenCV in unserem lokalen Computer installieren

      3:07

    • 3.

      Bilder und Videos mit openCV lesen

      13:24

    • 4.

      Frames in der Größe ändern und skalieren

      8:58

    • 5.

      Verschiedene Formen zeichnen und Text auf das Bild setzen

      18:55

    • 6.

      Wichtige Funktion in einem offenen Lebenslauf

      13:35

    • 7.

      CV-Bildübersetzung öffnen Teil1

      6:36

    • 8.

      CV-Bildrehung öffnen Teil2

      5:34

    • 9.

      Cv-Bildübersetzung zuschneiden Teil 3

      6:22

    • 10.

      Konturerkennung Opencv

      8:51

    • 11.

      Konturerkennung Opencv Teil 2

      7:49

    • 12.

      Farbräume

      12:23

    • 13.

      Farbkanäle

      7:09

    • 14.

      Unschärfe

      11:23

    • 15.

      BITWISE-Betrieb

      15:11

    • 16.

      Maskierung

      7:49

    • 17.

      Graustufen-Bildhistogramm opencv

      11:51

    • 18.

      Farbbildhistogramm

      6:37

    • 19.

      Schwellenwerte openCV

      11:21

    • 20.

      Anzeige der Koordinaten der auf dem Bild geklickten Punkte mit Python OpenCV

      12:57

    • 21.

      Weiß- und Schwarzpunkt-Erkennung mit OpenCV

      16:02

    • 22.

      Rechteckige Formen zeichnen und Objekte extrahieren

      26:35

    • 23.

      Texterkennung und -extraktion mit OpenCV und OCR

      13:44

    • 24.

      Unsichtbares T-Shirt mit OpenCV

      29:22

    • 25.

      Hintergrundsubtraktion – OpenCV

      15:09

    • 26.

      Gesichtserkennung mit Python und OpenCV mit Webcam

      15:19

    • 27.

      Objekte ähnlicher Farbe in Python mit OpenCV erkennen

      20:35

    • 28.

      Module importieren und Mediapipe-Objekt einrichten

      6:44

    • 29.

      Fingerzählerfunktion erstellen

      11:03

    • 30.

      Hauptschleife erstellen und das Projekt ausführen

      10:36

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

17

Teilnehmer:innen

--

Projekt

Über diesen Kurs

Kursbeschreibung:

Die Möglichkeiten von Computer Vision mit OpenCV in Python entfalten! Dieser umfassende Kurs wurde entwickelt, um Anfänger und Fortgeschrittene durch die Grundlagen von OpenCV zu führen, einer Branchenstandardbibliothek für Computer Vision und Bildverarbeitung. In 10 spannenden, praxisorientierten Projekten lernst du, wie du Bilder und Videos analysierst, bearbeitest und verbesserst und abstrakte Konzepte in reale Anwendungen verwandelst.

Von der Bilderkennung über erweiterte Filterung, Objektverfolgung bis hin zu Live-Videomanipulation ist jedes Modul mit Projekten ausgestattet, die das Lernen und das praktische Verständnis stärken. Durch klare, schrittweise Tutorials und fesselnde Übungen erwirbst du die Fähigkeiten, die du brauchst, um eine Vielzahl von Computer-Vision-Herausforderungen selbstbewusst zu meistern.

Das Lernziel:

  • Grundlagen der Bild- und Videobearbeitung: Grundlegende Konzepte und Methoden für die Bildmanipulation verstehen.
  • OpenCV-Kernfunktionen: Grundlegende OpenCV-Funktionen für die Umwandlung von Bildern und Videos beherrschen.
  • Computer-Vision-Anwendungen: Erkunde reale Anwendungen, einschließlich Kantenerkennung, Objekterkennung und Bewegungsverfolgung.
  • 10 praktische Projekte: Einzigartige Projekte erstellen und abschließen, die das Lernen praktisch und unterhaltsam machen.
  • Live-Videoverarbeitung: Lerne, OpenCV-Techniken in Live-Videostreams anzuwenden, um interaktive Anwendungen zu erstellen.

Am Ende dieses Kurses hast du das Selbstvertrauen und die Fähigkeiten, um deine eigenen Computer-Vision-Projekte zu erstellen und OpenCV-Kenntnisse in Bereichen wie Automatisierung, KI und Augmented Reality anzuwenden.

Egal, ob du Programmierer, Ingenieur oder Enthusiast bist, dieser Kurs führt dich von den Grundlagen von Python OpenCV bis zu fortgeschrittenen Visionstechniken. Begleite uns auf dieser Reise, um Computer Vision mit Python und OpenCV zu meistern!

Triff deine:n Kursleiter:in

Teacher Profile Image

Jayanta Sarkar

full stack web developer and Python prog

Kursleiter:in

Jayanta Sarkar is a dedicated Python programmer and full-stack web developer with a passion for creating dynamic and interactive web applications. With a robust background in both front-end and back-end development, Jayanta excels in building seamless user experiences and efficient, scalable systems.

Over the years, Jayanta has honed his skills in various programming languages and frameworks, making him proficient in technologies such as JavaScript, CSS, HTML, and MySQL. His expertise extends to developing comprehensive solutions that integrate sophisticated database management with intuitive user interfaces.

Jayanta's journey in the tech industry is marked by a continuous drive to learn and adapt to new technologies. He has developed and published several successful cours... Vollständiges Profil ansehen

Level: All Levels

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

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.