Wie können wir Vignettenfilter in opencv machen? Müssen wir irgendeinen Algorithmus dafür implementieren oder nur mit den Werten von BGR spielen? Wie können wir diese Art von Filtern machen? Ich sah seine Implementierung hier , aber ich habe es nicht klar verstanden. Jeder, der über eine vollständige Anleitung für Algorithmen und eine Anleitung zur Implementierung verfügt, wird sehr geschätzt.
Nach Abid rehman K
antwort habe ich das in C ++ versucht
d
zeigt rechts an, aber e=v*d
line verursacht einen Laufzeitfehler von
Zuallererst beschreibt Abid Rahman K den einfachsten Weg, diesen Filter zu verwenden. Du solltest ernsthaft seine Antwort mit Zeit und Aufmerksamkeit studieren. ist hatte noch nie von diesem Filter gehört.
Brownys Implementierung von dieser Filter ist wesentlich komplexer. Allerdings habe ich seinen Code in die C ++ API portiert und vereinfacht, damit Sie die Anweisungen selbst befolgen können.
%Vor%Wie img aussieht:
%Vor%
Wie maskImg aussieht:
%Vor%
Wie Ausgabe aussieht:
Wie im obigen Code angegeben, können Sie durch Ändern der Werte von firstPt
, radius
und power
stärkere / schwächere künstlerische Effekte erzielen.
Viel Glück!
Sie können eine einfache Implementierung mit in OpenCV verfügbaren Gaußschen Kerneln durchführen.
Siehe die folgende Implementierung (für ein Graustufenbild):
%Vor%Unten ist mein Ergebnis:
Gleiches gilt für Farbbild:
HINWEIS: Natürlich ist es zentriert. Sie müssen zusätzliche Änderungen vornehmen, um den Fokus auf andere Orte zu verschieben.
Hier ist meine C ++ - Implementierung des Vignette-Filters auf Colored Image mit opencv. Es ist schneller als die angenommene Antwort.
%Vor%Tags und Links c++ opencv image-processing computer-vision filter