В OpenCV фильтр Scharr существует в сочетании с работой оператора Sobel. Когда ядро Sobel составляет 3, результат может привести к более очевидным ошибкам. В ответ на эту проблему OpenCV обеспечивает функцию Scharr. Эта функция нацелена только на ядра размера 3, а скорость расчетов такая же быстрая, как и функция Sobel, и результат более точен, но сопротивление шума не так хорошо, как функция Sobel.
Используйте фильтр Scharr для расчета разности изображений в направлении x или y, а его переменные параметров совпадают с Sobel.
Функция: imgproc.scharr (Mat Src, Mat DST, int ddepth, int dx, int dy, двойная масштаба, двойная дельта, int bordertype)
Описание параметра:
SRC: исходное изображение
DST: изображение результатов обнаружения
ddepth: глубина выходного изображения
DX: порядок разницы в направлении x
DY: Разница в направлении Y
Шкала: коэффициент масштабирования
Delta: значение Delta Необязательное до того, как результат будет сохранен в выходном изображении, по умолчанию 0
BorderType: граничный режим, по умолчанию border_default
Пример кода:
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, новый размер (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.Adddi -Weealse (DSTX, 0,5, DSTY, 0,5, 0, DST); Imgcodecs.imwrite ("f: //dst.jpg", dst); } Изображение источника:
Шарр в направлении x:
Шарр в направлении y:
После объединения градиентов:
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.