[MELDEN] Von der Vision zum Code: Ein Leitfaden zur Ausrichtung der Geschäftsstrategie auf die Ziele der Softwareentwicklung ist veröffentlicht!
HOL ES DIR HIER

So verwenden Sie React Native und OpenCV für die Bildverarbeitung [2025]

readtime
Last updated on
February 17, 2025

A QUICK SUMMARY – FOR THE BUSY ONES

Bildverarbeitung mit OpenCV

Was ist OpenCV: Die Open Source Computer Vision Library (OpenCV) ist eine Open-Source-Softwarebibliothek für Computer Vision und maschinelles Lernen. Sie bietet über 2500 optimierte Algorithmen für Aufgaben wie Gesichtserkennung, Objektidentifikation, Bewegungsverfolgung und mehr.

OpenCV und React Native: Obwohl die Integration von OpenCV in React Native einige Herausforderungen mit sich bringt, ist sie möglich und nützlich für Aufgaben, die eine Bildverarbeitung erfordern. Bestehende Ressourcen und Bibliotheken können Ihnen dabei helfen, diese Integration zu erreichen.

Überblick über das Tutorial: Das Tutorial führt Sie durch die Erstellung eines React Native-Projekts, das OpenCV verwendet, um festzustellen, ob ein aufgenommenes Foto klar oder unscharf ist. Die Schritte sind in Android- und iOS-Setups unterteilt, für die jeweils Codefragmente bereitgestellt werden.

TABLE OF CONTENTS

So verwenden Sie React Native und OpenCV für die Bildverarbeitung [2025]

Einführung

OpenCV ermöglicht es React Native-Entwicklern Bilder auf Mobilgeräten verarbeiten (höchstwahrscheinlich möchten Sie Bilder verarbeiten, die von der Kamera Ihres Geräts aufgenommen wurden).

Die wichtigsten Vorteile liegen auf der Hand:

  • Einfach zu implementieren
  • Einfach zu verwenden
  • Viele Tutorials im Internet und eine solide offizielle Dokumentation von OpenCV
  • Die Größe Ihrer mobilen App wird nur etwa ein Dutzend Megabyte größer sein

Lassen Sie mich Ihnen Schritt für Schritt zeigen, wie ich OpenCV und React Native verwendet habe, um meine Bilder zu verarbeiten, aber zuerst ein paar Worte zur Einführung.

Was ist OpenCV

OpenCV (Open Source Computer Vision Library) ist eine Open-Source-Softwarebibliothek für Computer Vision und maschinelles Lernen. OpenCV wurde entwickelt, um eine gemeinsame Infrastruktur für Computer-Vision-Anwendungen bereitzustellen und den Einsatz der maschinellen Wahrnehmung in kommerziellen Produkten zu beschleunigen.

Die Bibliothek hat mehr als 2500 optimierte Algorithmen, einschließlich eines umfassenden Satzes an klassischen und hochmodernen Algorithmen für Computervision und maschinelles Lernen.

Diese Algorithmen können verwendet werden, um Gesichter zu erkennen und zu erkennen, Objekte zu identifizieren, menschliche Handlungen in Videos zu klassifizieren, Kamerabewegungen zu verfolgen, sich bewegende Objekte zu verfolgen, 3D-Modelle von Objekten zu extrahieren, 3D-Punktwolken von Stereokameras zu erzeugen und Bilder zusammenzufügen, um ein hochauflösendes Bild einer gesamten Szene zu erzeugen.

Es kann auch ähnliche Bilder aus einer Bilddatenbank finden, rote Augen aus Bildern entfernen, die mit Blitz aufgenommen wurden, Augenbewegungen verfolgen, Szenerien erkennen und Markierungen erstellen, um sie mit Augmented Reality zu überlagern usw.

OpenCV hat mehr als 47k Menschen in der Community und eine geschätzte Anzahl von Downloads von über 14 Millionen. Die Bibliothek wird in Unternehmen, Forschungsgruppen und Regierungsbehörden intensiv genutzt. OpenCV ist nativ in C++ geschrieben.

Seit 2010 wurde OpenCV auf die Android-Umgebung portiert, sodass die volle Leistungsfähigkeit der Bibliothek bei der Entwicklung mobiler Anwendungen genutzt werden kann. 2012 arbeitete das OpenCV-Entwicklungsteam aktiv daran, erweiterte Unterstützung für iOS hinzuzufügen. Die vollständige Integration ist seit Version 2.4.2 (2012) verfügbar.

React Native wurde erstmals 2015 von Facebook veröffentlicht. Mit React Native können Sie mobile Apps nur mit JavaScript erstellen. Es verwendet dasselbe Design wie React, sodass Sie eine umfangreiche mobile Benutzeroberfläche aus deklarativen Komponenten zusammenstellen können.

React Native und OpenCV sind gute Freunde

Wenn wir nach „React Native OpenCV“ googeln, stoßen wir auf folgende Links:

Worum geht es in diesem Tutorial?

In diesem Tutorial werden wir ein Beispielprojekt erstellen, das die Kamera des Geräts verwendet, um ein Foto aufzunehmen, es mit nativem Code verarbeitet und die Information zurückgibt, ob das aufgenommene Bild verschwommen oder klar ist. Es in einfachem JavaScript zu tun, wäre höchst ineffektiv. JavaScript reicht für sehr umfangreiche Berechnungen nicht aus.

Beachten Sie, dass wir keineswegs Java- oder Objective-C-Entwickler sind, daher ist unser Java/Objective-C-Code möglicherweise alles andere als gut. Wenn Sie zu diesem Thema beitragen möchten, kontaktieren Sie uns bitte.

React Native Bildverarbeitung mit OpenCV — Schritt für Schritt

Folgendes werden wir tun:

Android-Einrichtung:

  • OpenCV in Android Studio importieren
  • Aktualisiere build.gradle-Dateien
  • Erforderliche Java-Dateien erstellen und Berechtigungen hinzufügen
  • Konfigurieren Sie MainApplication.java und BaseLoaderCallback
  • Richten Sie das OpenCV-Paket ein

iOS-Einrichtung:

  • Fügen Sie opencv2.framework zu Xcode hinzu
  • .pch-Datei erstellen und konfigurieren
  • Erstellen Sie die Dateien rnOpencvLibrary.h und rnOpencvLibrary.mm
  • Info.plist konfigurieren

JavaScript-Integration:

  • Richten Sie einen NativeModules-Ordner und die Datei OpenCV.js ein
  • Installieren Sie Bibliotheken von Drittanbietern
  • Verwenden Sie die Kamera und OpenCV für die Bildverarbeitung
  • Suchen Sie mit nativen Funktionen nach verschwommenen Bildern

Lassen Sie uns nun diese Schritte genauer durchgehen.

OpenCV Grundvorbereitung

1. Schritt

react-native init ReactNativeOpenCVTutorial

Schritt 2

Führen Sie das Skript downloadAndInsertOpenCV.sh im Katalog Ihres Projekts aus (finden Sie hier), das OpenCV-Dateien für Android und iOS herunterlädt und einfügt. Die Pfade in der Datei entsprechen möglicherweise nicht Ihren Einstellungen, sodass Sie sie möglicherweise ändern müssen.

Tutorial für Android

1. Schritt

Öffnen Sie Ihr Projekt in Android Studio.

Schritt 2

Folgen Sie den Tipps in Android Studio zum Synchronisieren Ihres Projekts.

Schritt 3

Laden Sie die neueste Version von OpenCV für Android herunter. In meinem Fall ist es 3.4.1.

4. Schritt

Importieren Sie OpenCV in Android Studio — wählen Sie unter Datei -> Neu -> Modul importieren den Ordner sdk/java im entpackten OpenCV-Archiv.

5. Schritt

Aktualisieren Sie build.gradle unter dem importierten OpenCV-Modul, um 4 Felder so zu aktualisieren, dass sie dem build.gradle Ihres Projekts entsprechen:

  • SDK-Version kompilieren
  • BuildTools-Version
  • MinSDK-Version
  • Ziel-SDK-Version.

6. Schritt

Modulabhängigkeit hinzufügen:

Anwendung -> Moduleinstellungen und wählen Sie die Registerkarte „Abhängigkeiten“. Klicken Sie unten auf das Symbol „+“, wählen Sie „Modulabhängigkeit“ und wählen Sie das importierte OpenCV-Modul aus.

Um in Android Studio v1.2.2 in der Projektansicht auf die Moduleinstellungen zuzugreifen, klicken Sie mit der rechten Maustaste auf das abhängige Modul -> Moduleinstellungen öffnen.

File manager screenshot number 1, setting up for OpenCV image processing.

Klicken Sie auf das „+“, wählen Sie „Modulabhängigkeit“ und wählen Sie die OpenCV-Bibliothek aus der Liste aus.

File manager screenshot number 2, setting up for OpenCV image processing.

7. Schritt

Erstellen Sie in android/app/src/java ein Paket namens zB „com.reactlibrary“.

8. Schritt

Aktualisiere dein Manifest mit den richtigen Berechtigungen:

Code block number 1, presents steps for OpenCV image processing.

siehe die ganze Datei.

Schritt 9

Erstellen Sie eine Datei RNOpenCvLibraryModule.java in Ihrem neu erstellten Paket und fülle es wie hier gezeigt.

10. Schritt

Erstellen Sie eine Datei namens RNOpenCvLibraryPackage.java in Ihrem neu erstellten Paket und fülle es wie hier gezeigt.

Schritt 11

Fügen Sie Ihrer Datei MainApplication.java die richtigen Importe hinzu, fügen Sie Ihr OpenCV-Paket zur Liste hinzu und fügen Sie der MainApplication-Klasse den richtigen Code wie folgt hinzu:

Code block number 2, presents steps for OpenCV image processing.

Fügen Sie Ihrer Paketliste ein neues rnOpenCVLibraryPackage () hinzu.

Code block number 3, presents steps for OpenCV image processing.

Fügen Sie BaseLoaderCallback in Ihre MainApplication-Klasse ein:

Code block number 4, presents steps for OpenCV image processing.

Fügen Sie Ihrer MainApplication-Klasse außerdem die folgenden Callbacks hinzu:

Code block number 5, presents steps for OpenCV image processing.

Sehen Sie die ganze Datei hier.

Tutorial für iOS

1. Schritt

Öffnen Sie das iOS-Projekt in XCode.

Schritt 2

Fügen Sie opencv2.framework zu Ihren Linked Frameworks und Bibliotheken hinzu.

File manager screenshot number 3, setting up for OpenCV image processing.

Schritt 3

Erstellen Sie eine neue Gruppe im iOS-Katalog. Ich habe es „OpenCV“ genannt.

4. Schritt

Fügen Sie eine.pch-Datei hinzu und fügen Sie sie in den OpenCV-Katalog ein.

5. Schritt

Fügen Sie Ihrer PCH-Datei den richtigen Inhalt hinzu — hier gezeigt.

6. Schritt

Erstellen Sie eine Datei mit dem Namen rnOpencvLibrary.h und fülle es wie hier gezeigt.

7. Schritt

Erstellen Sie eine Datei mit dem Namen rnOpencvLibrary.mm und fülle es wie hier gezeigt.

8. Schritt

Setzen Sie „Precompile Precompile Prefix Header“ auf „Yes“ und legen Sie den Pfad „Prefix Header“ wie folgt fest:

File manager screenshot number 4, setting up for OpenCV image processing.

Schritt 9

Fügen Sie Ihrer Info.plist-Datei Folgendes hinzu:

Code block number 6, presents steps for OpenCV image processing.

siehe die ganze Datei.

Letzter Teil — JavaScript

1. Schritt

Erstellen Sie in Ihrem src-Ordner einen Ordner mit dem Namen zB „NativeModules“ und eine Datei namens OpenCV.js und füllen Sie ihn mit:

Code block number 7, presents steps for OpenCV image processing.

siehe die ganze Datei.

Schritt 2

Wir werden einige Bibliotheken von Drittanbietern für die schnelle Einrichtung verwenden. Öffnen Sie das Terminal und geben Sie Folgendes ein:

Code block number 8, presents steps for OpenCV image processing.

Schritt 3

Vergiss nicht, die Bibliotheken zu verlinken: react-native link.

Wir werden verwenden die folgende Datei als Referenz.

In Zeile 126 richten wir die Kamera ein und in Zeile 135 erstellen wir ein berührbares Element für das Fotografieren. Das Aufnehmen von Fotos erfolgt über die TakePicture-Funktion. Es macht ein Foto, speichert die Daten im lokalen Zustand und überprüft, ob das Foto unscharf ist.

Die Funktion ProceedWithCheckingBlurryImage verwendet die native Funktion checkForBlurryImage und gibt eine einfache Information zurück, ob das Foto verschwommen ist oder nicht.

4. Schritt

Wenn Sie auf Build-Probleme für Android stoßen, das an die Kamera angeschlossen ist, lesen Sie meine .gradle-Datei erstellen, insbesondere maven {url „https://jitpack.io“} line und synchronisiere das Projekt erneut in Android Studio.

Wenn Sie Fehler im Zusammenhang mit Google Play-Diensten haben, überprüfen Sie dies Ausgabe auf GitHub.

Wenn Sie Fehler im Zusammenhang mit React-Native-Camera haben, überprüfen Sie den Master-Zweig, indem Sie die Version in package.json wie folgt ändern:

Code block number 9, presents steps for OpenCV image processing.

Beispielergebnisse

Ein Beispiel für ein klares Foto. Wir erhalten eine Vorschau des Fotos und haben die Möglichkeit, es entweder zu verwenden oder zu wiederholen.

Sharp image as an effect of OpenCV image processing.

Ein Beispiel für ein verschwommenes Foto. Wir erhalten eine Nachricht, die uns darüber informiert, dass das Foto unscharf ist und wir es wiederholen müssen.

Blurry image as an effect of OpenCV image processing.

Vergiss nicht, das zu sehen Endprodukt auf unserem GitHub!

Referenzen:

  1. OpenCV für Android in Android Studio einrichten (Stapelüberlauf)
  2. Native Module für React Native (GitHub)
  3. Nativer Java-Code zur Überprüfung, ob das bereitgestellte Bild verschwommen ist (OpenCV offiziell)
  4. Nativer Objective-C-Code zur Überprüfung, ob das bereitgestellte Bild verschwommen ist (Stapelüberlauf)
  5. Die offizielle Website von OpenCV (OpenCV offiziell)

Frequently Asked Questions

No items found.

Our promise

Every year, Brainhub helps 750,000+ founders, leaders and software engineers make smart tech decisions. We earn that trust by openly sharing our insights based on practical software engineering experience.

Authors

Piotr Suwała
github
JavaScript-Softwareentwickler

Full-Stack-Softwareingenieur mit 8 Jahren Berufserfahrung. Leidenschaft für React.js und React Native. Absolvent der Schlesischen Technischen Universität.

Bianka Pluszczewska
github
Technischer Redakteur

Enthusiast für Softwareentwicklung mit 9 Jahren Berufserfahrung in dieser Branche.

Piotr Suwała
github
JavaScript-Softwareentwickler

Full-Stack-Softwareingenieur mit 8 Jahren Berufserfahrung. Leidenschaft für React.js und React Native. Absolvent der Schlesischen Technischen Universität.

Bianka Pluszczewska
github
Technischer Redakteur

Enthusiast für Softwareentwicklung mit 9 Jahren Berufserfahrung in dieser Branche.

Read next

No items found...