In OpenCV existiert der Scharr -Filter in Verbindung mit dem Betrieb des Sobel -Operators. Wenn der Sobel -Kernel 3 ist, kann das Ergebnis offensichtlichere Fehler hervorrufen. Als Reaktion auf dieses Problem bietet OpenCV die Scharr -Funktion. Diese Funktion zielt nur auf Kernel der Größe 3 ab, und die Berechnungsrate ist so schnell wie die SOBEL -Funktion, und das Ergebnis ist genauer, aber der Rauschwiderstand ist nicht so gut wie die SOBEL -Funktion.
Verwenden Sie den Scharr -Filter, um die Bilddifferenz in der X- oder Y -Richtung zu berechnen, und seine Parametervariablen entsprechen den gleichen wie Sobel.
Funktion: Imgproc.Scharr (MAT SRC, MAT DST, INT DDEPTH, INT DX, INT DY, Doppelskala, Double Delta, int BorderType)
Parameterbeschreibung:
SRC: Quellbild
DST: Erkennungsergebnisbild
Ddepth: Die Tiefe des Ausgabebildes
DX: Die Differenzreihenfolge in x -Richtung
DY: Die Differenzreihenfolge in der y -Richtung
Skala: Skalierungsfaktor
Delta: Der Delta -Wert optional, bevor das Ergebnis im Ausgabebild gespeichert ist, ist die Standardeinstellung 0
BorderType: Grenzmodus, Standard Border_Default
Beispielcode:
public static void main (String [] args) {System.loadLibrary (core.Native_library_name); Mat src = imgcodecs.imread ("f: //2011031213205880528.jpg"); Mat dst = src.clone (); MAT dstx = src.clone (); Mat dsty = src.clone (); Imgproc.gaussianblur (SRC, DST, neue Größe (3, 3), 0); Imgproc.cvtcolor (dst, dst, imgproc.color_rgb2gray); Imgproc.scharr (dst, dstx, -1, 1, 0, 1, 0, core.border_default); Imgcodecs.imwrite ("f: //dstx.jpg", dstx); IMGPROC.SCHARR (DST, DSTY, -1, 0, 1, 1, 0, core.border_default); Imgcodecs.imwrite ("f: //dsty.jpg", dsty); Core.addWeighted (DSTX, 0,5, DSTY, 0,5, 0, DST); Imgcodecs.imwrite ("f: //dst.jpg", dst); } Quellbild:
Scharr in X -Richtung:
Scharr in y Richtung:
Nach dem Zusammenführen der Gradienten:
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.