


Der Weg zum Wachstum von OpenCV (3): Nachahmung des Zauberstab-Tools in PhotoShop
Das Thema dieses Artikels ist eigentlich die Konvertierung des Farbraums des Bildes mit Hilfe eines Farbauswahlprogramms, die Verwendung der Farbkonvertierungsfunktion in OpenCV und einige Vorsichtsmaßnahmen.
1. Mehrere gängige Farbräume:
RGB-Farbraum: RGB verwendet die additive Farbmischungsmethode, da sie das Verhältnis verschiedener „Lichter“ zur Erzeugung von Farben beschreibt. Ausgehend von der Dunkelheit überlagert sich kontinuierlich Licht, um Farbe zu erzeugen. RGB beschreibt die Werte von rotem, grünem und blauem Licht. Die digitale Bildspeicherung verwendet im Allgemeinen den RGB-Modus. Es ist zu beachten, dass die Speicherreihenfolge der drei Kanäle in OpenCV BGR ist.
HSV, HSI: Diese beiden Farbformate werden basierend auf der Unterscheidung zwischen Farben durch das menschliche Auge definiert, wobei H (Farbton) den Farbton darstellt, S (Sättigung) die Sättigung darstellt und V (Wert) die Helligkeit darstellt, I ( Intensität) steht für Helligkeit.
Lab-Raum: Gleichmäßige Änderungen im Modell entsprechen gleichmäßigen Änderungen in der wahrgenommenen Farbe, sodass wir uns Lab als einen Punkt im Farbraum vorstellen können. Je näher die benachbarten Punkte sind, desto näher liegen sie beieinander. Je näher, daher wird der Lab-Raum oft verwendet, um die Ähnlichkeit zweier Farben zu messen.
Weitere Informationen zum Farbraum finden Sie unter: http://en.wikipedia.org/wiki/Color_space
2 Farbraumkonvertierung in OpenCV
In OpenCV Die Farbkonvertierung des Bildes wird über die Funktion cvtColor abgeschlossen, die in der Header-Datei opencv2/imgproc/imgproc.hpp definiert ist:
void cvtColor ( InputArray src, OutputArray dst, int code, int dstCn=0 )
src: Eingabebild.
dst: Ausgabebild.
Code: Farbkonvertierungstyp, wie zum Beispiel: CV_BGR2Lab, CV_BGR2HSV, CV_HSV2BGR, CV_BGR2RGB.
dstCn: Die Kanalnummer des Ausgabebildes. Wenn der Standardwert 0 ist, bedeutet dies die Anzahl der Kanäle des Eingabebildes.
Konvertieren Sie das Bild von BGR in Lab: cvtColor(image,image,CV_BGR2Lab)
3. Einfaches Zauberstabprogramm
Zuerst definieren wir eine colorDetect-Klasse:
class colorDetect{private: int minDist; //minium acceptable distance Vec3b target;//target color; Mat result; //the resultpublic: colorDetect(); void SetMinDistance(int dist); void SetTargetColor(uchar red,uchar green,uchar blue); void SetTargetColor(Vec3b color); //set the target color Mat process(const Mat& image); //main process};
MinDist ist der Schwellenwert, den wir definiert haben, um den Abstand zwischen zwei Farben zu begrenzen, was dem Schwellenwert des Zauberstab-Werkzeugs in PhotoShop entspricht.
Ziel ist die Zielfarbe, die der Samenfarbe entspricht. Ergebnis ist das Ergebnis der Speicherverarbeitung.
Prozess ist das Hauptverarbeitungsprogramm. Schauen wir uns den Inhalt des Prozesses an.
Mat colorDetect::process(const Mat& image) { Mat ImageLab=image.clone(); result.create(image.rows,image.cols,CV_8U); //将image转换为Lab格式存储在ImageLab中 cvtColor(image,ImageLab,CV_BGR2Lab); //将目标颜色由BGR转换为Lab Mat temp(1,1,CV_8UC3); temp.at<Vec3b>(0,0)=target;//创建了一张1*1的临时图像并用目标颜色填充 cvtColor(temp,temp,CV_BGR2Lab); target=temp.at<Vec3b>(0,0);//再从临时图像的Lab格式中取出目标颜色 // 创建处理用的迭代器 Mat_<Vec3b>::iterator it=ImageLab.begin<Vec3b>(); Mat_<Vec3b>::iterator itend=ImageLab.end<Vec3b>(); Mat_<uchar>::iterator itout=result.begin<uchar>(); while(it!=itend) { //两个颜色值之间距离的计算 int dist=static_cast<int>(norm<int,3>(Vec3i((*it)[0]-target[0], (*it)[1]-target[1],(*it)[2]-target[2]))); if(dist<minDist) (*itout)=255; else (*itout)=0; it++; itout++; } return result; }
Es gibt zwei Punkte, die im Programm besondere Aufmerksamkeit erfordern:
1. Nach der Konvertierung des Bildes in den Lab-Farbraum auch die Zielfarbe konvertiert werden muss, besteht der Ansatz darin, ein temporäres Image zu erstellen.
2. Die Normfunktion wird verwendet, um den Abstand zwischen zwei Farben zu bestimmen. Ihre Operation ist norm
Es lohnt sich darüber nachzudenken, ob Vec3i((*it)[0]-target[0],(*it)[1]-target[1],(*it)[2]- Was über das Ersetzen von target[2]) durch Vec3i((*it)-target)? Die Antwort lautet „Nein“, da (*it)-target den Typ des Subtraktionsergebnisses während der tatsächlichen Operation automatisch einschränkt.
Nachdem wir die Zielfarbe und den Schwellenwert wie folgt festgelegt haben, können wir einen Beispieleffekt erhalten:
cdet.SetTargetColor(150,150,150);
cdet.SetMinDistance(50);
Weitere Informationen zum OpenCV-Wachstumspfad (3): Nachahmung des Zauberstab-Tools in PhotoShop finden Sie auf der chinesischen PHP-Website für verwandte Artikel!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die Artikel detailliert mit Photoshop für Social -Media -Grafiken, Abdeckungen von Setup, Design -Tools und Optimierungstechniken. Es betont Effizienz und Qualität bei der Grafikkreation.

PS "Laden" Probleme werden durch Probleme mit Ressourcenzugriff oder Verarbeitungsproblemen verursacht: Die Lesegeschwindigkeit von Festplatten ist langsam oder schlecht: Verwenden Sie Crystaldiskinfo, um die Gesundheit der Festplatte zu überprüfen und die problematische Festplatte zu ersetzen. Unzureichender Speicher: Upgrade-Speicher, um die Anforderungen von PS nach hochauflösenden Bildern und komplexen Schichtverarbeitung zu erfüllen. Grafikkartentreiber sind veraltet oder beschädigt: Aktualisieren Sie die Treiber, um die Kommunikation zwischen PS und der Grafikkarte zu optimieren. Dateipfade sind zu lang oder Dateinamen haben Sonderzeichen: Verwenden Sie kurze Pfade und vermeiden Sie Sonderzeichen. Das eigene Problem von PS: Installieren oder reparieren Sie das PS -Installateur neu.

In Artikeln wird die Optimierung von Bildern für das Web mithilfe von Photoshop erläutert, wobei der Schwerpunkt auf Dateigröße und -auflösung liegt. Das Hauptproblem ist die Ausgleich von Qualität und Ladezeiten.

Der Artikel führt zum Vorbereiten von Bildern für den Druck in Photoshop und konzentriert sich auf Auflösung, Farbprofile und Schärfe. Es wird argumentiert, dass 300 pPI- und CMYK -Profile für Qualitätsdrucke unerlässlich sind.

In Artikel werden animierte GIFs in Photoshop erstellt und optimiert, einschließlich Hinzufügen von Frames zu vorhandenen GIFs. Der Schwerpunkt liegt auf dem Ausgleich von Qualität und Dateigröße.

In dem Artikel wird erläutert, wie Photoshop zum Bearbeiten von Videoen verwendet wird, Schritte zum Importieren, Bearbeiten und Exportieren von Videos sowie zum Hervorheben von Schlüsselfunktionen wie Timeline -Panel, Videoebenen und Effekten.

Häufig gestellte Fragen und Lösungen beim Exportieren von PS als PDF: Schriftbettungsprobleme: Überprüfen Sie die Option "Schriftart", wählen Sie "Einbetten" oder konvertieren Sie die Schriftart in eine Kurve (Pfad). Farbabweichungsproblem: Umwandeln Sie die Datei in den CMYK -Modus und passen Sie die Farbe an. Das direkte Exportieren mit RGB erfordert eine psychologische Vorbereitung auf Vorschau und Farbabweichung. Auflösungs- und Dateigrößesprobleme: Wählen Sie die Lösung gemäß den tatsächlichen Bedingungen oder verwenden Sie die Komprimierungsoption, um die Dateigröße zu optimieren. Problem mit Spezialeffekten: Vor dem Exportieren oder Abwägen der Vor- und Nachteile verschmelzen (flach) Schichten.

Das Lösen des Problems des langsamen Photoshop-Startups erfordert einen mehrstufigen Ansatz, einschließlich: Upgrade-Hardware (Speicher, Solid-State-Laufwerk, CPU); Deinstallieren veraltete oder inkompatible Plug-Ins; Reinigen des Systemmülls und übermäßiger Hintergrundprogramme regelmäßig; irrelevante Programme mit Vorsicht schließen; Vermeiden Sie das Öffnen einer großen Anzahl von Dateien während des Starts.
